1

したがって、データロードを修正しようとしていますが、webapp で特定のアクションを実行するときにどのテーブルが変更されているかを知る必要があります。データベース クエリが自分のアプリから来ている場合でも、データベース クエリを調べる方法はありますか。または、変更を手動で追跡できるように、少なくともどのテーブルが変更されているかを調べる方法はありますか? これは Oracle 11g の場合です。

4

3 に答える 3

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;
/
于 2012-08-22T15:31:45.500 に答える
0

Oracle 11g では、ASH (Active Session History) を使用して、特定の時間にアクティブだった SQL を見つけることができます。これを合法的に使用するには、チューニングまたは診断パックのライセンスが必要です。簡単なデモについては、Oracle Active Session History (ASH)を参照してください。

于 2012-08-22T05:25:10.103 に答える
0

最も簡単な方法-データベースのバックアップを作成し、Web アプリのアクション後に比較するか、監査トリガーの種類を追加するだけです。確かに、フラッシュバック クエリを台無しにすることができます。SQL を表示するために、必要なレベルの detalization でトレースを有効にすることもできます。

例えば

SELECT * FROM employees
 AS OF TIMESTAMP
  TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
于 2012-08-21T19:58:35.800 に答える