我有主机名、端口号、用户ID和密码,但是缺少连接到Oracle DBMS所需的SID。如何在该服务器上找到SID列表?
我有主机名、端口号、用户ID和密码,但是缺少连接到Oracle DBMS所需的SID。如何在该服务器上找到SID列表?
更好的方法是,如果您可以访问主机并且已安装Oracle,则使用命令:lsnrctl status
。这适用于Unix、Linux和Windows机器。状态命令将显示所有侦听器(及其关联的SIDs)。
C:\>lsnrctl status
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-JUN-2009 16:16:34
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
Start Date 13-JUN-2009 12:04:14
Uptime 2 days 4 hr. 12 min. 19 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File C:\oracle\XE\app\oracle\product\10.2.0\server\network\admin\listener.ora
Listener Log File C:\oracle\XE\app\oracle\product\10.2.0\server\network\log\listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ThinkpadT61)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "XE_XPT" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "xe" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
The command completed successfully
在上面的例子中,你可以使用连接字符串XEXDB、XE_XPT或XE连接到XE数据库。
ps -ef | grep pmon
将向您显示一个或多个名称类似于ora_pmon_xxxx
的进程,其中xxxx
是实例名称。lsnrctl
set current_listener (description=(address=(host=X)(port=Y)(protocol=tcp)))
status
10g监听器的默认设置会导致以下结果:
TNS-01189:监听程序无法验证用户
这是因为从10g开始,Oracle默认启用了本地操作系统身份验证的安全性,意味着只有启动监听器的本地操作系统用户才能向监听器发出lsnrctl命令。监听器将拒绝回答其他任何用户。
有一个nmap脚本可能会有所帮助,名为oracle-sid-brute:
http://nmap.org/nsedoc/scripts/oracle-sid-brute.html
它已经在我的系统上安装了nmap。
nmap --script oracle-sid-brute -p 1521-1560 [host]