ORACLE监听动态注册与静态注册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ORACLE监听动态注册与静态注册注册就是将数据库作为一个服务注册到监听程序中。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请链接到数据库。这个服务名可以与数据库名一样,也有可能不一样。在数据库服务启动的过程中,数据库服务器向监听程序中注册相应的服务。无论何时启动数据库,默认的都有两条信息注册到监听器中,即数据库服务器对应的实例和服务。客户端和服务器之间的链接,只需要提供一个服务名就可以了。区分动态注册和静态注册(1)使用listener.ora文件判断动态注册SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(PROGRAM=extproc)(SID_NAME=PLSExtProc)(ORACLE_HOME=D:oradataorcl)))静态注册SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(PROGRAM=extproc)(SID_NAME=PLSExtProc)(ORACLE_HOME=D:oradataorcl))(SID_DESC=(GLOBAL_DBNAME=orcl)(ORACLE_HOME=D:oradataorcl)(SID_NAME=ORCL))(SID_DESC=(GLOBAL_DBNAME=orcl1)(ORACLE_HOME=D:oradataorcl)(SID_NAME=ORCL)))通过查看虽然可以大致看出,但是这种方法并不能和明确的现实数据库在运行时的实际情况(2)使用lsnrctlstatus命令三、动态注册动态注册是在instance启动的时候PMON(ProcessMonitor进程监视器)进程根据INIT.ORA中的instance_name,service_name两个参数将实例和服务注册到监听器中.动态注册时的listener.ora的文件内容如下SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(PROGRAM=extproc)(SID_NAME=PLSExtProc)(ORACLE_HOME=D:oradataorcl)))由于动态注册需要pmon进程,所以监听必须在数据库启动之前启动,否则动态注册将失败;在数据库运行的过程中,如果重启监听也会造成动态注册失败动态注册只是注册默认的监听器上(名称是listener、端口是1521、协议时TCP),如果需要向非默认的监听注册,则需要改变local_listener参数将监听的信息添加到tnsnames.ora文件中。注意,是tnsnames.ora文件,因为pmon在动态注册监听时要从tnsnames.ora中读取相关信息。LISTENER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DaveDai)(PORT=1522)))然后以sys用戶运行:SQLaltersystemsetlocal_listener=listener;SQLaltersystemregister;或者:SQLaltersystemsetLOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=DaveDai)(PORT=1522))';SQLaltersystemregister;动态注册的好处是简单方便,但是容易发生注册失败四、静态注册静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序中静态注册时的listener.ora中的内容如下SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(PROGRAM=extproc)(SID_NAME=PLSExtProc)(ORACLE_HOME=D:oradataorcl))(SID_DESC=(GLOBAL_DBNAME=orcl)(ORACLE_HOME=D:oradataorcl)(SID_NAME=ORCL))(SID_DESC=(GLOBAL_DBNAME=orcl1)(ORACLE_HOME=D:oradataorcl)(SID_NAME=ORCL)))golbal_dbname是数据库对外提供的服务名,sid_name是实例名,该文件说明数据库是单实例数据库,实例名为orcl,向外提供了两个服务orcl和orcl1.静态注册的好处可以总结为1、监听不是最早启动2、数据库运行期间,监听发成重启3、oracle实例还没有open当发生上述三种情况时,不会发生监听注册失败。==============================================================一、静态注册静态注册指实例启动时读取listener.ora配置文件,将实例和服务注册到监听程序。无论何时启动一个数据库,默认都有两条信息注册到监听器中:实例和服务。SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=rman)(ORACLE_HOME=/u01/oracle)(SID_NAME=rman))(SID_DESC=(GLOBAL_DBNAME=xienfei)(ORACLE_HOME=/u01/oracle)(SID_NAME=xff)))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521))))说明:1)(ORACLE_HOME=/u01/oracle)oracle_home目录,测试不加也行2)本静态监听两个数据库实例,每个实例的静态监听写到SID_DESC中3)在数据库未open状态中,就可以远程连接到数据库,对数据库进行操作4)使用静态监听时,客户端的tns最好配置为SERVICE_NAME,当然也可以同时配置SID和SERVICE_NAME,等数据库启动后,tns中无论是sid还是SERVICE_NAME均能访问数据库二、动态注册动态注册不需要显示的配置listener.ora文件,实例启动的时候,PMON进程根据instance_name,service_name参数将实例和服务动态注册到listerer中。如果没有设定instance_name,将使用db_name初始化参数值。如果没有设定service_names,将拼接db_name和db_domain参数值来注册监听。SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=PLSExtProc)(ORACLE_HOME=/u01/oracle)(PROGRAM=extproc)))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521))(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0))))说明:1)不需要人工干预在lsnrctlstart后,会自动注册数据库的instance_name,service_name,然后tns不论使用SID和SERVICE_NAME均可以连接上来2)修改了SERVICE_NAME或者SID不用修改listener.ora文件==============================================================Oracle监听的动态注册和静态注册动态监听原文链接:动态监听:Oracle实例在启动时,或使用命令ALTERSYSTEMREGISTER,或每隔一分钟,PMON进程会向监听进行动态注册,PMON进程根据init.ora中的instance_name,service_names两个参数将实例和服务动态注册到listener中;oracle监听器运行后,oracle实例在open时,会动态向监听程序注册其service_names和instance_name。可以使用showparameterinstance_name和showparameterservice_names来查看实例名和服务名,服务名可以有多个;其中instance_name默认是:db_name而service_names默认是:db_name.db_domain如果没有显式设置service_names和instance_name的值,那么仅当数据库在监听运行之后启动时,动态注册才会发生。在这种情况下,如果监听器后来发生了重启,动态注册信息将会丢失。静态监听:静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序。无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。下面是配置的listener.ora配置完后在监听管理中reload即可ps:查看数据库sid可以:SELECT*FROMV$INSTANCE;在tnsnames.ora中可以这么配置:

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功