2010-03-18 31 views
5

我想知道是否有和正在使用哪個數據庫鏈接,模式以及哪些表。有沒有可能通過數據字典?如何找出哪些數據庫鏈接用於查詢Oracle RDBMS?

這與Oracle RDBMS可能嗎?

+1

您會以DBA用戶身份訪問數據字典嗎?普通用戶通常無法訪問所有字典對象,因此這將是一個重要因素。 – 2010-03-18 03:57:55

+1

可以通過DBA用戶進行認證。不過,如果可能的話,我更願意以普通用戶身份進行操作。 – JavaRocky 2010-03-18 21:18:38

回答

3

這將顯示您設置數據庫上的任何數據庫鏈接:

select * from dba_db_links; 

你將不得不尋找做一個文本搜索它們的鏈接語法使用DB鏈接任何疑問或對象<tablename>@<dblink name>

+2

應該指出的是,除非O7_DICTIONARY_ACCESSIBILITY = TRUE,並且用戶具有SELECT_ANY_TABLE,否則DBA_DB_LINKS將不會對普通用戶可用。否則它通常只對DBA用戶可用。但是,所有用戶都可以訪問USER_DB_LINKS,但如果所討論的查詢僅使用用戶自己的模式中的dblink,那就足夠了。 – 2010-03-18 03:53:43

+1

@Charles M:關於用戶權限的好處。 – 2010-03-18 04:07:20

+1

我不喜歡做文字搜索。有沒有可用的軟件包來告訴我表格引用?我創建了一個新的問題:http://stackoverflow.com/questions/2467735/do-any-parsers-exist-for-the-oracle-dml-table-reference – JavaRocky 2010-03-18 05:40:50

1

你可以先編輯模式的所有SQL代碼: 例如:

SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner) 
    FROM all_OBJECTS 
    WHERE (OWNER = 'your schema name'); 

,然後在結果中搜索圖案n的db_link,看起來像@dblink_name

3

我知道Dougman的答案被接受並且準確。但這裏有更多的信息。

如果用戶不是DBA用戶,將無權訪問DBA_DB_LINKS。此外,USER_DB_LINKS將顯示由當前用戶創建的db鏈接,以便不會列出用戶有權訪問的所有數據庫鏈接。

您可以使用ALL_DB_LINKS來獲取用戶有權訪問的鏈接。

select * from all_db_links; 
相關問題