ORA-00904:“ DBMS_METADATA”。“ GET_DDL”:无效的标识符

时间:2019-05-17 14:02:46

标签: sql oracle dbms-metadata

我得到ORA-00904:“ DBMS_METADATA”。“ GET_DDL”:运行dbms_metadata时出现无效的标识符错误。

该错误是因为列名或别名错误。我不确定为什么会得到它。

以下是显示错误的代码:我创建了一个表:

 User.findOneAndUpdate({mobile: "9999999999999"}, { address: "test address" }, {'new': true} )

我插入一行数据:

create table test_table (
   column1 varchar2(300));

我尝试为其获取DDL:

insert into test_table values (55);

这是错误:

SELECT DBMS_METADATA.GET_DDL('TABLE','test_table') FROM dual;

我检查了权限,似乎我拥有正确的权限:

>> SELECT DBMS_METADATA.GET_DDL('TABLE','test_table') FROM dual
       *
Error at line 1
ORA-00904: "DBMS_METADATA"."GET_DDL": invalid identifier

我的用户(又名架构)在该列表中。

以下是我认为的文档:https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm#i1016867

1 个答案:

答案 0 :(得分:2)

以SYS身份运行此命令:

grant execute on sys.dbms_metadata to public;

授予您特定用户的访问权限可能已经解决了您当前的问题,但是该软件包确实确实需要整个系统使用。许多第三方程序都依赖于DBMS_METADATA。默认情况下,应将该软件包授予PUBLIC

一些旧版本的STIG(安全技术实施指南,几乎每个审核员都将其用作其安全脚本的基础),将撤消对公共软件包的访问。但这甚至在10年前还是一个愚蠢的想法,而且无论如何现在的STIG都不是。