首页 > Linux操作系统 > Linux操作系统 > 八 配置oracle互联
1、 oracle的客户/服务器实现
在oracle环境中,用户不能直接访问数据库,其运行的进程也不能直接访问数据库。客户/服务器体系结构保住了对数据库的所有访问都受服务器控制。如下图:

用户进程:是用户在其本地终端上运行的软件。用户进程的目的是提示用户输入能够被该进程用于生成sql语句的信息。
服务器进程:是在数据库服务器上运行,并且执行从用户接收到的sql语句。
用户进程生成sql语句, 服务器进程则执行这些sql语句。
一条sql语句执行经过如下阶段:
。分析:服务器进程分析指定的sql语句。分析阶段是在SGA的共享池里执行的。
。绑定:任何变量都被扩展为实际值。
。执行:数据库db cache 内的数据会被读取或更新,同时变化会被写入重做日志缓冲区。
。取出:服务器进程将执行语句生成的结果集发送给用户进程,用户进程随后为显示而格式化结果集。
Oracle net 机制:启动服务器进程,从而执行代表用户进程的代码。
一个用户与一个用户进程交互,一个用户进程通过oracle net与一个服务器进程交互,一个服务器进程与实例交互,而实例通过其后台进程与数据库交互。
Oracle net 不仅负责建立会话,还负责用户进程与服务器进程之间正在进行的通信。
2、 oracle net 与通信协议简介
oracle net 是一个分层协议,并且运行在操作系统所支持的任何通信协议上。
Oracle 10g支持的通信协议:TCP, NMP(命名管道),SDP(套接字直接协议),IPC(进程间通信).
Oracle net 的 TTC:负责在用户进程和服务器进程之间传送数据所需的任何变换,例如字符集变化。
3、 建立会话的过程
简单连接语句:
Connect scott/123@orcl
其中:@符号指示了网络连接所需的用户连接。如果没有@,则是本地连接。
连接本地实例:使用oracle net通过IPC协议连接实例,是唯一不需要侦听器的连接类型。
3.1名称解析
Oracle net连接的第一阶段。此阶段是发现实际希望连接的实例。
@orcl :orcl被解析为以下四部分信息:希望使用的协议;运行数据库侦听器的IP地址;侦听器监视引入连接请求的端口;希望连接实例的名称。
3.2 启动服务器进程
侦听器启动服务器进程。如果侦听器没有继续运行,那么就不能再启动任何新的服务器进程,不过这不会影响任何已经建立的现有会话。
4、 创建和管理侦听器
侦听器在listener.ora中定义。listener.ora文件至少必须声明侦听器的名称及其使用的协议和侦听地址。
4.1 创建侦听器
使用database control, net manager, net configuration assistant等工具,最好不要手动修改listener.ora文件。
4.2 管理侦听器
使用lsnrctl工具可以管理侦听器的启动和关闭。
5、 数据库注册
5.1 静态注册:将一列实例硬编码在listener.ora文件中。
5.2 动态注册:更好的选择。实例在启动时定位侦听器并注册到侦听器中。
如果动态注册是默认端口1521上运行,那么就不需要任何配置。如果不是,则需要如下命令进行指定侦听器
Alter system set local_listener = list2;
Alter system register;
在实例启动过程中,PMON进程会使用local_listener参数来定位一个侦听器并向其通知instance_name 和 service_names 参数的值。
6、 名称解析技术
6.1 easy connect 名称解析方法
使用简单,不需要配置。不过其被限制于只能使用tcp协议。不能与oracle net的高级性能一起使用。
使用方法:
Connect scott/123@orcl.test.com:1522/orcl(侦听器使用1522端口)
Connect scott/123@orcl.test.com
6.2 本地解析方法:使用广泛,使用tnsnames.ora文件,过去使用sqlnet.ora文件。
使用本地名称解析方法时,用户可以为连接串提供一个oracle net 服务别名,该别名通过一个本地文件被解析为完整的网络地址。tnsnames.ora文件内容如下:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =test.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
一般不支持手动维护该文件,而用GUI工具维护。
6.3 目录解析方法:用于大型和复杂的oracle站点。
用户会被指向一个解析别名的LDAP目录服务器。
必须要安装目录服务器,跟大量的tnsnames.ora相比,目录服务器维护更简单。
6.4 外部解析方法
使用了第三方名称解析服务。
7、 配置服务别名
使用net manager 工具进行配置。
8、 配置容错与负载均衡
如下:
ORCL_net1 =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = ORCL_net1.test.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
ORCL_net2 =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = ORCL_net2.test.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
ORCL_either =
(DESCRIPTION =
(ADDRESS_LIST=
(LOAD_BALANCE = ON)
(FAILOVER = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST = ORCL_net1.test.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = ORCL_net2.test.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
其中(LOAD_BALANCE = ON) 指示用户进程随机选择一个IP地址,这样会是半数用户通过一个IP地址找到数据库服务器,其余会通过另外一个IP地址找到数据库服务器,从而使网络负载在两个网卡之间均衡。(FAILOVER = ON) 指示用户进程在随机选择第一个IP地址失败时尝试查找另外一个,从而能够提供容错。
9、 测试oracle net连接
使用tnsping工具来测试到达侦听器的连通性。
C:\>tnsping orcl
Tnsping 完成于指定侦听器的一次握手,但是并不测试实例是否正在运行以及数据库是否打开。只有net manager的test命令才能完成上述功能。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9537053/viewspace-722057/ ,如需转载,请注明出处,否则将追究法律责任。