listener启动与关闭

 查看SID是否启动OK命令:

echo $ORACLE_SID

监听器相关命令:

lsnrctl status --查看状态

lsnrctl start --启动

lsnrctl stop --关闭

lsnrctl reload --重启等于stop与start

lsnrctl service --启动服务

http://blog.itpub.net/95233/viewspace-623699/

http://blog.csdn.net/tianlesoftware/article/details/6617827

http://www.cnblogs.com/czjie/archive/2011/10/30/2228196.html

Oracle动态注册机制从ORACLE8I就已提供,以前在学习此部分内容时,理解得不够透彻,似是而非,没有真正掌握。

最近重新学习了一下此部分内容,并查阅了一些文档,初有成就。现小结一下:

测试环境:

操作系统:RHEL4.6

数据库:ORACLE10G 10.2.0.4

一、首先要理解基本概念

1、  Oracle的监听器和实例,是完全独立开的。

2、  实例必须要注册到某一个或多个实例上,这样远程用户方可连上。

3、  端口号,是由监听器决定的。远程连接的端口,必须要跟监听器的端口一致。

二、实践测试

1、  测试用例1,创建第一个监听器(PROTOCOL=TCPHOST=linux1、端口号为1521),创建第一个实例ORCL,其自动注册到PROTOCOL=TCPHOST=linux1、端口号为1521的监听器上。

 

Listener.ora内容如下:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /opt/ora10g/product/10.2.0)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = ORCL)

      (ORACLE_HOME = /opt/ora10g/product/10.2.0)

      (SID_NAME = ORCL)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = linux1)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

 

首先启动监听器LISTENER

[oracle@linux1 ~]$ lsnrctl status

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:07:58

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

TNS-12541: TNS: 无监听程序

 TNS-12560: TNS: 协议适配器错误

  TNS-00511: 无监听程序

   Linux Error: 111: Connection refused

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))

TNS-12541: TNS: 无监听程序

 TNS-12560: TNS: 协议适配器错误

  TNS-00511: 无监听程序

   Linux Error: 111: Connection refused

[oracle@linux1 ~]$ lsnrctl start

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:09:25

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

启动/opt/ora10g/product/10.2.0/bin/tnslsnr: 请稍候...

 

TNSLSNR for Linux: Version 10.2.0.4.0 - Production

系统参数文件为/opt/ora10g/product/10.2.0/network/admin/listener.ora

写入/opt/ora10g/product/10.2.0/network/log/listener.log的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:09:27

正常运行时间              0 0 小时 0 1

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

服务摘要..

服务 "ORCL" 包含 1 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

 

然后,启动数据库实例ORCL

[oracle@linux1 ~]$ export ORACLE_SID=ORCL

[oracle@linux1 ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12 27 22:11:41 2009

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

已连接到空闲例程。

 

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area  268435456 bytes

Fixed Size                  1266968 bytes

Variable Size              88083176 bytes

Database Buffers          176160768 bytes

Redo Buffers                2924544 bytes

数据库装载完毕。

数据库已经打开。

SQL> exit

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

 

再查看监听器状态:

[oracle@linux1 ~]$ lsnrctl status

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:12:53

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:09:27

正常运行时间              0 0 小时 3 26

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

服务摘要..

服务 "ORCL" 包含 2 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "ORCL_XPT" 包含 1 个例程。

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

[oracle@linux1 ~]$ lsnrctl service

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:13:06

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

服务摘要..

服务 "ORCL" 包含 2 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已被拒绝:0

         LOCAL SERVER

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "ORCL_XPT" 包含 1 个例程。

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已被拒绝:0

         LOCAL SERVER

命令执行成功

 

此时实例ORCL已自动注册到监听器LISTENER上。实例ORCL既有静态注册也有动态注册。

 

 

 

2、  测试用例2,创建第二个实例ORCL1522,其也自动注册到PROTOCOL=TCPHOST=linux1、端口号为1521的监听器上。

 

LISTENER.ORA文件内容没有变化:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /opt/ora10g/product/10.2.0)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = ORCL)

      (ORACLE_HOME = /opt/ora10g/product/10.2.0)

      (SID_NAME = ORCL)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = linux1)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

 

 

启动实例orcl1522

[oracle@linux1 admin]$ export ORACLE_SID=orcl1522

[oracle@linux1 admin]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12 27 22:19:16 2009

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

已连接到空闲例程。

 

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area  268435456 bytes

Fixed Size                  1266968 bytes

Variable Size             100666088 bytes

Database Buffers          163577856 bytes

Redo Buffers                2924544 bytes

数据库装载完毕。

数据库已经打开。

SQL> exit

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

 

查看监听器LISTENER状态:

[oracle@linux1 admin]$ lsnrctl status

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:19:39

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:09:27

正常运行时间              0 0 小时 10 12

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

服务摘要..

服务 "ORCL" 包含 2 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "ORCL_XPT" 包含 1 个例程。

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "orcl1522" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

服务 "orcl1522_XPT" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

命令执行成功

[oracle@linux1 admin]$ lsnrctl service

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:19:49

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

服务摘要..

服务 "ORCL" 包含 2 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已被拒绝:0

         LOCAL SERVER

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "ORCL_XPT" 包含 1 个例程。

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已被拒绝:0

         LOCAL SERVER

服务 "orcl1522" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "orcl1522_XPT" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

命令执行成功

 

此时实例和实例均已注册到监听器LISTENER上,其中实例ORCL既有静态注册也有动态注册,实例orcl1522只有动态注册。

 

3、  测试用例3,创建第二个监听器(PROTOCOL=TCPHOST=linux1、端口号为1522),同时修改第二个数据库ORCL1522local_listener(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1522))

 

创建完第二个监听器LISTENER1522后,LISTENER.ORA文件的内容如下:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /opt/ora10g/product/10.2.0)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = ORCL)

      (ORACLE_HOME = /opt/ora10g/product/10.2.0)

      (SID_NAME = ORCL)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = linux1)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

 

LISTENER1522 =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1522))

    )

  )

 

同时在服务器端的TNSNAMES.ORA文件中增加一下内容:

listener1522=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1522))

 

启动实例orcl1522

[oracle@linux1 admin]$ export ORACLE_SID=orcl1522

[oracle@linux1 admin]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12 27 22:19:16 2009

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

已连接到空闲例程。

 

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area  268435456 bytes

Fixed Size                  1266968 bytes

Variable Size             100666088 bytes

Database Buffers          163577856 bytes

Redo Buffers                2924544 bytes

数据库装载完毕。

数据库已经打开。

SQL> exit

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

 

修改参数LOCAL_LISTENER,然后重启实例:

[oracle@linux1 admin]$ export ORACLE_SID=orcl1522

[oracle@linux1 admin]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12 27 22:22:18 2009

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

 

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> show parameter listener

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

local_listener                       string

remote_listener                      string

SQL> alter system set local_listener='listener1522';

 

系统已更改。

 

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area  268435456 bytes

Fixed Size                  1266968 bytes

Variable Size             100666088 bytes

Database Buffers          163577856 bytes

Redo Buffers                2924544 bytes

数据库装载完毕。

数据库已经打开。

SQL> exit

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

 

查看默认监听器LISTENER状态:

[oracle@linux1 admin]$ lsnrctl status

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:23:56

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:09:27

正常运行时间              0 0 小时 14 28

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

服务摘要..

服务 "ORCL" 包含 2 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "ORCL_XPT" 包含 1 个例程。

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

此时监听器上只有ORCL实例,原来注册的实例orcl1522已去掉。

 

启动新的监听器LISTENER1522,同时启动它:

[oracle@linux1 admin]$ lsnrctl

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:24:11

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

欢迎来到LSNRCTL, 请键入"help"以获得信息。

 

LSNRCTL> set current_listener listener1522

目前的监听程序为 listener1522

LSNRCTL> status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))

TNS-12541: TNS: 无监听程序

 TNS-12560: TNS: 协议适配器错误

  TNS-00511: 无监听程序

   Linux Error: 111: Connection refused

LSNRCTL> start

启动/opt/ora10g/product/10.2.0/bin/tnslsnr: 请稍候...

 

TNSLSNR for Linux: Version 10.2.0.4.0 - Production

系统参数文件为/opt/ora10g/product/10.2.0/network/admin/listener.ora

写入/opt/ora10g/product/10.2.0/network/log/listener1522.log的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))

 

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))

LISTENER STATUS

------------------------

别名                      listener1522

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:24:48

正常运行时间              0 0 小时 0 0

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener1522.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))

监听程序不支持服务

命令执行成功

LSNRCTL> status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))

LISTENER STATUS

------------------------

别名                      listener1522

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:24:48

正常运行时间              0 0 小时 0 7

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener1522.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))

监听程序不支持服务

命令执行成功

LSNRCTL> exit

 

监听器LISTENER1522刚启动时,实例orcl1522尚未注册,需手工到实例中注册一下(alter system register),或者等一下由实例的PMON进程自动注册到监听器LISTENER1522上。

[oracle@linux1 admin]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12 27 22:25:11 2009

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

 

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> alter system register;

 

系统已更改。

 

SQL> exit

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

 

查看监听器LISTENER1522状态:

[oracle@linux1 admin]$ lsnrctl

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:25:24

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

欢迎来到LSNRCTL, 请键入"help"以获得信息。

 

LSNRCTL> set current_listener listener1522

目前的监听程序为 listener1522

LSNRCTL> status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))

LISTENER STATUS

------------------------

别名                      listener1522

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:24:48

正常运行时间              0 0 小时 0 54

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener1522.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))

服务摘要..

服务 "orcl1522" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

服务 "orcl1522_XPT" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

命令执行成功

LSNRCTL> service

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))

服务摘要..

服务 "orcl1522" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "orcl1522_XPT" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

命令执行成功

LSNRCTL> set cuurent_listener listener

NL-00853: 未定义的  set 命令 "cuurent_listener"。请尝试 "help set"

LSNRCTL> set current_listener listener

目前的监听程序为 listener

LSNRCTL> status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:09:27

正常运行时间              0 0 小时 17 12

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

服务摘要..

服务 "ORCL" 包含 2 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "ORCL_XPT" 包含 1 个例程。

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

LSNRCTL> exit

此时发现实例orcl1522已注册到监听器LISTENER1522上,实例ORCL注册到监听器LISTENER上。同时,实例orcl1522均为动态注册,实例ORCL既有动态注册也有静态注册。

 

再在实例orcl1522中去掉参数local_listener的值:

[oracle@linux1 admin]$ sqlplus / as sysdba

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期日 12 27 22:27:40 2009

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

 

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> alter system set local_listener='';

 

系统已更改。

 

SQL> exit

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

 

分别查看监听器LISTENER1522LISTENER状态:

[oracle@linux1 admin]$ lsnrctl

 

LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-12-2009 22:27:59

 

Copyright (c) 1991, 2007, Oracle.  All rights reserved.

 

欢迎来到LSNRCTL, 请键入"help"以获得信息。

 

LSNRCTL> set current_listener listener1522

目前的监听程序为 listener1522

LSNRCTL> status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))

LISTENER STATUS

------------------------

别名                      listener1522

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:24:48

正常运行时间              0 0 小时 3 28

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener1522.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1522)))

监听程序不支持服务

命令执行成功

LSNRCTL> set current_listener listener

目前的监听程序为 listener

LSNRCTL> status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

LISTENER STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNR for Linux: Version 10.2.0.4.0 - Production

启动日期                  27-12-2009 22:09:27

正常运行时间              0 0 小时 19 13

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /opt/ora10g/product/10.2.0/network/admin/listener.ora

监听程序日志文件          /opt/ora10g/product/10.2.0/network/log/listener.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux1)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

服务摘要..

服务 "ORCL" 包含 2 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "ORCL_XPT" 包含 1 个例程。

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "orcl1522" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

服务 "orcl1522_XPT" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

命令执行成功

LSNRCTL> service

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux1)(PORT=1521)))

服务摘要..

服务 "ORCL" 包含 2 个例程。

  例程 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已被拒绝:0

         LOCAL SERVER

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "ORCL_XPT" 包含 1 个例程。

  例程 "ORCL", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已被拒绝:0

         LOCAL SERVER

服务 "orcl1522" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

服务 "orcl1522_XPT" 包含 1 个例程。

  例程 "orcl1522", 状态 READY, 包含此服务的 1 个处理程序...

    处理程序:

      "DEDICATED" 已建立:0 已拒绝:0 状态:ready

         LOCAL SERVER

命令执行成功

LSNRCTL>

 

实例orcl1522去掉local_listener参数值后,其马上重新自动注册到默认监听器LISTENER上。

 

三、总结

1、  数据库时自动注册时,监听器必须满足三条件:PROTOCOL=TCPHOST=本机电脑名(或为localhost),PORT=1521。这三个条件只有有一个不满足,实例都不能自动注册。

2、  采用自动注册时,监听器配置中的HOST=?,需要设置为其电脑的机器名(或为localhost),不要直接设置为IP地址。否则,对于第一个实例而言,其就无法自动注册到1521这个监听器上。

3、  同一个监听器可以监听多个实例,都是TCP、端口号1521。见测试用例2

4、  在一台配置多个监听器的电脑上,本地的一个实例能够注册到的本地监听器只能有一个。见测试用例3

5、  一个实例除了可注册到本地的监听器外,还可通过remote_listener注册到远程服务器上。主要的应用为RAC数据库,用例请参见http://space.itpub.net/9252210/viewspace-592111

 

参考文档:

1eygle_第一章数据库的启动和关闭.pdf

 

2http://warehouse.itpub.net/post/777/472788

 

3http://space.itpub.net/9252210/viewspace-592111

 

4http://space.itpub.net/175005/viewspace-173527

 

5http://www.lorentzcenter.nl/awcourse/oracle/network.920/a96580/listener.htm

posted @ 2015-04-03 13:20  vikingwei  阅读(3657)  评论(0编辑  收藏  举报