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

Alternative for DBMS_METADATA.GET_DLL in Oracle 8i

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

我想检查一个 PUBLIC 数据库的 DDL 语句 link 我试过了:

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。如有错误请指正

Table dba_db_links 给了我位信息,但缺少目标数据库的 SID。

除了导出 database/schema 之外,还有什么方法可以在 Oracle 8i 上获取 DDL 语句吗?

您可以查询数据字典:

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';

如果您错过了信息,请尝试 select table sys.link$

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

将其导回数据库

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