有一个在数据库上禁用的触发器。我有什么办法可以从oracle(也许是元数据/数据字典表)中禁用它的时候知道吗?
答案 0 :(得分:2)
如果已启用ALTER TRIGGER或ALTER TABLE的审核(默认情况下未启用),则可以通过Oracle AUDIT进行此操作。
否则,您也许可以从USER_OBJECTS.LAST_DDL_TIME推断出触发器,但是很明显,除了启用或禁用之外,其他DDL还设置了时间。
答案 1 :(得分:1)
使用此查询:
SELECT OWNER, TRIGGER_NAME, STATUS
FROM ALL_TRIGGERS
WHERE STATUS = 'DISABLED';
您也可以使用
SELECT t.OWNER, TRIGGER_NAME, t.STATUS, LAST_DDL_TIME
FROM ALL_OBJECTS obj
JOIN ALL_TRIGGERS t ON t.owner = obj.owner AND TRIGGER_NAME = OBJECT_NAME;
LAST_DDL_TIME
显示了最后一个DDL,它可能是禁用触发器时的情况。但是,可以进行其他任何修改。
答案 2 :(得分:1)
使用以下查询:
SELECT
object_name,
last_ddl_time
FROM
dba_objects
WHERE
object_name IN (
SELECT
object_name
FROM
dba_triggers
WHERE
status = 'DISABLED'
)
ORDER BY
1;