注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。
注册分:
1. 静态注册
2. 动态注册
静态注册
为了静态注册一个实例,我们需要在 listener.ora中添加相应监听器条目。
这里我们建立了两个LISTENER(LISTENER — 默认的,LISTENER1 - 自己新建的),服务名(全局数据库名)分别为test,test1。
下面是我的listener.ora文件的内容。位置: C:oracleproduct10.2.0db_1NETWORKADMINlistener.ora
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Tough)(PORT = 1521))
)SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = test)
(ORACLE_HOME = C:oracleproduct10.2.0db_1)
(SID_NAME = ora11g)
)
)
LISTENER1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = Tough)(PORT = 1522))
)SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = test1)
(ORACLE_HOME = C:oracleproduct10.2.0db_1)
(SID_NAME = ora11g)
)
)
C:>lsnrctl
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 07-4月 -2014 12:56:43
Copyright (c) 1991, 2005, Oracle. All rights reserved.
欢迎来到LSNRCTL, 请键入"help"以获得信息。
//可以查看lsnrctl下可以执行的命令,常用到的是start, stop, status, reload, services
LSNRCTL> help
以下操作可用
星号 (*) 表示修改符或扩展命令:
start stop status
services version reload
save_config trace change_password
quit exit set*
show*
//如果只输入start,则启动默认监听器 LISTENER
LSNRCTL> start LISTENER
启动tnslsnr: 请稍候...
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系统参数文件为c:oracleproduct10.2.0db_1
etworkadminlistener.ora
写入c:oracleproduct10.2.0db_1
etworkloglistener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Tough)(PORT=1521)))
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Tough)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期 07-4月 -2014 12:56:49
正常运行时间 0 天 0 小时 0 分 1 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 c:oracleproduct10.2.0db_1
etworkadminlistener.ora
监听程序日志文件 c:oracleproduct10.2.0db_1
etworkloglistener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Tough)(PORT=1521)))
服务摘要..
服务 "test" 包含 1 个例程。
例程 "ora11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
//如果只输入status,则查看默认监听器 LISTENER状态
LSNRCTL> status LISTENER
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Tough)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期 07-4月 -2014 12:56:49
正常运行时间 0 天 0 小时 1 分 9 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 c:oracleproduct10.2.0db_1
etworkadminlistener.ora
监听程序日志文件 c:oracleproduct10.2.0db_1
etworkloglistener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Tough)(PORT=1521)))
服务摘要..
服务 "ora11g" 包含 1 个例程。
例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "ora11gXDB" 包含 1 个例程。
例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "ora11g_XPT" 包含 1 个例程。
例程 "ora11g", 状态 READY, 包含此服务的 1 个处理程序...
服务 "test" 包含 1 个例程。
例程 "ora11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
蓝色部分是动态注册的监听器的状态。红色部分是我们静态注册的监听器的状态。
//若不是启动默认监听器 LISTENER,则需要指定启动的监听器
LSNRCTL> start LISTENER1
启动tnslsnr: 请稍候...
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
系统参数文件为c:oracleproduct10.2.0db_1
etworkadminlistener.ora
写入c:oracleproduct10.2.0db_1
etworkloglistener1.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Tough)(PORT=1522)))
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Tough)(PORT=1522)))
LISTENER 的 STATUS
------------------------
别名 LISTENER1
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期 07-4月 -2014 12:57:07
正常运行时间 0 天 0 小时 0 分 1 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 c:oracleproduct10.2.0db_1
etworkadminlistener.ora
监听程序日志文件 c:oracleproduct10.2.0db_1
etworkloglistener1.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Tough)(PORT=1522)))
服务摘要..
服务 "test1" 包含 1 个例程。
例程 "ora11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
LSNRCTL> status LISTENER1
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Tough)(PORT=1522)))
LISTENER 的 STATUS
------------------------
别名 LISTENER1
版本 TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
启动日期 07-4月 -2014 12:57:07
正常运行时间 0 天 0 小时 1 分 13 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 c:oracleproduct10.2.0db_1
etworkadminlistener.ora
监听程序日志文件 c:oracleproduct10.2.0db_1
etworkloglistener1.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Tough)(PORT=1522)))
服务摘要..
服务 "test1" 包含 1 个例程。
例程 "ora11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
建立好监听器后,我们还需要在客户端机器上的tnsnames.ora设置相关条目。位置:C:oracleproduct10.2.0db_1NETWORKADMIN nsnames.ora
A =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tough)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = test)
)
)
A1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tough)(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = test1)
)
)
测试静态注册的监听器:
C:>sqlplus /@a as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 4月 7 13:11:37 2014
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
C:>sqlplus /@a1 as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 4月 7 13:11:54 2014
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
连接成功!