Ho l'host, la porta, l'ID utente e la password ma manca SID per la connessione a Oracle DBMS. Come posso trovare l'elenco dei SID su quel server?Come ottenere l'elenco dei SID Oracle
risposta
Un modo migliore è, se si ha accesso al computer host e l'installazione di Oracle deve utilizzare il comando: lsnrctl status
. Funziona su macchine Unix, Linux e Windows. Il comando di stato mostrerà tutti gli ascoltatori (e i relativi SID associati).
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
Nell'esempio di cui sopra è possibile connettersi al database utilizzando il XE Conect Strings XEXDB, XE_XPT o XE.
La risposta breve è che è necessario accedere al sistema operativo host:
Per Unix, ps -ef | grep PMON vi mostrerà uno o più processi con nomi come ora_pmon_xxxx, e xxxx è il nome dell'istanza.
In Windows, credo che ci sia una firma simile nell'elenco delle attività.
In pratica, questa informazione viene in genere fornita da chiunque amministri il database quando viene creato l'account di connessione.
In Windows, SID non sarebbe visibile sotto taskmanager, si dovrà controllare i servizi in esecuzione (services.msc) per verificare la presenza di SID. Ad esempio: OracleServiceORCL supponendo che ORCL sia il SID – Sathya
Grazie - per i chiarimenti - nessuna esperienza sulla piattaforma Windows – dpbradley
La domanda si riduce a: quali ORACLE_SID o servizi sono supportati dal listener in esecuzione sulla porta X host Y. A seconda della sicurezza di questo listener è configurato, è possibile visualizzarlo utilizzando il comando lsnrctl da un client con lsnrctl installato. Per essere in grado di farlo, è necessaria l'installazione di un server Oracle su quel client. Quando si dispone che è possibile emettere
lsnrctl
set current_listener (description=(address=(host=X)(port=Y)(protocol=tcp)))
status
L'impostazione di default di chi ascolta 10g riempire causa il seguente risultato: TNS-01189: L'ascoltatore non ha potuto autenticare l'utente
Questo perché dal default Oracle 10g ha Sicurezza ON: Autenticazione SO locale che significa che solo l'utente del SO locale che ha avviato il listener può emettere i comandi lsnrctl al listener. L'ascoltatore si rifiuterà di rispondere a qualsiasi altro utente.
Un'altra opzione da considerare è il file/etc/oratab su Unix o il suo equivillo su Windows, che a mio avviso è un hive del Registro di sistema.
L'oratab dovrebbe elencare tutti i SID su un host, correntemente in esecuzione o meno.
Commento da @saritonin, che non ha i privilegi per commentare: "Si noti che/etc/oratab potrebbe non essere utile se $ Il parametro ORACLE_SID è il carattere jolly '*' ". –
C'è uno script nmap che forse potrebbe aiutare, Oracle-sid-bruta:
http://nmap.org/nsedoc/scripts/oracle-sid-brute.html
E 'stato installato con nmap sul mio sistema.
nmap --script oracle-sid-brute -p 1521-1560 [host]
Questo sarebbe utile solo se il SID può essere abbinato in un elenco. L'elenco predefinito è qui:
Avevo preso in considerazione questo approccio per la mia risposta, ma tecnicamente funziona solo se per il listener predefinito. L'approccio più complesso all'utilizzo di lsnrctl è prima di ottenere una lista di listener tramite ps-ef | grep lsnr, e quindi emettere il comando STATUS per ciascuno degli ascoltatori. Non volevo complicare eccessivamente la risposta dal momento che probabilmente il 99% delle installazioni utilizza l'impostazione predefinita del listener – dpbradley