ber*_*d_k 13 oracle-11g listener
我可以使用以下 listener.ora 访问 ORACLE 11g 服务器
# listener.ora Network Configuration File: D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.111)(PORT = 1521))
)
)
Run Code Online (Sandbox Code Playgroud)
它为该服务器上的所有实例提供服务,我可以通过以下方式验证
lsnrctl status
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我在虚拟机中全新安装 Oracle 11g 时,我必须使用 listener.ora 之类的
# listener.ora Network Configuration File: C:\app\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = BMBK)
(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1)
(SID_NAME = BMBK)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 169.254.200.102)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\oracle
Run Code Online (Sandbox Code Playgroud)
没有 SID_LIST_LISTENER 实体,即使用我得到的另一台服务器上的 listener.ora
C:\Windows\system32>lsnrctl status
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 27-NOV-2011 10:14
:24
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Anmeldung bei (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS des LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ
ction
Startdatum 27-NOV-2011 10:14:08
Uptime 0 Tage 0 Std. 0 Min. 18 Sek.
Trace-Ebene off
Sicherheit ON: Local OS Authentication
SNMP OFF
Parameterdatei des Listener C:\app\oracle\product\11.2.0\dbhome_1\network\admin\
listener.ora
Log-Datei des Listener c:\app\oracle\diag\tnslsnr\WSV-BK-W7en64-S\listener\al
ert\log.xml
Zusammenfassung Listening-Endpunkte...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=169.254.200.102)(PORT=1521)))
Der Listener unterst³tzt keine Services
Der Befehl wurde erfolgreich ausgef³hrt.
Run Code Online (Sandbox Code Playgroud)
最后一条消息翻译成
侦听器不支持任何服务。
我不知道为什么这两个服务器的行为不同。我在配置文件和注册表项中都没有发现任何提示。
编辑:
我想答案就在Burleson Consulting 的这篇文章中的某个地方,但我没有找到它实际配置的位置。
Ale*_*ole 14
这个派对有点晚了......
数据库应自动向侦听器注册,使SID_LIST条目变得多余,而这似乎发生在您的192.168.111.111环境中。如果侦听器在数据库之后启动,它可能需要一段时间才能注册,并且可能会出现根本不注册的情况。
您可以尝试使用alter system register命令进行注册。数据库使用该LOCAL_LISTENER参数来标识它应该注册的侦听器。默认情况下,它是 null,根据文档,它相当于hostname:1521.
如果alter system register没有使服务出现在lsnrctl status输出中,那么我怀疑它无法识别主机名或解析它,或者它解析的地址与侦听器所在的地址不同,或者LOCAL_LISTENER设置为无效的虚拟盒子。您可以将 设置为直接LOCAL_LISTENER匹配listener.ora,例如:
alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' scope=both;
alter system register;
Run Code Online (Sandbox Code Playgroud)
或者您可以使用在您的tnsnames.ora. 例如,如果您添加如下tnsnames.ora条目:
MY_LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
Run Code Online (Sandbox Code Playgroud)
那么你可以:
alter system set local_listener='MY_LISTENER' scope=both;
alter system register;
Run Code Online (Sandbox Code Playgroud)
tnsnames.ora除了简洁之外,我能看到使用该版本的唯一真正优势是您可以更改 SQL*Net 文件中的配置,而不是数据库中的配置;甚至如果您在机器之间克隆数据库,或者让您的侦听器和数据库在不同帐户下运行(例如,grid使用 RAC/HA 用户),那么这似乎真的很有用。
还有更多的LOCAL_LISTENER 在这里。
编辑:而且这似乎相当全面。
| 归档时间: |
|
| 查看次数: |
142685 次 |
| 最近记录: |