【问题标题】:ORA-00604, ORA-30512 when modifying AUDIT DDL IndexORA-00604、ORA-30512 修改 AUDIT DDL 索引时
【发布时间】:2015-01-07 21:03:31
【问题描述】:

我在尝试更改 AUDIT DDL 索引时遇到 ORA-00604 和 ORA-30512 错误,我在 sql-plus 上执行的代码是:

ALTER INDEX "MY_SCHEMA"."AU_DDL_INDEX"
    NOPARALLEL;

COMMIT;   

有人知道吗?

非常感谢。

问候。

【问题讨论】:

  • ORA-00604 是“在递归 SQL 级别 x 发生错误”。 ORA-30512 是“不能在一个事务中多次修改 ”。可能有一个 SCHEMA 触发器正在执行某种 DDL。祝你好运。
  • +1 到@BobJarvis。 select count(*) from all_triggers where table_name = 'AU_DDL_INDEX' 会告诉你那里有多少触发器。
  • @mmmmmpie - 好建议。此外,如果涉及到 SCHEMA 级触发器,可以通过SELECT * FROM DBA_TRIGGERS WHERE BASE_OBJECT_TYPE = 'SCHEMA' 找到它。
  • 而且在 DDL 之后不需要 COMMIT

标签: database oracle11g sqlplus


【解决方案1】:

您的索引可能位于审核 DDL 触发器引用的表上。您必须禁用审计 DDL 触发器才能更改触发器引用的表。

来自文档: https://docs.oracle.com/en/database/oracle/oracle-database/20/errmg/ORA-29250.html

ORA-30512: 不能在事务中多次修改 string.string 原因:在事务中多次尝试修改对象。此错误通常是由触发尝试修改同一对象的系统触发器的 DDL 语句引起的。如果尝试在同一事务中对队列表执行多个 DDL 操作,但在操作之间没有发出提交,也会发生这种情况。

操作:不要创建可能修改已修改对象的系统触发器。此外,不要在同一事务中对队列表指定多个 DDL 操作。

【讨论】:

    猜你喜欢
    • 2014-12-07
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多