2015-10-27 51 views
2

在我們的項目,我們有在Oracle 8i中運行一個數據庫(我知道這個版本是古老的,但...)替代計劃DBMS_METADATA.GET_DLL Oracle 8i中

我要檢查一個公共數據庫鏈接DDL語句我想:

select dbms_metadata.get_ddl('DB_LINK', 'LINKNAME', 'PUBLIC') from dual; 

select dbms_metadata.get_ddl('DB_LINK', 'LINKNAME', 'PUBLIC') from dual; 
        * 
ERROR at line 1: 
ORA-00904: invalid column name 

按我所知,這似乎像Oracle 8i中不支持dbms_metadata。如果我錯了,請糾正我。

dba_db_links給了我一點信息,但是丟失了目標數據庫的SID。

除了導出數據庫/模式之外,是否有任何方法可以在Oracle 8i上獲得DDL語句?

+0

認真... * 8i *?這是上個世紀!注意,因爲我也想知道人們在8i天內曾經做過什麼,因爲據我所知,你會從你的**源代碼控制**中獲得所有細節。 –

+0

希望你的問題不意味着「這個DB-Link使用的密碼是什麼?」。在任何情況下你都不會得到密碼。 –

+0

@LalitKumarB:將檢查源代碼管理。如果你有任何關於這個的鏈接可以分享嗎? –

回答

2

您可以查詢數據字典:

SELECT 'CREATE PUBLIC DATABASE LINK "'||DB_LINK||'" CONNECT TO '||USERNAME||' IDENTIFIED BY "<PWD>" USING '''||HOST||''';' AS cmd 
FROM DBA_DB_LINKS 
WHERE owner = 'PUBLIC' 
    AND DB_LINK = 'LINKNAME'; 

如果你錯過信息儘量選擇表sys.link$來代替。

+0

是的......我錯過了'dba_db_links'中的'host'列。完成。 –

1

您可以使用exp/imp工具。使用exp rows=now導出該數據庫(或模式),然後使用imp show=yes將其導回到數據庫中。

這不會使數據庫中的任何改變,但所有的DDL將投入的日誌文件。

+0

是的,這對桌子非常有用。 –