dbms_metadata.get_ddl()在不同于Oracle当前用户的模式上失败

时间:2019-04-02 11:10:44

标签: database oracle oracle11g data-dictionary

我需要从oracle数据库读取一些数据库对象的结构。因此,我想执行以下操作:

select dbms_metadata.get_ddl('TABLE', 'MY_TABLE', 'OTHERUSER') from dual

如果我以OTHERUSER用户身份登录,效果很好。但是对于PROD,我只有一个用户,该用户具有同义词,并将该对象与该同义词一起使用。我可以使用ALL_TABLES来选择TABLE信息,在那里我看到所有者是OTHERUSER,但是当我以不同的用户身份运行上面的代码时,出现以下错误:

ORA-31603: object "MY_TABLE" of type TABLE not found in schema "OTHERUSER"
ORA-06512: at "SYS.DBMS_METADATA", line 6069
ORA-06512: at "SYS.DBMS_METADATA", line 8666
ORA-06512: at line 1

它完全在架构OTHERUSER上。我可以做些什么来使它运行?我可以从ALL_TABLES,ALL_INDEXES等中进行选择,因此无论如何我都可以阅读信息,所以这可能不是一个正确的问题,或者我错了吗?

我知道作为一种解决方法,我可以使用在OTHERUSER上下文中运行的过程,但这并不难看。

1 个答案:

答案 0 :(得分:0)