Oracle数据库动态注册和参数…

来源:互联网 发布:php curl exec 编辑:程序博客网 时间:2024/05/19 13:42
原文地址:Oracle数据库动态注册和参数local_listener的使用作者:zhutianjie
从Oracle8i版本开始,在oracle数据库当中,应用如果没有特殊需求的话,数据库监听不需要做出配置,oracle把这种方法称为动态注册。所谓动态注册,oracle通过PMON进程根据参数instance_name和service_names中的内容,把oracle数据库的信息注册到默认的1521端口的监听器上。不管服务器端有几个监听程序,oracle默认都是注册到1521端口的监听器,也就是说,对于其他端口的监听器来说,如果想要正常的识别远程客户端提供的信息,需要做出配置,也就是静态注册。在lsnrctl命令下,通过services命令可以观察到是静态注册还是动态注册。如果是静态注册的话,oracle显示的服务的状态是unknown,如果是动态注册的话,服务的状态显示是ready。不过,如果用户想要修改动态注册的端口,这也是可以实现的,可以通过设置数据库的local_listener参数来实现。

我们来看下面的一个例子,首先,在数据库默认情况下,local_listener参数为空,没有设置。
[oracle@ztj10 admin]$ sqlplus / assysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Apr 22 03:03:442012
Copyright (c) 1982, 2005, Oracle.  All rightsreserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options

SQL> show parameterlocal_l
NAME                                TYPE       VALUE
------------------------------------ -----------------------------------------
local_listener                      string

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

查看监听器注册的服务,READY表示动态注册。
[oracle@ztj10 admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 22-APR-201203:04:03
Copyright (c) 1991, 2005, Oracle.  All rightsreserved.
Welcome to LSNRCTL, type "help" for information.

LSNRCTL> services
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1handler(s) for this service...
   Handler(s):
     "DEDICATED" established:0 refused:0
        LOCAL SERVER
Service "db01" has 1 instance(s).
  Instance "db01", status READY, has 1 handler(s)for this service...
   Handler(s):
     "DEDICATED" established:0 refused:0 state:ready
        LOCAL SERVER
Service "db01XDB" has 1 instance(s).
  Instance "db01", status READY, has 1 handler(s)for this service...
   Handler(s):
     "D000" established:0 refused:0 current:0 max:1022 state:ready
        DISPATCHER <machine: ztj10, pid:21629>
        (ADDRESS=(PROTOCOL=tcp)(HOST=ztj10)(PORT=46550))
Service "db01_XPT" has 1 instance(s).
  Instance "db01", status READY, has 1 handler(s)for this service...
   Handler(s):
     "DEDICATED" established:0 refused:0 state:ready
        LOCAL SERVER
The command completed successfully


LSNRCTL> serviceslistener1
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1530)))
Services Summary...
Service "dbtest" has 1 instance(s).
  Instance "db01", status UNKNOWN, has 1handler(s) for this service...
   Handler(s):
     "DEDICATED" established:0 refused:0
        LOCAL SERVER
The command completed successfully

LSNRCTL> exit

根据上面的信息我们可以看到,现在oracle动态注册到1521端口的监听器listener,而listener1是静态注册,监听器使用的端口是1530。接下来我们做出配置,让PMON进程动态注册到1530端口的监听器。

使用more命令,得到listener.ora文件里红色部分的内容
[oracle@ztj10 admin]$ morelistener.ora
# listener.ora Network Configuration File:/u01/app/oracle/product/10.2.0/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER1 =
  (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT =1530))
 )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC=
     (SID_NAME = PLSExtProc)
     (ORACLE_HOME = /u01/app/oracle/product/10.2.0)
     (PROGRAM = extproc)
    )
  )

SID_LIST_LISTENER1 =
  (SID_LIST =
    (SID_DESC=
     (GLOBAL_DBNAME = dbtest)
     (ORACLE_HOME = /u01/app/oracle/product/10.2.0)
     (SID_NAME = db01)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION=
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (DESCRIPTION=
     (ADDRESS = (PROTOCOL = TCP)(HOST = ztj10)(PORT = 1521))
    )
  )

编辑tnsnames.ora文件,把刚才拿到的内容做一下处理,如下红色部分
[oracle@ztj10 admin]$ vitnsnames.ora
# tnsnames.ora Network Configuration File:/u01/app/oracle/product/10.2.0/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DB01 =
  (DESCRIPTION =
    (ADDRESS =(PROTOCOL = TCP)(HOST = ztj10)(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = db01)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
   (CONNECT_DATA =
     (SID = PLSExtProc)
     (PRESENTATION = RO)
    )

local_l=(DESCRIPTION=
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT =1530))
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT =1530))
"tnsnames.ora" 28L, 627C written


修改数据库,把参数local_listener的值改为tnsnames.ora文件中刚刚做好的服务名local_l
[oracle@ztj10 admin]$ sqlplus / assysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Apr 22 03:06:072012
Copyright (c) 1982, 2005, Oracle.  All rightsreserved
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 -Production
With the Partitioning, OLAP and Data Mining options

SQL> alter systemset local_listener=local_l;
System altered.

SQL>alter systemregister;   
System altered.

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

再到监听器中观察,我们看到现在动态注册的信息到listener1中去了。现在PMONoracle动态注册到1530端口,1521端口不在有动态注册信息。
[oracle@ztj10 admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 22-APR-201203:06:27
Copyright (c) 1991, 2005, Oracle.  All rightsreserved.
Welcome to LSNRCTL, type "help" for information.

LSNRCTL> services
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1handler(s) for this service...
   Handler(s):
     "DEDICATED" established:0 refused:0
        LOCAL SERVER
The command completed successfully


LSNRCTL> serviceslistener1
Connecting to(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1530)))
Services Summary...
Service "db01" has 1 instance(s).
  Instance "db01", status READY, has 1 handler(s) for thisservice...
   Handler(s):
     "DEDICATED" established:0 refused:0 state:ready
        LOCAL SERVER
Service "db01XDB" has 1 instance(s).
  Instance "db01", status READY, has 1 handler(s) for thisservice...
   Handler(s):
     "D000" established:0 refused:0 current:0 max:1022 state:ready
        DISPATCHER <machine: ztj10, pid:21629>
        (ADDRESS=(PROTOCOL=tcp)(HOST=ztj10)(PORT=46550))
Service "db01_XPT" has 1 instance(s).
  Instance "db01", status READY, has 1 handler(s) for thisservice...
   Handler(s):
     "DEDICATED" established:0 refused:0 state:ready
        LOCAL SERVER
Service "dbtest" has 1 instance(s).
  Instance "db01", status UNKNOWN, has 1handler(s) for this service...
   Handler(s):
     "DEDICATED" established:0 refused:0
        LOCAL SERVER
The command completed successfully

0 0
原创粉丝点击