在開發過程中我發現,數據庫必須通過大量的生活連接:獲取建立連接的IP地址到Oracle 11
SELECT username, COUNT(*) FROM v$session GROUP BY username;
爲了找到究竟是誰持有方面,我想獲得IP地址的列表。
在通用網絡搜索和閱讀official docs我建立查詢:
SELECT username, seconds_in_wait, machine, port, terminal, program, module, service_name
FROM v$session
WHERE type = 'USER';
其中machine
是select
最重要的部分。但不幸的是machine
字段顯示客戶端操作系統已知的主機名稱。
互聯網充滿推薦使用UTL_INADDR.GET_HOST_ADDRESS這是不適用於我的情況。首先是因爲ORA-24247:網絡訪問的訪問控制列表(ACL)並否認其次是因爲客戶端操作系統的主機名通常的/ etc /主機名定義,在我們的內部網不提供給DNS服務器.. 。
任何其他方式來檢索Oracle數據庫的開放會話的IP(數據庫實例在任何情況下都保存有關它的套接字的信息...)。
UPDATE
下我信任內網,但未知的網絡層次。
而我試圖找到哪些應用程序使用我的表(幾個應用程序服務器,我不知道他們全部)。其中一些過度使用連接並需要修復。但首先他們應該被確定...
您可以查詢'sys_context('USERENV','IP_ADDRESS')',但只能在用戶的會話中使用 - 所以對您嘗試執行的操作沒有幫助我想,除非您能夠添加登錄觸發器會將包含該值的會話信息記錄到您自己的審計表中? – 2013-02-25 14:38:37
嗯...我希望Oracle有一些易於查詢的內置解決方案... – gavenkoa 2013-02-25 14:46:14
獲取ACL的權限有什麼問題? – tbone 2013-02-25 14:47:34