3

在我们的项目中,我们有一个在 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 语句?

4

2 回答 2

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$

于 2015-10-27T07:45:21.420 回答
2

您可以使用 exp/imp 工具。使用导出该数据库(或架构)exp rows=now,然后使用imp show=yes.

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

于 2015-10-27T08:36:04.313 回答