How to obtain the list of Oracle's SIDs

48,513

Solution 1

A better way is, if you have access to the host machine and the Oracle install is to use the command: lsnrctl status. This works on both Unix, Linux, and Windows machines. The status command will show you all the listeners (and their associated 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

In the above example you can connect to the XE database using the Conect Strings XEXDB, XE_XPT or XE.

Solution 2

The short answer is that you need access to the host OS:

For Unix, ps -ef | grep pmon will show you one or more processes with names like ora_pmon_xxxx, and xxxx is the instance name.

In Windows I guess there is a similar signature in the task list.

In practice, this information is usually given to you by whoever administers the database when your connecting account is created.

Solution 3

The question comes down to : which ORACLE_SID's or services are supported by the listener that is running on host X port Y. Depending on how secure this listener is configured you can see this using the lsnrctl command from a client that has lsnrctl installed. To be able to do this you do need an oracle server installation on that client. When you have that you can issue

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

The default setting of the 10g listener fill cause the following result: TNS-01189: The listener could not authenticate the user

This is because from 10g oracle default has Security ON: Local OS Authentication meaning that only the local OS user that started the listener can issue lsnrctl commands to the listener. The listener will refuse to answer any other user.

Solution 4

Another option to consider is the file /etc/oratab on Unix or its equivilent on Windows, which I think is a registry hive.

The oratab should list all SIDs on a host, whether currently running or not.

Solution 5

There is an nmap script that maybe could help, oracle-sid-brute:

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

It was installed with nmap on my system.

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

This would only help if the SID can be matched in a list. The default list is here:

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

Share:
48,513
Roman Kagan
Author by

Roman Kagan

Roman started working as a programmer as a teenager when he was hired to hack Prolog at a Minsk artificial intelligence lab. Roman was one of the first developers using Java to create web applications. Since 1991, Roman has been consulting for companies including Hewlett-Packard, EDS, GM, Ford, Chrysler, Fanuc Robotics, Comerica and Polk.

Updated on May 03, 2020

Comments

  • Roman Kagan
    Roman Kagan almost 4 years

    I have the host, port, user id and password but missing SID for connecting to Oracle DBMS. How can I find the list of SIDs on that server?