配置监听器是每个DBA必须完成的工作之一,也是最容易出现错误的地方。配置监听器有两种方法。
◆ 方法一 :通过图形界面工具Net Manager。
◆ 方法二 :直接使用文本编辑器编辑监听器配置文件listener.ora。
其实,Net Manager最终改变的也是监听器配置文件listener.ora的内容。
使用图形界面工具,以Windows为例。
启动Net Manager。
单击“开始”→“程序”→“Oracle”→“Configuration and Migration Tools”→“Net Manager”,出现如图4-8所示的界面。
单击“本地”→“监听程序”。
图4-8 Oracle Net Manager首页
单击菜单“编辑”→“创建”,出现如图4-9所示的界面。
图4-9 选择监听程序名称
在这里输入监听器的名称,监听器的名称默认是LISTENER1,也可以输入别的名字,然后单击“确定”按钮。
单击下方的“添加地址”按钮,出现如图4-10所示的窗口。
图4-10 指定监听位置
■ 指定监听器监听的协议,一般选择TCP/IP。
■ 指定要监听器的主机,可以指定主机名,也可以指定IP地址,最好使用IP地址。这里的IP地址是数据库服务器的IP地址。
■ 指定端口号,Oracle默认的端口号(port)是1521,也可以使用未被其他应用程序占用的端口号(port),如1522、1523等。
单击图4-10上方的下拉菜单,选择“数据库服务”。
单击下方的“添加数据库”按钮,将出现如图4-11所示的界面。
图4-11 指定监听的数据库
■ 全局数据库名称:输入全局数据库名,全局数据库名在单节点下和SID相同。
■ Oracle主目录:输入Oracle的主目录(Oracle Home),Oracle的主目录是在安装Oracle时由用户定义的。
■ SID:输入SID,SID就是实例名(instance),通常是在创建数据库时定义的。
【小贴士(Tip)】 得到Oracle主目录(Oracle Home)的方法如下。
(1)查看Oracle的安装日志,从中可以找到Oracle主目录(Oracle Home)的信息。
(2)在注册表中进行查找。在Windows平台,Oracle主目录的位置被写进了注册表,键的名称就叫ORACLE_HOME。通过搜索关键字ORACLE_HOME,就可以找到Oracle的主目录。
(3)在UNIX平台,以用户oracle的身份执行操作系统命令env,在显示的信息中,环境变量ORACLE_HOME的值就是Oracle的主目录(Oracle Home)。
上面的设置完成以后,不要忘记保存刚才的修改。
单击“文件”→“保存网络设置”。我们在这里所做的任何修改最终都被保存到一个叫listener.ora的文件中,这个文件就是“监听器配置文件”。
用lsnrctl start LISTENER 1命令启动监听器,其中LISTENER1是监听器的名称。如果启动成功,则显示如下信息。
至此,监听器配置完毕,客户端可以登录数据库。
监听器的启动有两种方法。
◆ 方法一 :在命令行直接启动监听器。
登录操作系统(OS)。
如果操作系统是Windows,则用操作系统命令cmd打开命令行窗口;如果操作系统是UNIX,则执行命令su-oracle。
启动监听器。
其中,LSK是监听器的名称。如果执行lsnrctl start命令(没有指定监听器的名称),则该命令将启动默认的监听器。默认的监听器的名称是LISTENER。
从上面的启动过程我们还可以看出有关监听器的配置信息,这些信息包括监听器所在的主机(HOST)、监听器监听的端口(PORT)、支持的协议等信息。
◆ 方法二 :进入监听器管理控件后再启动监听器。
登录操作系统(OS)
如果操作系统是Windows,则用操作系统命令cmd打开命令行窗口;如果操作系统是UNIX,则执行命令su-oracle。
启动监听器控件。
启动监听器。
其中,LSK是监听器的名称。
启动监听器有两种方法,关闭监听器也有两种方法。
◆ 方法一 :在操作系统命令行直接关闭。
登录操作系统(OS)。
如果操作系统是Windows,则用操作系统命令cmd打开命令行窗口;如果操作系统是UNIX,则执行命令su-oracle。
关闭监听器。
其中,LSK是监听器的名称。如果执行lsnrctl stop命令(没有指定监听器的名称),则该命令将关闭默认的监听器。默认监听器的名称是LISTENER。
◆ 方法二 :登录监听器管理控件后再关闭监听器。
登录操作系统(OS)。
如果操作系统是Windows,则用操作系统命令cmd打开命令行窗口;如果操作系统是UNIX,则执行命令su-oracle。
登录监听器控件。
关闭监听器。
其中,LSK是监听器的名称。
有时候,我们需要知道监听器的运行状态,lsnrctl STATUS命令可以帮助我们知道监听器的状态。下面我们将给出详细的步骤。
登录操作系统(OS)。
如果操作系统是Windows,则用操作系统命令cmd打开命令行窗口;如果操作系统是UNIX,则执行命令su-oracle。
登录监听器控件。
显示监听器的状态。
命令Status将会列出下面有关监听器的信息。
■ 监听器的名称、监听器的版本号、监听器的启动时间、运行时间、跟踪级别、监听器配置文件listener.ora的位置等。
■ 监听器的地址信息,包括主机名、端口号等。
■ 监听器的实例的状态信息,实例有下面几种状态。
● READY表示实例可以接受连接。
● BLOCKED表示实例不能接受连接。
● READY/SECONDARY表示这是群集(Oracle 9i Real Application Clusters)的第二个实例,准备接受连接。
● UNKNOWN表示监听器是静态注册的(registered statically)。
此外,通过监听器的SERVICES命令,我们还可以得到监听器更加详细的信息。如:
在配置Oracle的客户端之前,首先确认Oracle的客户端软件是否已经安装。除此之外,还要知道目标数据库的主机名(IP地址)、数据库实例名、监听器的端口号等信息。
下面我们将通过一个例子演示Oracle客户端的配置。远程数据库服务器的有关信息如下。
机器名(IP):XXXX
实例名:nbo
端口号:1521
【小贴士(Tip)】 有关数据库服务器的配置信息,可以从监听器配置文件listener.ora中获得。
客户端配置步骤如下。
启动Oracle Net Configuration Assistant。
■ 在UNIX平台,在$ORACLE_HOME/bin下运行netca命令。
■ 在Windows平台,单击“开始”→“程序”→“Oracle-HOME_NAME”→“Configuration and Migration Tools”→“Net Configuration Assistant”,启动后的界面如图4-12所示。
● 监听程序配置:用于配置监听器。
● 命名方法配置:用于选择命名方法。
● 本地Net服务名配置:用于配置本地命名方式(Local Naming)。
● 目录使用配置:用于设置目录命名(Directory Naming)。
选择命名方法。
选择“命名方法配置”,单击“下一步”按钮,出现如图4-13所示的界面。
图4-12 Oracle Net Configuration首页
图4-13 选择命名方法
在“可用命名方法”下列出了可用的命名方式,有外部命名、本地命名、目录命名等。实际应用中用得最多的是“本地命名”。
在“可用命名方法”下,选中“本地命名”,然后单击
按钮,则本地命名方法将会被添加到“选定的命名方法”列表中。也就是说,我们将使用“本地命名”方法。
当然,我们也可以同时使用多种命名方法,如同时使用“本地命名”和“目录命名”两种方法。当客户端连接服务器时,如果同时使用多种命名方法,则Oracle会按照命名方法出现的顺序进行一一尝试,直到能正确连接数据库服务器为止。
命名方法设置完成。
单击“下一步”按钮,出现如图4-14所示的界面。
单击“下一步”按钮,命名方法配置完成,我们又回到第1步的界面。
配置本地命名。
在第1步的界面中选择“本地Net服务名配置”,然后单击“下一步”按钮,出现如图4-15所示的界面。
在这里,我们可以选择“添加”、“删除”或“重新配置”网络服务名。
选择“添加”,然后单击“下一步”按钮,出现如图4-16所示的界面。
图4-14 命名方法配置完成
图4-15 网络服务名配置选择
设置服务名。
这里的“服务名”就是实例名。
本例中,在“服务名”处输入nbo,然后单击“下一步”按钮,出现如图4-17所示的界面。
图4-16 指定网络服务名
图4-17 协议选择
选择协议。
Oracle支持的协议有:TCP/IP、TCP/IP with SSL(TCPS)、Named Pipes(NMP)、SDP、IPC。
TCP/IP是应用最广泛的协议。通常,我们都选择TCP/IP。
【小贴士(Tip)】 Oracle的网络是基于操作系统的网络配置,在配置Oracle的网络之前,我们必须安装和配置好操作系统(OS)的网络。
选择“TCP”,然后单击“下一步”按钮,出现如图4-18所示的界面。
设置主机名和端口号。
■ 主机名:这里的“主机名”是数据库服务器所在的机器的名称,也可以是数据库服务器的IP地址。
■ 端口号:这里的端口号是监听器使用的端口号,1521是默认的端口号。
在“主机名”处输入:XXXX,端口号是1521,然后单击“下一步”按钮,出现如图4-19所示的界面。
图4-18 指定主机名和端口号
图4-19 是否进行连通性测试
测试选择。
这里选择是否要对上面的网络配置进行测试,看看配置是否正确。
选择“是,进行测试”,然后单击“下一步”按钮,出现如图4-20所示的界面。
测试结果。
如果测试成功,则会显示如图4-20所示的信息;如果测试失败,则Oracle会显示失败的原因。如果测试时,提示用户名和密码错误,则可以重新设置用户名和密码,请单击“更改登录”按钮,出现如图4-21所示的界面。
图4-20 连通性测试
图4-21 设置用户名和密码
设置用户名和密码。
这里的用户是数据库用户,不是操作系统的用户。
输入用户名和密码,单击“确定”按钮,然后再单击“上一步”按钮,回到第8步的界面,继续进行连接测试。
设置网络服务名。
如果测试成功,则在第9步的界面中,单击“下一步”按钮,出现如图4-22所示的界面。
在这里输入网络服务名,以后我们将使用网络服务名来连接远程数据库。网络服务名的名称可以任意指定,但是,从应用的角度考虑,我们应该指定一个便于记忆的名称。
输入网络服务名NNC,单击“下一步”按钮,出现如图4-23所示的界面。
图4-22 指定网络服务名
图4-23 是否配置其他服务名
选择是否要配置另外一个网络服务名。
至此,我们已经完成网络服务名的配置。如果还想配置另外一个网络服务名,则请选择“是”;如果不想,则请选择“否”。
单击“下一步”按钮,出现如图4-24所示的界面。
图4-24 网络配置完毕
配置完毕。
单击“下一步”按钮,我们又回到了第1步的界面,在这里,我们还可以进行其他网络配置。
当然,我们也可以使用图形界面工具Net Manager来配置Oracle的客户端。使用Oracle Net Manager来配置Oracle的网络客户端的原理和使用Oracle Net Configuration Assistant来配置Oracle的网络客户端的原理差不多。
为了测试客户端到服务器的网络配置是否通畅,我们可以使用Oracle提供的tnsping命令。tnsping是一个在操作系统命令行执行的命令。下面,我们将通过一个例子展示tnsping的用法。
登录操作系统(OS)。
如果操作系统是Windows,则用操作系统命令cmd打开命令行窗口;如果操作系统是UNIX,则执行命令su-oracle。
执行tnsping命令。
在本例中,NNC是我们自己配置好的一个网络服务名,这个网络服务名指向远程的数据库。
如上面所示,如果客户端能够成功连接到服务器,tnsping命令的执行结果将会显示“OK”,并报告这个过程消耗了多少时间(本例中消耗60ms);如果不能成功连接到远程的服务器,则tnsping命令将会返回详细的错误信息。
【小贴士(Tip)】 tnsping命令只能判断客户端到监听器的连接是否通畅,它并不能判断服务器端的数据库实例是否正在运行。
要对远程数据库进行访问,必须先登录远程数据库,我们可以使用SQL*Plus,也可以使用Oracle Enterprise Manager(OEM)登录远程数据库。下面我们将演示使用SQL*Plus如何登录远程数据库。
登录操作系统(OS)。
如果操作系统是Windows,则用操作系统命令cmd打开命令行窗口;如果操作系统是UNIX,则执行命令su-oracle。
打开SQL*Plus,登录数据库。
其中sqlplus是命令,用于打开SQL*Plus。在system@nnc中,system是数据库的用户名,@表示要登录哪个数据库,nnc是网络服务名,指向目标数据库。