2012-08-16 85 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和检查会话等待或其他细节。

相关问题