4.1.1 监听器的配置
配置监听器是每个DBA必须完成的工作之一,也是最容易出现错误的地方。只要你熟练掌握以后,配置监听器其实并不像我们大家想象的那么复杂。配置监听器有两种方法。
■ 方法1:通过图形界面工具Net Manager。
■ 方法2:直接使用文本编辑器编辑监听器配置文件listener.ora。
其实,Net Manager最终改变的也是监听器配置文件listener.ora的内容。以上两种方法有着异曲同工之处。如果你熟练以后,直接编辑listener.ora将更加快捷!
本文将使用图形界面工具Net Manager,以Windows XP为平台进行讲述。
启动Net Manager。
单击“开始”→“程序”→“Oracle-Home”→“配置和移植工具(Configuration and Migration Tools)”→“Net Manager”,出现如图4-2所示的界面(在Linux/UNIX平台,使用命令netmgr启动Net Manage)。
图4-2 配置监听器首页
在配置监听器之前,我们必须理解什么是监听器。
知识点索引——监听器(LISTENER)
在Oracle数据库服务器中,通过一个叫“监听器”的组件接收来自客户端的连接请求。它是客户端和服务器端的中间组件。监听器是位于服务器端的、独立运行的一个后台进程,它运行在服务器端,但是独立于数据库服务器单独运行,也就是说,当数据库没有启动的时候,监听器也能独立运行。它负责对客户端传入的连接请求进行监听,并且对服务器端的连接负荷进行调整。当客户端试图建立一个到服务器端的连接时,监听器接收到客户端的请求,然后再将它交给服务器进行处理,一旦客户端和服务器建立连接,客户端和服务器以后就直接进行通信,而不再需要监听器的参与(也就是监听器将处于空闲状态)。监听器的工作原理如图4-3所示。
图4-3 监听器工作原理
(1)客户端向服务器端发出连接请求,监听器监听到客户端的连接请求。
(2)把客户端的连接请求交给数据库服务器处理。
(3)客户端和服务器端建立连接。连接建立以后,服务器端和客户端直接进行通信,而不再需要监听器的参与。也就是说,监听器的职能只是负责建立客户端和服务器端的连接,它并不负责客户端和服务器端的直接通信。
例如,我们在客户端使用SQL*Plus登录数据库服务器以后,发出一条命令,这条命令被直接发送给数据库服务器(不通过监听器),数据库服务器处理完这条命令以后,直接把命令的执行结果返回给客户端(也不通过监听器)。
SQL*Plus是一个客户端工具,用来和数据库进行交互,以实现对数据库的管理。有关SQL*Plus的更多信息,请参考本书5.1节的内容。
单击“本地”→“监听程序”,选择菜单“编辑”→“创建”命令,出现如图4-4所示的界面。在此界面中指定监听程序的名称。
图4-4 指定监听器名字
在这里输入监听器的名称,可以是任何便于记忆的名字,监听器的默认名字是LISTENER。本例中,监听器的名字保留默认值,然后单击“确定”按钮。
在如图4-5所示的界面中,单击 按钮。
图4-5 指定监听地址和端口号
指定监听器监听的协议,一般选择TCP/IP。
指定监听器的主机,可以指定主机名,也可以指定IP地址,最好使用IP地址。这里的IP地址是数据库服务器的IP地址,本例中是192.168.1.202。
指定端口号,Oracle默认的端口号(Port)是1521,我们也可以使用未被其他应用程序占用的端口号(Port),如1522、1523等。本例中端口号是1521。
这里指定的IP地址、协议及端口号等信息将在配置客户端时被使用,客户端网络配置指定的信息必须和这些信息相同。如果两端的信息不同,Oracle客户端将不能连接到Oracle服务器端,这是Oracle网络配置经常失败的原因!
单击图4-5正上方的下拉菜单,选择“数据库服务”,出现如图4-6所示的界面。
图4-6 数据库服务设置
全局数据库名:输入全局数据库名,全局数据库名在单节点下和SID相同,本例中是zdb。
Oracle主目录:输入Oracle的主目录(Oracle Home),Oracle的主目录是在安装Oracle时由用户定义的,本例中是C:\app\Administrator\product\11.1.0\db_3。
SID:输入SID,SID就是实例名,通常是在创建数据库时定义的,本例中是zdb。实例名和数据库名的设置在本书2.2.3节中有详细的介绍。
知识点索引——查找Oracle主目录(Oracle Home)的方法
得到Oracle主目录(ORACLE_HOME)的方法有以下几种:
(1)查看Oracle的安装日志文件,从中可以找到Oracle主目录(Oracle Home)的信息。安装日志的查找,请参考本书2.2.2节的内容。
(2)在注册表中进行查找。在Windows平台中,Oracle主目录的位置被写进了注册表,键的名称就叫ORACLE_HOME。通过搜索关键字ORACLE_HOME,就可以找到Oracle的主目录。
(3)在UNIX平台中,以用户oracle的身份执行操作系统命令env,在显示的信息中,环境变量ORACLE_HOME的值就是Oracle的主目录(ORACLE_HOME)。
保存设置。
单击“文件”→“保存网络设置”。我们在这里所做的任何修改最终都被保存到一个名叫listener.ora的文件中,这个文件就是“监听器配置文件”。
知识点索引——监听器配置文件listener.ora
监听器启动的时候,会读取一个名叫listener.ora的文件,这个文件即为“监听器配置文件”,这个文件指定监听器所在的主机、监听器监听的实例、监听的端口号、监听的协议等信息。这个文件的内容类似于下面的内容:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = zdb) (ORACLE_HOME = C:\app\Administrator\product\11.1.0\db_3) (SID_NAME = zdb) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521)) )
LISTENER是监听器的名字,我们也可以使用别的名字。
ORACLE_HOME是Oracle的主目录。
SID_NAME是监听器监听的数据库的实例名。本例中的实例是zdb。
PROTOCOL是监听器监听的协议。本例中使用的是TCP/IP。
HOST指定数据库服务器的主机名或者IP地址。本例中数据库服务器的IP地址是192.168.1.202。
PORT指定监听器使用的端口号,默认的端口号是1521。
退出监听器配置。