一、静态注册 静态注册指实例启动时读取 listener.ora 配置文件,将实例和服务注册到监听程序。无论何时启动一个数据库,默认都有两条信息注册到监听器中:实例和服务。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = rman)
(ORACLE_HOME = /u01/oracle)
(SID_NAME = rman)
)
(SID_DESC =
(GLOBAL_DBNAME = gel)
(ORACLE_HOME = /u01/oracle)
(SID_NAME = gl)
)
)
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 =
(GLOBAL_DBNAME = rman)
(ORACLE_HOME = /u01/oracle)
(SID_NAME = rman)
)
(SID_DESC =
(GLOBAL_DBNAME = gel)
(ORACLE_HOME = /u01/oracle)
(SID_NAME = gl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
)
说明: 1 )不需要人工干预在 lsnrctl start 后,会自动注册数据库的 instance_name,service_name ,然后 tns 不论使用 SID 和 SERVICE_NAME 均可以连接上来 2 )修改了 SERVICE_NAME 或者 SID 不用修改 listener.ora 文件
