2011-07-06 6 views
1

oracleで実行するクエリがsid、シリアル番号、トランザクション開始時刻、sql_id、トランザクションIDとして出力されます。UNIXでトランザクション時間がシステム時間よりも遅い場合にメールを送信します。

トランザクションの開始時刻がシステム時刻より1時間以上遅れると、そのsql_idで別のクエリを実行して電子メールで送信する必要があります。

この時間をORACLE sqlの出力と比較し、それをシステム時間と比較するにはどうすればよいですか?

このプロセスを自動化し、UNIXのcronに追加する必要があります。

助けてください!

+0

これは一度に多くの質問です。あなたはすでにcrontabを実行していますか?すでに電子メールを送信していますか? sqlplusなどを使用してデータベースに接続していますか?何を試しましたか?もう少し明確にしてください。 –

+1

cronではなく、DBMS_JOB/DBMS_SCHEDULERを調べてください。データベースから直接メールを送信することもできます。しかし、必要に応じて別の質問としてそれらを尋ねることをお勧めします。 –

答えて

1

機能SYSDATEは、現在のシステム日付を返します。 2つの日付を減算すると、日数の差が得られます。 24を掛け合わせると時間差が生じます。

SELECT * 
    FROM v$transaction 
WHERE (sysdate - start_date)*24 > 1 

は、1時間以上前に開始された取引を提供します。また、それがわかりやすい場合は区間演算を使用することもできます。

SELECT * 
    FROM v$transaction 
WHERE sysdate - interval '1' hour > start_date 
関連する問題