Oracle 8i中DBMS_METADATA.GET_DLL的替代方案

时间:2015-10-27 07:24:19

标签: oracle oracle8i database-metadata

在我们的项目中,我们有一个在oracle 8i上运行的数据库(我知道这个版本很古老但是......)

我想检查我试过的一个PUBLIC数据库链接的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语句?

2 个答案:

答案 0 :(得分: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$

答案 1 :(得分:1)

您可以使用exp / imp工具。使用exp rows=now导出该数据库(或模式),然后使用imp show=yes将其导回数据库。

这不会对数据库进行任何更改,但所有DDL都将放入日志文件中。