Oracle DBA之监听的静态注册与动态注册

==【静态注册】==
静态注册可通过图形化的net manager进行配置。
net manager里面的配置选项与相关文件的对应关系:
概要文件 <=> sqlnet.ora
服务命名 <=> tnsnames.ora
监听程序 <=> listener.ora

静态注册在服务器端需要配置【监听程序(listener.ora)】,包括:
监听位置(协议、主机、端口);
数据库服务(全局数据库名:此处的全局数据库名对应于客户机端【服务命名(tnsnames.ora)】的服务名、Oracle主目录、SID);
其它服务(我测试的时候发现不能留空,不过此处的程序名和SID随便填一些字符即可);
追加一个监听程序需要通过netca进行配置,win下netca会创建一个服务。
listener.ora(服务器端)
SID_LIST_SL01 =
  (SID_LIST =
    (SID_DESC =
      (PROGRAM = xx)
      (SID_NAME = xx)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = gdbn01)
      (ORACLE_HOME = d:\oracle\product\10.2.0\db_1)
      (SID_NAME = ORCL)
    )
  )

SL01 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = duzz)(PORT = 8899))
  )

tnsnames.ora(客户机端)
S01 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = duzz)(PORT = 8899))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = d01)
    )
  )

==【动态注册】==
要想PMON能动态注册非1521的端口,需要先将连接信息(protocal,host,port - 该连接信息须在【监听程序(listener.ora)】的监听位置中存在)配置到服务器端的tnsnames.ora,然后修改local_listener参数指向tnsnames.ora中的配置选项。
listener.ora(服务器端,SL01为通过netca新建的监听程序)
SL01 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = duzz)(PORT = 8899))
  )

tnsnames.ora(服务器端)
DL01 = (ADDRESS = (PROTOCOL = TCP)(HOST = duzz)(PORT = 8899))

alter system set local_listener='DL01';
alter system set service_names='d01,d02,d03';

客户端只需在tnsnames.ora中填入相应的SERVICE_NAME即可:
tnsnames.ora(客户机端)
S01 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = duzz)(PORT = 8899))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = d01)
    )
  )

要想PMON动态注册默认1521的端口则相对比较简单,不需要设置local_listener参数,自然也就不需要修改服务器端的tnsnames.ora文件,其它与动态注册非1521的端口步骤一样。

==【验证注册】==
sqlplus /@s01 as sysdba
select distinct sid from v$mystat;
select service_name from v$session where sid=:sid; 
查看当前session的服务名,
如果返回的是SYS$USERS则表示当前session通过静态注册的服务名连接,
否则返回动态注册的服务名。

 

你可能感兴趣的:(oracle,session,manager,tcp,service,服务器)