CHAPTER 1 Networking Overview
1. 网络结构
BS结构
CS结构
架构
Client -à Server 2层
Client -à Middle tier -à Server 3层
特点
客户端和服务器端使用相同的网络协议
客户端可以为瘦客户端或PC
中间层实现负载均衡,一台可面对多台服务器。作用是在client和server中起到一个翻译的作用,比如两端的网络协议不同等
服务器端存储真实数据
举例
ie -à iis(web server) -à database server
2. oracle网络方案 --- connectivity连接
oracle net services特点:
a. 使得client和server的连接与网络协议无关,oracle net services使用API针对不同协议提供不同的适配器,因此只要物理上可以连通,那么oracle实现连接不存在问题。
b. 使得client和server的连接与所在平台无关
c. 提高了GUI图形用户界面工具简化管理且有多种配置选项 (tnsnames.ora)
d. 提供了跟踪和诊断工具,且有最基本的安全保证
oracle的连接还可使用IIOP/HTTP协议实现,比如使用isqlplus 在web上直接连oracle server。因此在使用isqlplus时,需要输入的连接串名不是tnsnames.ora中配置的name servers而是指定服务器上监听到的instance name
HTTP:HYPERTEXT TRANSFER PROTOCOL
IIOP:INTERNET INTER-ORB PROTOCOL
3. oracle网络方案 --- Directory Services
Directory naming 目录命名:是使支持足LDAP协议的目录服务器来为网络命名的一种方法。它要求服务器端有兼容LDAP的目录服务器,客户端也要有LDAP的相关配置。
目录服务:就是OID(oracle internet directory).是兼容了LDAP的目录服务。集成在oracle9i,简化了网络管理,且提供了安全可依赖的目录结构
LDAP:Lightweight Directory Access Protocol 轻量级目录访问协议
4. oracle网络方案 --- scalability可量测性
法一:使用oracle shared server,以前称为:MTS多线程服务器。这个是针对系统资源有限仍可支持过多用户访问的方法,即多个用户共享同一个服务器进程,多个连接被一个适配器路由,提高了资源的利用率,降低了用户的使用效果
法二:使用CM(connection manager),就是所谓的中间服务器,oracle缺省是不安装的,若要使用需要增加额外的组件。CM的优点是:a.多功,即多个用户连接转化为一个连接访问数据库
b.使得client和server可以跨协议连接,即连接与协议无关
c.可以设置网络限制,控制可以访问数据库的用户有哪些
在1成功连接CM产生到server的2后,client产生的所有对 server的访问,通过CM的全部使用2。有效的降低了数据库的连接数
5. oracle网络方案 --- Advanced Security
条件:
在client和server端都要安装 Advanced Security组件
特点:
A.加密传输数据:client -à data -à 加密 -à network transfer -à 解密 -à 服务器
B.授权用户访问:通过第三方的设备和SSL(Secure Sockets Layer)确定用户的访问权限
C.数据完整性:在网络传输过程保证数据的完整性
Oracle的普通安全保证来自于:oracle net and firewalls。放火墙有2种,一种是基于供应商的防火墙,条件是需要使用CM(connect manager),另外一种是stateful packet的防火墙
6. oracle网络方案 --- accessibility
不同数据库系统间的访问:使用透明网关,实现在不同数据库系统下,用户可以无缝透明的相互访问
外部程序的访问:
A. oracle的监听器可以监听外部程序的呼叫,在listen.ora文件中,”KEY = EXTPROC”来实现oracle服务
器对外部程序呼叫的监听。如果客户端需要调用外部程序,也需要开启监听
B. PLSQL可以调用外部程序3GL(第三代编程语言),比如JAVA等
知识点:
Oracle net services / IIOP and HTTP connectivity / oracle internet directory
oracle shared server / connection manager / oracle advanced security
heterogeneous services
CHAPTER 2 Basic Oracle Net Architecture
1. oracle的连接类型有2种:
client-server application:可使用任意网络协议
web application connection:使用TCP/IP协议
2. Client-Server Application Connection:No Middle-Tier
Forms/sqlplus 发出命令,用OCI(oracle调用接口)传给TTC
TTC(two tasks command)完成字符集和数据类型的转换,传到oracle net
Oracle net对刚才的命令打成逻辑包,传到OPS
OPS为协议适配器,将刚才的逻辑包转化为物理包,通过网络协议船给server
上面图执行的顺序是个U型,由client到server,再由server到client
3. Web Application Connections有2种实现方法:
A. 使用web server作为中间层与JDBC oracle call interface驱动或瘦JDBC配置
B. 直接连接database server,通过IIOP或HTTP协议。比如isqlplus等
4. Web Application Connection:
JAVA Application Client
JAVA Applet Client
这个与client-server application connection几乎一样,只是把SQLPLUS工具改为了JAVA工具放在中间层,而用户使用是从WEB上调JAVA。而在JAVA与数据库连接中需要一个JDBC接口
相对于oracle server而言,middle-tier为一个client端,因此连接方式很多,比如TCP/IP等。中间层的作用就是:翻译,负载均衡,网关
5. Web Application Connection:No Middle-Tier
使用该类连接方式的条件是:服务器端必须支持HTTP和IIOP。即在数据库上启动相应的服务
该类连接典型的例子就是:isqlplus
使用isqlplus
在Windows上:启动ORACLE的HTTP服务
在Linux上:启动isqlplus服务,即敲入:[oracle@sating bin]$isqlplusctl start
然后在web browser上敲入地址:http://数据库服务器IP:isqlplus的端口号/isqlplus
eg. http://10.1.8.177:5560/isqlplus
注:isqlplus的端口号可以在$ORACLE_HOME/install/portlist.ini中查看到,该文件是oracle提供的所有默认端口号的列表,isqlplus默认是:5560
CHAPTER 3 Basic Oracle Net Server-Side Configuration
1. sqlnet.ora:网络配置概要文件,在服务器端和客户端都有
tnsnames.ora:以local name本地命名方式实现数据库连接时,在客户端存在的用来解析service_name的文件
listener.ora:是个耳朵的功能,监听客户端的连接请求,在服务器端存在的,记录 server端登记的service_name
2. 监听的实现方式
当client端发出一个连接请求,且client发送的service_name和server端登记的service_name匹配时,listener会根据情况实现2种监听方式:
A. 启动一个独占服务器进程process “Bequeath Session”
B. 把该连接重定向到一个已经启动了的process,(该process在DB启动时启动),常用于MTS
“Redirect Session”
A,B两种方式的第1步和client端配置的命名方法有关,常用的都是服务名service_name解析,。A类从第4步开始通讯,B类从第5步开始通讯。
3. 配置listerner:静态配置法 或 动态配置法
static service configuration
Dynamic service configuration
特点
A. 应用与8和更早的版本
B. 需要服务器端有listener.ora文件
C. 需要OEM和其他一些oracle提供的配置工具
A. 不需要服务器端有listener.ora文件
B. 该类监听使用PMON进程监控进程,
C. 参数instance_name和service_name必须指定
4. 静态配置法的listener.ora文件
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = sating)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = BOSS)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = BOSS)
)
)
---LISTENER为oracle默认的监听名称
–--HOST为主机名,如果使用的是TCP/IP协议,也可写服务器IP地址
---PORT=1521是oracle默认分配的标准监听器的端口号,也可使用别的端口号
---SID_LIST_LISTENER代表名为LISTENER的监听器所服务的DB,可同时服务多个DB
---GLOBAL_DBNAME的值可以任意定,因为它是作为别名存在的,代表服务器端的service_name,只要client端在配置tnsnames.ora中service_name的值是这个listener上的global_name的值,连通就没问题。一般写 SID.DOMAINNAME。但ORACLE_HOME和ORACLE_SID必须写准确信息
---ORACLE_HOME就是ORACLE_SID指定DB的$ORACLE_HOME参数值
5. 动态配置listener
步骤一:输入lsnrctl,查看输出的缺省监听名。(如果要查看非缺省监听器的状况命令是:lsnrctl+监听器名)
STATUS of the LISTENER
------------------------
Alias LISTENER
步骤二:A. 如果缺省的监听器名为:LISTENER,则确定参数service_name和instance_name设置了正确的值
B. 如果缺省的监听器名不为:LISTENER,则不但要确定参数service_name和instance_name设置了正确的值,还要指定local_listener参数。如果当前是共享服务器,还需要指定参数dispatchers
步骤三:重起数据库即可
注意:
A. 此时没有listener.ora文件,也没有手动输入lsnrctl start,因为oracle在启动时通过PMON直接启动监听器,可使用lsnrctl status查看监听器的状况
B. 在client端配置相应的tnsnames.ora,此时service_name为server端指定的参数service_name的值
C. service_name和instance_name可以任意指定,但必须这2个参数的值相同。在连接时tnsnames.ora,中service_name给相应值即可
D. 无论动态注册还是静态注册,client端都需要有相应的内容记录在tnsnames.ora中
E. 动态注册,在数据库启动后每一分钟注册一次
6. listener的注意事项
A. listener只在发出连接时有用,一旦连接上了,就不再起任何作用,此时client-server的连接只和服务器分配的process有关。
B. 一个listener可以服务多个DB。多个listener也可以服务一个DB,此时起到负载均衡的作用当一个listener忙的时候可使用另外一个
C. 在oracle网络这一块,有2个别名,可任意给值。一个就是listener.ora中的global_name,只要与tnsnames.ora中的service_name值相同即可。另外一个就是tnsnames.ora中指定的连接串的串名,只要在连接数据库时@后写该串名即可(eg.sqlplus s/s@satingphoenix)。
D. listener.ora文件只在启动listener时有用,一旦启动后,删除该文件也不影响oracle的连接,但无法重起listener
E. 静态配置监听器需要在数据库启动后,手工启动监听器,数据库关闭时,手动关闭监听器
动态配置监听器,在数据库启动时自动启动监听器,数据库关闭时自动关闭监听器
7. JVM:JAVA的虚拟机
8. LSNRCTL命令
LSNRCTL>help
LSNRCTL>show + 参数名
LSNRCTL>set + 参数名 + 值
总结:
监听的实现方式有2种,一个是有监听启动独立进程,另一种是有监听使用共享进程
监听的配置方法有2种,一个是有动态配置,使用参数service_name和instance_name来解析服务名,使用PMON
进程管理监听进程。另一个是静态配置,使用listener.ora文件配置监听,其中的global_name来用于解析服
务名,需要DBA手动开启和关闭监听进程
CHAPTER 4 Basic Oracle Net Client-Side Configuration
1. 客户端的网络配置有很多方法,常见的有2种配置方法:host naming 和 local service name(tnsnames)。当前客户端可使用的方法,定义在sqlnet.ora中 ”name.directory_path = (HOSTNAME,TNSNAMES)”
Host naming
Local service name(tnsnames)
区别
主机名解析法,在server端实现解析
本地服务器名解析法,在client端实现解析
实现条件
A.client端和server端的连接协议为TCP/IP,且端口号为1521
B.主机名是通过DNS或者是客户端上/etc/hosts文件中记录的服务器IP地址来解析的
C.不可使用CM和一些oracle的高级安全设置
无
连接
conn s/s@”主机名”
Conn s/s@在tnsnames.ora中配的串名
要求
A. 在客户端和服务器端的sqlnet.ora中指明解析方法为name.directory_path = (HOSTNAME)
B. client端不需要tnsnames.ora文件,但需要在/etc/hosts文件中写请IP和主机名的对应关系
C. server端的listner.ora文件中,必须指明主机名 (global_dbname = 主机名)
A. 在客户端和服务器端的sqlnet.ora中指明解析方法为name.directory_path = (TNSNAMES)
B. client端需要tnsnames.ora文件,该文件中service_name需要与server端的listener.ora中的global_name相对应,因为是根据这个名字进行的解析。而连接串名可自己定义
C. 补充,在oracle 8前,tnsnames.ora中的service_name为DB_SID
D. Tnsname.ora中配置的端口需要与server端的listener.ora中一致
总结:
oracle的网络配置策略需要从3个方面进行定义,首先确定监听是静态的还是动态的,其次确定命名的解析方法是主机名解析方法还是本地解析方法,如果是本地解析方法需要再去配置本地解析的命名文件(tnsnames.ora)
CHAPTER 5 Usage And Configuration Of The Oracle Shared Server
1. oracle shared server在9I前被叫做MTS,多线程服务器。作用是在同等的资源下,支持更多的并发访问
2. 独占服务器模式 与 共享服务器模式比较
共享服务器模式 shared server
独占服务器模式 dedicated server
连接方式
User process -à dispatcher
-à shared server process
-à SGA + background process
Oracle服务器通过dispatcher调配器为用户进程分配一个共享的服务器进程
User process -à server process
-à SGA + background process
Oracle服务器为每个用户连接分配一个专用的服务器进程
SGA
shared pool and other memory structure
+ user session data
+ cursor state
shared pool and other memory structure
用户连接的数据保存在PGA中
PGA
statck space
用户连接的数据保存在SGA中,因此该模式需要更大的SGA内存
statck space
+ user session data
+ cursor state
3. 共享服务器模式优点:
减低访问instance的进程数量,增加用户的并发数,使数据库服务器负载均衡,减少空间的服务器进程,减少内存的消耗和系统负担
4. connecting
1发出connect连接请求到listener,listener确定连接是否合法
2listener返回关于dispatcher的信息,指明那个dispatcher是可使用的
3连接dispatcher,只有再由dispatcher分配shared server process
注意:若listener为配置为共享服务器模式,但没有启动dispatcher,则连接失败。
5. Processing a request
1连接到空闲的dispatcher
2由dispatcher把command放到请求队列里,等待空闲的server process
3command被空闲的server process 接受并处理
4把处理结果传给响应队列
5响应队列再传给空闲的dispatcher
6dispatcher把结果返回给用户
注意:请求队列对于server process是共享的
响应队列对于server process是独占的
6. 配置共享服务器
服务器端:定义dispatchers和shared_servers参数
SQL>alter system set
dispatchers=’(PROTOCOL=TCP)(SERVICE=SS)(PROTOCOL=TCP)(DISPATCHERS=2)’;
为service_name=’SS’的监听服务启动2个可以使用TCP/IP协议连接的dispatchers
SQL>alter system set dispatchers=’(PROTOCOL=TCP)(DISPATCHERS=2)’;
为所有监听服务启动2个可以使用TCP/IP协议连接的dispatchers
SQL>alter system set shared_server=6;
为共享服务器分配6个shared server processes
客户端:修改tnsnames.ora的连接解析方式
当用户使用SS连接串连接时,使用的是共享服务器进程
当用户使用SATING连接串连接时,使用的是独占服务器进程
这样,一个service_name,根据tnsnames.ora中的解析方式不同,所使用的服务器使用方式也不一样
SS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.177)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = ss)
)
)
SATING =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.177)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ss)
)
)
7. server端还有一些其他的参数可以设定
max_dispatchers:最多的dispatchers数量,上面dispatchers参数设定的是启动了多少dispatchers,如果max_dispatchers为5,那么最多可启动4个,若试图启动5个则报错ORA-00112
max_shared_server
circuits:内路和外路可使用的网络连接的总共虚拟路线的条数
shared_server_sessions:作为共享服务器方式连接上的session的最大数,
参数sessions - 参数shared_sever_sessions = 可以独占方式登陆的总session数
相关的一些参数:
large_pool_size:在共享服务器中,独立分配出的一块内存区域
session:控制可用独占方式登陆的session数量
8. 查看登记到listeners的dispatchers的情况:lsnrctl service
9. 可查看的数据字典
v$circuuit
有几个共享服务器的连接,该view就有几条记录
v$shared_server
v$dispatcher
v$shared_server_monitor
v$queue
v$queue
v$session
4. 注意:
A.共享服务器模式和独占服务器模式是可以同时存在的
B.在使用as sysdba选项连接数据库服务器时,只能使用独占服务器模式登陆
C.S001,S002… … 代表shared server processes。 D001,D002… … 代表着dispatchers
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yefengmeander/archive/2009/04/25/4122078.aspx
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3907/viewspace-1024479/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/3907/viewspace-1024479/