ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 八 配置oracle互联

八 配置oracle互联

原创 Linux操作系统 作者:treesofthehill 时间:2012-04-23 18:02:57 0 删除 编辑

 

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 managertest命令才能完成上述功能。

111122222222222.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9537053/viewspace-722057/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-11

  • 博文量
    97
  • 访问量
    179885