1.动态注册
是instance启动的时候pmon进程根据init.ora中的instance_name,service_names两个参数将实例和服务动态注册到listener中。
SYS>show parameter service_names
SYS>show parameter instance_name
注册到监听器的实例值从init.ora文件中的instance_name参数取得,如果该参数没有设定值,那么久取db_name的值。如果在RAC中配置,必须保证每个实例instance_name参数设置唯一。
注册到监听器的服务值从init.ora文件中的service_name取得,如果没有设定,数据库将拼接init.ora中的db_name和db_domain的值来注册自己。
动态注册listener.ora配置文件
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PL***tProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)
动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),因为pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,如果需要向非默认监听注册,则需要配置local_listener参数!
然后以sys用戶运行:
SQL> alter system set local_listener=listener;
SQL> alter system register;
或者:
SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.128)(PORT = 1522))';
SQL> alter system register;
系统已更改。
2.静态注册
静态注册时,listener.ora中的GLOBAL_DBNAME向外提供服务名,listener.ora中的SID_NAME提供注册的实例名。
oracle实例运行后,监听程序启动时,根据listener.ora的配置注册相应的服务。
其中global_dbname对应的是oracle对外的服务名,即初始化参数里的service_names
而sid_name对应的是oralce实例的名称,即初始化参数里的instance_name
[oracle@oracle admin]$ cat listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orclg)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(SID_NAME = orcl)
)
)
#LISTENER =
# (DESCRIPTION_LIST =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.128)(PORT = 1521))
# )
# )
#这部分有没有都没关系,注释就是默认listener
[oracle@oracle admin]$ cat tnsnames.ora
vm128 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.128)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclg)
)
)
阅读(457) | 评论(0) | 转发(0) |