2012-08-16 41 views
1

有沒有辦法找到使用數據庫鏈接訪問我們的Oracle數據庫的數據庫的詳細信息? Dba_db_links擁有關於我們在數據庫中訪問其他數據庫的數據庫鏈接的信息,但是有沒有類似的表格可以從哪裏找到訪問我們數據庫的數據庫鏈接,或者記錄在哪裏?其他數據庫使用數據庫鏈接訪問我們的Oracle數據庫的詳細信息

在此先感謝。

+0

有可能是沒有這樣的'DBA_'表,所以最好的辦法是監測'V $ sql'和'@ link'會議'V $ session'意見。 – Annjawn 2012-08-16 16:49:58

回答

1

當您創建一個指向數據庫B數據庫中的數據庫鏈接,沒有發送到數據庫B通知所以在B沒有數據字典表,將告訴你,有一個鏈接到它。就B而言,數據庫A只是另一個定期打開與數據庫的連接的客戶端。

通常,當A想要創建一個到B的數據庫鏈接時,爲此目的將在B中創建一個用戶(假設數據庫鏈接使用固定用戶而不是當前用戶),因爲您不需要密碼因爲此帳戶會定期失效,並且您不希望數據庫鏈接在特定人員離開公司並刪除其帳戶時被破壞。您可以審覈B上的連接,無論是爲數據庫鏈接還是跨所有用戶創建的特定帳戶,然後查看審覈日誌以識別來自容納其他數據庫的服務器的連接。

2

我同意賈斯汀,那有沒有辦法來確定具有數據庫鏈接到一個給定的數據庫中的所有數據庫的顯式列表。

但是,它可能監測活動數據庫鏈接。您可以使用下面的查詢,看看是什麼會議通過數據庫鏈接,並從該數據庫:

-- who is querying via dblink? 
-- Courtesy of Tom Kyte, via AskTom 
-- this script can be used at both ends of the database link 
-- to match up which session on the remote database started 
-- the local transaction 
-- the GTXID will match for those sessions 
-- just run the script on both databases 

Select /*+ ORDERED */ 
substr(s.ksusemnm,1,10)||'-'|| substr(s.ksusepid,1,10)  "ORIGIN", 
substr(g.K2GTITID_ORA,1,35) "GTXID", 
substr(s.indx,1,4)||'.'|| substr(s.ksuseser,1,5) "LSESSION" , 
s2.username, 
substr(
    decode(bitand(ksuseidl,11), 
     1,'ACTIVE', 
     0, decode(bitand(ksuseflg,4096) , 0,'INACTIVE','CACHED'), 
     2,'SNIPED', 
     3,'SNIPED', 
     'KILLED' 
    ),1,1 
) "S", 
substr(w.event,1,10) "WAITING" 
from x$k2gte g, x$ktcxb t, x$ksuse s, v$session_wait w, v$session s2 
where g.K2GTDXCB =t.ktcxbxba 
and g.K2GTDSES=t.ktcxbses 
and s.addr=g.K2GTDSES 
and w.sid=s.indx 
and s2.sid = w.sid; 

希望有所幫助。

+0

謝謝所有,它看起來像監測會議是唯一的選擇。會嘗試一下。 – Law 2012-08-17 13:08:54

0

您可能正在尋找這個。

第1步:檢查X數據庫中會話的hash_value。 從v $ session中選擇sql_hash_value其中sid = &sid;

第2步:檢查SQL數據庫中SQL會話的會話的完整SQL。 從v $ sql中選擇sql_fulltext,其中hash_value = & hash_value;

第3步:記在SQL invloved所有DB鏈接的,並確定那些DB連接的主機。 select * from dba_db_links where db_link like upper('& db_link');步驟4:在每個主機(說只有一個遠程主機,指向數據庫Y)和數據庫X本身,啓動上述查詢(Tom Kyte's)以收集來自遠程DB的會話的會話詳細信息。

步驟5:在數據庫X,檢查所關注的SID和其相應的GTXID。在遠程主機查找同一GTXID Y.

第6步:從數據庫中獲取Y代表該GTXID會話ID和檢查會話等待或其他細節。

相關問題