前面简单介绍了关于 listener 的概念,接下来进行一些实操
1、netmgr

netmgr(Net Manager)分为几个配置模块
(1)profile:对应于sqlnet.ora文件,可以设置客户端、服务器端
(2)Service Naming:对应tnsname.ora文件,配置客户端的本地网络名称解析
(3)Listeners:对应listener.ora文件,配置服务端监听器
2、netca
netmgr包含netca的所有操作功能,使用netca同样可以实现,这取决个人习惯。

监听配置、本地网络服务名配置是使用最多的功能,下面简单介绍使用图形界面的配置过程:
(1)listener配置:


输入监听器名称,创建好DB后会默认运行LISTENER的监听。

默认协议为 TCP/IP

选择监听器的端口,默认端口1521已经被LISTENER使用,这里输入另一个端口

端口冲突时会出现以下提示,虽然不影响继续配置,但是在没有解决端口冲突问题前不能启动该监听

(2)本地网络服务名 tnsname 配置

、
这里的服务名在前面有讲过,默认服务名与SID一致。但Oracle推荐使用与SID不同的名称作为 Service_name。
为了更好的理解服务名与监听的关系,这里故意留一个坑,哈哈!


这里的ip就是服务端地址,当然可以写主机名

配置完成后需要测试一下,保证以上配置的有效性

出现ORA-12514,这是因为上面输入的服务名 ORCL 没有在数据库中做定义,不能被监听器所识别,由此可见服务名的正确性是保证监听器与数据库完成通信的必要条件

修改以上错误,测试通过

为此次配置的本地网络服务输入一个名称

3、相关配置文件
那么上面配置工作完成后,输出的相关文件在哪里可以查找呢?
首先这里说明的是Linux平台环境,不同的 平台、数据库版本下文件存放路径与有一定区别。
(1)listener.ora 监听配置文件
路径:$ORACLE_HOME/network/admin
文件名:listener.ora
ORCL =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.50)(PORT = 1522))
)
)
对应的监听名、主机名、端口号都可以查看
(2)tnsname.ora 本地网络服务配置文件
路径与上面的监听配置文件相同 $ORACLE_HOME/network/admin
文件名:tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.50)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
上面包含tns别名ORCL、主机地址以及服务名
4、监听常用命令
(1)帮助 LSNRCTL> help
(2)启停 lsnrctl start/stop
(2)状态查看 lsnrctl status
(4)常用设置 LSNRCTL> set
(5)指定监听器跟踪信息的位置 LSNRCTL> trc_file
......
5、测试本地网络服务配置的连通性
tnsping只是发送连接包至服务器端监听上,所以即使listener正常,客户端也不一定能连接到数据库服务器。tnsping主要检查的是远程监听是否启动在相应的IP地址和端口上,并不验证监听中的实例服务(数据库是否可用)。
为了说明这点,下面进行一个测试:
(1)监听状态
[oracle@RHEL admin]$ lsnrctl status
Service "db" has 1 instance(s).
Instance "db", status READY, has 1 handler(s) for this service...
(2)本地网络服务配置
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.50)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
[oracle@RHEL admin]$ tnsping ORCL
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.50)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
OK (10 msec)
可以看到监听状态与客户端网络配置中的 service_name 并不同,但tnsping依然正常,所以tnsping只检测监听配置中主机ip地址及端口有效性。
但是当客户端登录数据库时会出现 ORA-12514 错误:
[oracle@RHEL~]$ sqlplus system/123456@ORCL
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
解决该问题的方法也就是检查实例服务是否与监听配置、客户端网络配置的服务命是否一致
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69965557/viewspace-2747071/ ,如需转载,请注明出处,否则将追究法律责任。