如何获取Oracle的SID列表

时间:2009-06-15 19:28:33

标签: oracle jdbc connection

我有主机,端口,用户ID和密码但缺少连接到Oracle DBMS的SID。如何在该服务器上找到SID列表?

5 个答案:

答案 0 :(得分:19)

更好的方法是,如果您有权访问主机,并且Oracle安装是使用命令:lsnrctl status。这适用于Unix,Linux和Windows机器。 status命令将显示所有侦听器(及其关联的SID)。

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

在上面的示例中,您可以使用Conect Strings XEXDB,XE_XPT或XE连接到XE数据库。

答案 1 :(得分:5)

简短的回答是您需要访问主机操作系统:

对于Unix,ps -ef | grep pmon将显示一个或多个名称为ora_pmon_xxxx的进程,而xxxx是实例名称。

在Windows中,我猜任务列表中有类似的签名。

实际上,这些信息通常由创建连接帐户时管理数据库的人员提供。

答案 2 :(得分:3)

问题归结为:在主机X端口Y上运行的侦听器支持哪些ORACLE_SID或服务。根据此侦听器配置的安全性,您可以使用安装了lsnrctl的客户端的lsnrctl命令查看此信息。 。为了能够这样做,您需要在该客户端上安装oracle服务器。如果有,你可以发出

lsnrctl
set current_listener (description=(address=(host=X)(port=Y)(protocol=tcp)))
status

10g侦听器填充的默认设置会导致以下结果: TNS-01189:监听器无法验证用户

这是因为从10g oracle默认有 安全性ON:本地OS身份验证 意味着只有启动侦听器的本地OS用户才能向侦听器发出lsnrctl命令。听众将拒绝回答任何其他用户。

答案 3 :(得分:2)

要考虑的另一个选择是Unix上的文件/ etc / oratab或Windows上的等效项,我认为它是一个注册表配置单元。

oratab应列出主机上的所有SID,无论当前是否正在运行。

答案 4 :(得分:1)

有一个可能有帮助的nmap脚本,oracle-sid-brute:

http://nmap.org/nsedoc/scripts/oracle-sid-brute.html

它在我的系统上安装了nmap。

nmap --script oracle-sid-brute -p 1521-1560 [host]

这只有在SID可以在列表中匹配时才有用。默认列表如下:

http://www.red-database-security.com/scripts/sid.txt