ORACLE 监听动态注册与静态注
来源:互联网 发布:adobe软件 编辑:程序博客网 时间:2024/05/16 09:38
http://blog.csdn.net/zhaowenzhong/article/details/6118478
注册就是将数据库作为一个服务注册到监听程序中。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请链接到数据库。这个服务名可以与数据库名一样,也有可能不一样。
在数据库服务启动的过程中,数据库服务器向监听程序中注册相应的服务。无论何时启动数据库,默认的都有两条信息注册到监听器中,即数据库服务器对应的实例和服务。客户端和服务器之间的链接,只需要提供一个服务名就可以了。
区分动态注册和静态注册
(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)使用lsnrctl status命令
三、动态注册
动态注册是在instance启动的时候PMON(Process Monitor进程监视器)进程根据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用戶运行:
SQL> alter system set local_listener=listener;
SQL> alter system register;
或者:
SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = DaveDai)(PORT = 1522))';
SQL> alter system register;
动态注册的好处是简单方便,但是容易发生注册失败
四、静态注册
静态注册就是实例启动时读取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
当发生上述三种情况时,不会发生监听注册失败
4、查询某服务是静态注册还是动态注册
可以使用命令lsnrctl status来查看某服务是静态注册还是动态注册。
实例状态为UNKNOWN值时表明此服务是静态注册的设置。这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。
动态注册的数据库通过状态信息中的状态READY或状态BLOCKED(对于一个备用数据库)来指明。不管关闭何时数据库,动态注册的数据库都会动态地从 监听器注销,
而与之相关的信息将从状态列表中消失。这样,不管数据库是在运行还是已经关闭,监听器总是知道它的状态。该信息将被用于连接请求的回退 (fallback)和负载平衡。
- ORACLE 监听动态注册与静态注
- ORACLE 监听动态注册与静态注册
- oracle监听动态注册与静态注册
- oracle监听动态注册与静态注册
- oracle监听动态注册与静态注册
- oracle监听 动态注册与静态注册
- 【Oracle】监听动态注册与静态注册
- Oracle DBA之监听的静态注册与动态注册
- oracle监听的静态注册,与动态注册理解
- 监听动态与静态注册
- Oracle 监听动态注册和静态注册
- Oracle动态监听与静态监听
- oracle监听静态注册和动态注册相关知识整理
- Oracle监听的静态注册和动态注册
- Oracle Listener 动态注册 与 静态注册
- Oracle Listener 动态注册 与 静态注册
- Oracle Listener 动态注册 与 静态注册
- Oracle Listener 动态注册 与 静态注册
- Tweetable Mathematical Art
- HDU - 5087
- 杂谈:HTML 5页面可视性API
- IELTS Classification
- GetElementByClassName、GetElementById、GetElementByTagName的区别
- ORACLE 监听动态注册与静态注
- 条件运算符与逗号的嵌套的疑问,求大神解答(已自行解决)
- CSS定位深入理解 完全掌握CSS定位 相对定位和绝对定位
- 设计模式--外观模式
- extern "C"的用法解析
- 以“给新浪微博的建议”为例讲讲产品设计的中长期战略规划
- CMake - boost - 可执行程序 - 静态库
- 转载全网最流行java面试题(马克-to-win改编)和排名最高几个群
- XML转JSON简单规则总结 - (附一个 XML-JSON对照表)