作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g OCP/OCM、Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007
微信:jem_db
QQ交流群:168797397
一、静态监听
静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序。
无论何时启动一个数据库,默认地都有
两条信息注册到监听器中:数据库服务器对应的实例和服务。
实例不必启动,静态监听也能注册
服务器启动静态监听后,可以远程远程启库
1.1 配置文件
静态注册时
listener.ora中的GLOBAL_DBNAME向外提供服务名
listener.ora中的SID_NAME提供注册的实例名
LISTENER2=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=MES)(PORT=1523))
)
)
SID_LIST_LISTENER2=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=PROD)
(ORACL_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=PROD)
)
)
1.2 配置本地监听位置
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = MES)(PORT = 1523))';
1.3 启动监听
[oracle@MES ~]$ lsnrctl start LISTENER2
1.4 远程连接启库
sqlplus sys/oracle@192.168.1.72:1523/PROD as sysdba
二、动态监听
动态注册是在instance启动的时候PMON进程根据参数文件中的instance_name,service_names
两个参数将实例和服务动态注册到listener中
2.1 配置文件
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = MES)(PORT = 1521))
)
)
动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),
如果需要向非默认监听注册,则需要配置local_listener参数!
SYS@PROD> alter system set local_listener = ''; --此时默认注册到1521端口
2.2 启动监听
[oracle@MES ~]$ lsnrctl start
[oracle@MES ~]$ lsnrctl status
动态监听和静态监听的区别
1.动态监听时,需要动态注册,客户端(sys用户)只能在远程数据库启动的情况下连接上,远程数据库关闭时客户端连接不上远程数据库。
2.静态注册j既无论远程数据库处于开启还是关闭状态,客户端(sys用户)都可连接上,可以远程启库,停库
换一句换说静态注册可以在客户端控制服务器端数据库的启停,而动态注册则不可以,动态注册的监听在实例关闭时会被注销
注意:数据库关闭的状态下,只有sys用户可连入数据库,其他用户不可连入。
总结
可以使用命令lsnrctl status来查看某服务是静态注册还是动态注册。
实例状态为UNKNOWN值时表明此服务是静态注册的设置
这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。
动态监听的状态是READY。
本文如有错误或不完善的地方请大家多多指正,请关注公众号:IT邦德
留言微信:jem_db 或 QQ:2243967774 皆可,您的批评指正是我写作的最大动力!
大家多多点赞,转发,谢谢
最后修改时间:2021-09-08 00:03:37
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。