在我们的项目中,我们有一个在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语句?
答案 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都将放入日志文件中。