Oracle的静态注册和动态注册详解
作者:莳花微语
oracle的静态注册和动态注册
静态注册:
静态注册 : 指将实例的相关信息手动告知 listener 侦 听 器 , 可以使用netmgr,netca,oem 以及直接 vi listener.ora 文件来实现静态注册,在动态注册不稳定时使用,特点是:稳定,注册过程比动态过程慢静态注册时,listener.ora 中的 GLOBAL_DBNAME 向外提供服务名,listener.ora 中的 SID_NAME 提供注册的实例名。
采取静态注册方法时,listener.ora 中的内容如下:
# listener.ora Network Configuration File: /oracle/app/oracle/product/19c/db_1/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = fgzcdb) (ORACLE_HOME = /oracle/app/oracle/product/19c/db_1) (SID_NAME = fgzcdb) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hfzcdb91)(PORT = 1521)) )
动态注册: (数据库默认是动态注册)
[oracle@hfzcdb91:/home/oracle]$lsnrctl status #status READY
实例在启动时使用 PMON 进程自动将 instance_name 和 service_names 等信息注册到已启动的缺省侦 听器 listener.ora,
在 9i 之后,不需要任何配置即可实现动态注册.实例启动后会自动在本地主机默认的号端口上查找侦 听器,并在查找到时进行注册 。
[oracle@hfzcdb91:/oracle/app/oracle/product/19c/db_1/network/admin]$vi listener.ora
# listener.ora Network Configuration File: /oracle/app/oracle/product/19c/db_1/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hfzcdb91)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) )
默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listener.ora中, 是oracle为调用外部程序默认配置的监听,它的名字通常是ExtProc或PLSExtProc,但一般不会使用它。可以直接从listener.ora中将这项移除,因为对ExtProc已经有多种攻击手段了,在不使用外部程序时,oracle也是建议删除的。
既然有动态监听为什么还要静态监听呢?原因如下:
1.监听器不是最早启动,oracle 实例先启动
2.监听器重启 【动态监听注册有一定时间】
3.oracle 实例没有 open
扩展:
在 oracle12c 以前的版本中服务注册一直都是由 PMON 进程负责 , 从 12c 起 oracle 引入了 LREG (listener registration) 后台进程接管了这部分工作从而减轻 PMON 的工作
动态监听与静态监听
动态监听:LREG((listener registration)后台进程会自动将实例注册到监听上。关键字ready静态监听:手工编写或者使用netmgr程序设置监听。他会一直监听需要注册的实例。
静态监听:关键字unknown如果你使用动态监听的时候发现始终无法注册实例,可以使用下面的方法:
SQL>alter system set local listener='' scope=both; System altered. SQL>alter system register; System altered.
到此这篇关于Oracle的静态注册和动态注册详解的文章就介绍到这了,更多相关Oracle静态和动态注册内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!