所以我正在尝试修复dataload,但是当我在webapp中执行特定操作时,我需要知道哪些表正在被更改。有没有办法检查数据库查询,即使它们来自我的应用程序或至少是一种方法来找出哪些表被修改,所以我可以手动跟踪更改?这与Oracle 11g有关。
答案 0 :(得分:0)
最简单的方法 - 对您的数据库进行备份并在Web应用程序操作后进行比较,否则只需添加一些审计触发器。当然你可以搞砸闪回查询。您可以启用具有所需级别的detalization的跟踪,以便查看您的sql。
例如
SELECT * FROM employees
AS OF TIMESTAMP
TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
答案 1 :(得分:0)
在Oracle 11g中,您可以使用ASH(活动会话历史记录)查找在给定时间哪个SQL处于活动状态。您需要一个用于调整或诊断包的许可证才能合法地使用它。请参阅Oracle Active Session History (ASH)进行一些演示。
答案 2 :(得分:0)
我建议你试试这个:
EXEC dbms_output.enable(1000000);
DECLARE
lc_seq_value VARCHAR(50);
CURSOR table_list(p_field_like VARCHAR2) IS
SELECT table_name
FROM all_tables
WHERE table_name LIKE UPPER(p_field_like);
BEGIN
FOR i IN table_list('TEST%') LOOP
EXECUTE IMMEDIATE 'SELECT TO_CHAR(SCN_TO_TIMESTAMP(MAX(ORA_ROWSCN))) FROM '||
i.table_name INTO lc_seq_value;
dbms_output.put_line(lc_seq_value);
END LOOP;
END;
/