手动更改oracle监听,详解Oracle数据库手动注册监听的方法

本文主要介绍了为一个Oracle数据库(t02)配置多个监听(listener)的实验,过程有点小曲折。通过这个实验让我们来学习一下如何手动注册监听。以下是演示的过程。

1.新增两个测试的监听,listener.ora的配置内容(可纯手动编辑该文件或使用netca)如下:

(LISTENER为系统原有;L1、L2为测试用新增的监听)

# listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora

# Generated by Oracle configuration tools.

L2=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS= (PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523))

)

)

L1=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS= (PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522))

)

)

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=D:\oracle\product\10.2.0\db_1)

(PROGRAM=extproc)

)

)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS= (PROTOCOL=IPC)(KEY=EXTPROC1))

(ADDRESS= (PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1521))

)

)

2.配置tnsnames.ora,使数据库(t02)可同时使用以上3个监听:

# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

T01=

(DESCRIPTION=

(ADDRESS= (PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1521))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=t01)

)

)

T02=

(DESCRIPTION=

(ADDRESS= (PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1521))

(ADDRESS= (PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522))

(ADDRESS= (PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=t02)

)

)

EXTPROC_CONNECTION_DATA=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS= (PROTOCOL=IPC)(KEY=EXTPROC1))

)

(CONNECT_DATA=

(SID=PLSExtProc)

(PRESENTATION=RO)

)

)

3.检查及测试,发现问题:

检查的时候发现除了默认的LISTENER监听外,L1和L2始终不能注册服务:

C:\>lsnrctl

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 24-7月 -2011 22:19:24

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

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

LSNRCTL>status

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

LISTENER 的 STATUS

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

别名                      LISTENER

版本

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

启动日期                  24-7月 -2011 22:14:18

正常运行时间              0 天 0 小时 5 分 13 秒

跟踪级别                  off

安全性

ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora

监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\listener.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1521)))

服务摘要..

服务 "+ASM_XPT" 包含 1 个例程。

例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...

服务 "+asm" 包含 1 个例程。

例程 "+asm", 状态 BLOCKED, 包含此服务的 1 个处理程序...

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

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

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

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

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

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

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

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

命令执行成功

LSNRCTL>stop

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

命令执行成功

LSNRCTL>set curr L1

目前的监听程序为 L1

LSNRCTL>status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))

LISTENER 的 STATUS

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

别名                      L1

版本

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

启动日期                  24-7月 -2011 22:14:19

正常运行时间              0 天 0 小时 5 分 26 秒

跟踪级别                  off

安全性

ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora

监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l1.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))

监听程序不支持服务

命令执行成功

LSNRCTL>set curr L2

目前的监听程序为 L2

LSNRCTL>status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))

LISTENER 的 STATUS

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

别名                      L2

版本

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

启动日期                  24-7月 -2011 22:14:19

正常运行时间              0 天 0 小时 5 分 38 秒

跟踪级别                  off

安全性

ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora

监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l2.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))

监听程序不支持服务

命令执行成功

停止了默认的LISTENER监听后,使用tns进行连接测试的时候报错(ORA-12514):

C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:20:06 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

ERROR:

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

4.分析问题:

一阵google之后发现,如果默认端口不是1521,则需要设置LOCAL_LISTENER来手动指定监听别名:

When configuring the listener to listen on TCP/IP, you should enter the default port of 1521. If you do not,

you must configure the LOCAL_LISTENER parameter in the intialization parameter file and resolve the listener name through a naming method.

http://download.oracle.com/docs/cd/B13789_01/network.101/b10775/listenercfg.htm

5.解决问题(此处的T02为step 2的tnsnames.ora里面的T02):

C:\Documents and Settings\Administrator>setoracle_sid=t02

C:\Documents and Settings\Administrator>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:21:55 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到空闲例程。

SQL>select status,instance_name from v$instance;

STATUS                   INSTANCE_NAME

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

OPEN                     t02

SQL>alter system setlocal_listener="T02";

系统已更改。

SQL>

C:\Documents and Settings\Administrator>setoracle_sid=t02

C:\Documents and Settings\Administrator>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:21:55 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已连接到空闲例程。

SQL>select status,instance_name from v$instance;

STATUS INSTANCE_NAME

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

OPEN t02

SQL>alter system setlocal_listener="T02";

系统已更改。

SQL>

6.验证,再测试:

验证,发现L1、L2已能正常注册服务:

LSNRCTL>set curr L1

目前的监听程序为 L1

LSNRCTL>status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1522)))

LISTENER 的 STATUS

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

别名                      L1

版本

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

启动日期                  24-7月 -2011 22:14:19

正常运行时间              0 天 0 小时 32 分 54 秒

跟踪级别                  off

安全性

ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora

监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l1.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1522)))

服务摘要..

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

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

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

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

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

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

命令执行成功

LSNRCTL>set curr L2

目前的监听程序为 L2

LSNRCTL>status

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC1255-20110528)(PORT=1523)))

LISTENER 的 STATUS

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

别名                      L2

版本

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

启动日期                  24-7月 -2011 22:14:19

正常运行时间              0 天 0 小时 33 分 6 秒

跟踪级别                  off

安全性

ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          D:\oracle\product\10.2.0\db_1\network\admin\listener.ora

监听程序日志文件          D:\oracle\product\10.2.0\db_1\network\log\l2.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC1255-20110528)(PORT=1523)))

服务摘要..

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

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

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

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

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

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

命令执行成功

LSNRCTL>

再测试,发现scott用户能够正常登录:

C:\Documents and Settings\Administrator>sqlplus scott/tiger@t02

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 24 22:24:43 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, OLAP and Data Mining options

SQL>

7.总结

当监听的端口是默认的1521时,PMON会动态注册该监听(listener);

当监听的端口不是默认的1521时,需要使用alter system set local_listener="T02";来手动注册监听。

关于Oracle数据库注册监听的知识就介绍到这里,希望能带给您一些收获!

【编辑推荐】

【责任编辑:赵鹏 TEL:(010)68476606】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值