oracle监听服务的动态注册和静态注册
oracle监听服务的使用有两种模式:动态注册和静态注册
动态注册
8i以后版本的数据库实例在mount时,会根据参数文件中的service_names以及instance_name参数动态地将实例和服务动态注册到listerer中
(实际操作中发现,12c版本即使不在参数文件中指定两个参数,动态注册功能依然生效)
执行过程
- 在参数文件中指定service_names、instance_name参数
- 启动监听服务
- 启动oracle实例
说明
- 动态注册只会在PMON进程启动时才会自动将服务注册到监听器(一般在启动一分钟内完成注册),因此,需要先启动监听服务,再启动oracle实例;如果没有启动监听服务而是直接启动实例,因为监听服务并未处于运行中,所以则PMON的动态注册会失败,此时再启动监听后,PMON并不会再次执行自动注册,而是需要人工执行手动注册
alter system register;
- 数据库正常使用过程中,重启监听服务后,动态注册结果会失效,需要再次人工执行手动注册
alter system register;
(实际操作中发现,12c版本中直接启动实例、重启监听后PMON会在大约20秒后自动动态注册,不需要手动注册) - 动态注册默认只注册到默认的监听器(名称LISTENER,端口1521,协议TCP)
- 动态注册由数据库发起,这时候监听肯定对应数据库,所以监听状态为READY
静态注册
oracle实例在启动时会读取文件$ORACLE_HOME/network/admin/listener.ora的配置,将实例和服务注册到监听程序
参考代码
SID_LIST_LISTENER= (SID_LIST = (SID_DESC = (GLOBAL_DBNAME=orcl01) (ORACLE_HOME=/oracle/app/oracle/product/12.1.0.2/db_1) (SID_NAME=orcl01) ) ) LISTENER= (description_list= (description= (address=(protocol=tcp)(host=192.168.1.120)(port=1521)) ) )
其中,GLOBAL_DBNAME、ORACLE_HOME、SID_NAME、host四个参数的值需要根据实际情况设定
说明
- 静态注册与实例是否启动无关,启动监听服务时会读取listener.ora文件进行静态注册,此时即便数据库未启动,监听状态中依然能看到静态注册的信息
- 重启监听服务后,静态注册依然生效
- 静态注册可以更改一些自定义配置信息,例如自定义端口号
- 静态注册由监听程序发起,监听器并不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在,所以监听状态为UNKNOWN
参考资料:
https://developer.aliyun.com/article/415296
https://www.cnblogs.com/guilingyang/p/6074867.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!