问题一:什么是静态注册和动态注册
- 静态注册:用酒店的例子,静态注册就像是酒店的前台,什么时候去都有人在,有没有房间需要你先询问,然后她再查看。如果有就可以入住了。
静态注册就是这样,监听程序就是前台,前台不知道实例的任何信息,只有客户请求时才检查实例是否存在。 - 动态注册:用蹲坑的例子,就是你上大号,你看见厕所的门从里面锁上,就知道里面有人。
在oracle中动态注册的数据库,必定是已经启动的。如果实例关闭,注册信息就消失。
问题二:怎样查询是静态注册还是动态注册?
方法是用lsnrctl status命令:
UNKNOWN------》是静态注册
READY/BLOCKED(备用数据库)-------》是动态注册
问题三:静态注册的原理
从listener.ora文件中读取信息:
GLOBAL_DBNAME:向外提供服务的名字
SID_NAME: 注册的实例名
问题四:动态注册的原理
PMON进程去数据库参数中找信息:
service_name:相当于静态注册的GLOBAL_DBNAME信息
instance_name:相当于静态注册的SID_NAME信息
默认端口是1521,建议更改,方法是修改参数:local_listener
修改方法:
ALTER SYSTEM SET LOCAL_LISTENER='' scope=both;
local_listener
可以设置tnsname.ora中写好的的服务名,也可以直接将网络设置写进去,例如:
ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL=TCP)(HOST=192. 168.2.1)(PORT=1526))' SCOPE=BOSH;