ORA-00904: "DBMS_METADATA"."GET_DDL": 标识符无效
ORA-00904: "DBMS_METADATA"."GET_DDL": invalid identifier
我收到 ORA-00904: "DBMS_METADATA"."GET_DDL": 当我 运行 dbms_metadata 时出现无效标识符错误。
该错误是因为列名或别名错误。我不确定为什么会收到它。
这里是一些显示错误的代码:我创建了一个 table:
create table test_table (
column1 varchar2(300));
我插入一行数据:
insert into test_table values (55);
我尝试为其获取 DDL:
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
我检查了权限,看来我有正确的权限:
select * FROM DBA_ROLE_PRIVS where granted_role = 'SELECT_CATALOG_ROLE';
我的用户(又名架构)在该列表中。
以下是我认为的文档:https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm#i1016867
运行 此命令为 SYS:
grant execute on sys.dbms_metadata to public;
向您的特定用户授予访问权限可能已经解决了您当前的问题,但该包确实需要对整个系统可用。许多第三方程序依赖于 DBMS_METADATA
。默认情况下,该包应授予 PUBLIC
.
一些旧版本的 STIG(安全技术实施指南,几乎每个审计员都将其用作其安全脚本的基础)会撤销对 public 包的访问。但即使在 10 年前,这也是一个愚蠢的想法,而且现在的 STIG 中也不存在了。
我收到 ORA-00904: "DBMS_METADATA"."GET_DDL": 当我 运行 dbms_metadata 时出现无效标识符错误。
该错误是因为列名或别名错误。我不确定为什么会收到它。
这里是一些显示错误的代码:我创建了一个 table:
create table test_table (
column1 varchar2(300));
我插入一行数据:
insert into test_table values (55);
我尝试为其获取 DDL:
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
我检查了权限,看来我有正确的权限:
select * FROM DBA_ROLE_PRIVS where granted_role = 'SELECT_CATALOG_ROLE';
我的用户(又名架构)在该列表中。
以下是我认为的文档:https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm#i1016867
运行 此命令为 SYS:
grant execute on sys.dbms_metadata to public;
向您的特定用户授予访问权限可能已经解决了您当前的问题,但该包确实需要对整个系统可用。许多第三方程序依赖于 DBMS_METADATA
。默认情况下,该包应授予 PUBLIC
.
一些旧版本的 STIG(安全技术实施指南,几乎每个审计员都将其用作其安全脚本的基础)会撤销对 public 包的访问。但即使在 10 年前,这也是一个愚蠢的想法,而且现在的 STIG 中也不存在了。