oracle listener动态与静态注册的配置

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 )
    )
  )

你可能感兴趣的:(oracle)