如何使用ora2pg提取公共DBlink

问题描述

我的理解是 ora2pg 能够提取架构内的私有 Oracle DBLink。 公共 DBlinks 怎么样(在 DBeaver 中,我在 Global Metadata/Public Database Links 下看到它们)?

如果我在配置文件中指定架构并运行此命令,则找不到 DBLink(正如预期的那样,因为此架构内未设置私有 DBLink):

ora2pg -t DBLINK -o dblink.sql -b ./schema/dblinks/ -c ./config/ora2pg.conf

如果我在配置文件中注释模式(以针对所有模式)并运行相同的命令,我会收到此错误

FATAL: ORA-20000:
ORA-06512: at "SYS.DBMS_UTILITY",line 347
ORA-24237: object id argument passed to DBMS_UTILITY.INVALIDATE is not legal
ORA-06512: at line 2 (DBD ERROR: OCIStmtExecute)

有没有办法提取公共 DBLink?

解决方法

/config/ora2pg.conf 中,您只需要将 PUBLIC 作为架构名称:

# Oracle schema/user to use
SCHEMA PUBLIC