我有主機,端口,用戶標識和密碼但缺少連接到Oracle DBMS的SID。如何找到該服務器上的SID列表?如何獲取Oracle的SID列表
回答
更好的方法是,如果您有權訪問主機並且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字符串XEXDB,XE_XPT或XE的XE數據庫。
簡短的回答是,你需要訪問主機操作系統:
對於Unix,PS英法| grep的PMON會顯示你喜歡的名字ora_pmon_xxxx一個或多個進程,而xxxx是實例名稱。
在Windows中,我猜在任務列表中有類似的簽名。
實際上,這些信息通常由您在創建連接帳戶時管理數據庫的人員給您提供。
問題歸結爲:在主機X端口Y上運行的偵聽器支持哪些ORACLE_SID或服務。根據此偵聽器配置的安全性,您可以使用lsnrctl命令從具有lsnrctl的客戶端安裝。爲了能夠做到這一點,你需要在該客戶端安裝一個oracle服務器。當你有,你可以發出
lsnrctl
set current_listener (description=(address=(host=X)(port=Y)(protocol=tcp)))
status
各10g監聽器的默認設置填充會導致以下結果: TNS-01189:監聽器無法驗證用戶
這是因爲從10G甲骨文默認有 安全開啓:本地操作系統認證 這意味着只有啓動偵聽程序的本地操作系統用戶才能向偵聽程序發出lsnrctl命令。聽衆將拒絕回答任何其他用戶。
另一個需要考慮的選擇是Unix上的文件/ etc/oratab或Windows上的equivilent,我認爲這是一個註冊表配置單元。
oratab應列出主機上的所有SID,無論目前是否在運行。
有一個nmap的腳本,也許能幫上忙,Oracle的SID-蠻力:
http://nmap.org/nsedoc/scripts/oracle-sid-brute.html
它被安裝與我的系統上的nmap。
nmap --script oracle-sid-brute -p 1521-1560 [host]
這隻會幫助如果SID可以在列表中匹配。默認列表是在這裏:
- 1. Oracle SID INS-35075 - 保持相同的SID
- 2. 如何更改Oracle XE實例的SID
- 3. 如何獲取oracle模式中的外部表的列表11g
- 4. 如何在Java應用程序中獲取計算機上的SID列表
- 5. 我如何獲得Twilio SID?
- 6. Oracle:獲取用戶的功能列表
- 7. PHP LDAP獲取用戶SID
- 8. SoundManager/jquery:獲取SoundID sID
- 9. 如何獲取oracle中的包中的函數列表
- 10. 如何在Oracle中獲取主鍵列?
- 11. 如何在oracle中獲取未知列
- 12. 如何獲取Oracle數據庫中的鎖定用戶列表?
- 13. 如何獲取列表的列表?
- 14. 如何從Oracle中的給定列表中獲取不存在記錄列表
- 15. 通過傳遞的SID的值獲取
- 16. 如何在oracle中獲取所有表名及其列名?
- 17. oracle ucm:如何獲取用戶組和角色列表?
- 18. 如何獲取字段列表參與SQL for Oracle?
- 19. 獲取服務中的用戶SID
- 20. 從RSOP_Session獲取SID的標題SecurityGroups
- 21. 如何從列表中獲取列表
- 22. 如何獲取當前Windows帳戶的SID?
- 23. 如何獲取給定SID的用戶配置文件?
- 24. 給定用戶的SID,如何獲取AD DirectoryEntry?
- 25. 如何獲取列表
- 26. 如何獲取值列表?
- 27. 如何獲取列表
- 28. 如何獲取表列值?
- 29. 如何獲取列表
- 30. 如何從Oracle中的字符串序列列中獲取值?
我曾考慮過這種方法作爲我的答案,但從技術上講,這隻適用於默認偵聽器。使用lsnrctl更復雜的方法是首先通過ps -ef | grep lsnr獲取監聽器列表,然後爲每個監聽器發出STATUS命令。不想過分複雜的答案,因爲可能99%的安裝使用默認偵聽器設置 – dpbradley 2009-06-15 20:43:09