などSID、IPアドレス、などのユーザーのログイン情報をキャプチャする方法オラクル、

あなたは、次のようなログイントリガを、使用することができます

  TRIGGER tr_login_recordをCREATE OR REPLACE

  DATABASE ONログオンAFTER

  DECLARE

  miUserSid NUMBER;

  mtSessionのV $セッション%のROWTYPE;

  CURSORのcsession(iiUserSidのIN NUMBER)です

  五$セッションSELECT * FROM

  WHERE SID = iiUserSid。

  ベギン

  五$ MYSTAT FROM miUserSid INTO SELECT sidのWHERE ROWNUM <= 1;

  OPENのcsession(miUserSid)。

  csessionのINTO mtSessionをFETCH。

  ユーザ--ifデータを挿入し、次いで存在

  csessionの%はTHENが見つかった場合

  ログ$情報(LOGIN_USER、login_time、ip_adress、ausid、ターミナル、INSERT INTO

  OSUSER、機械、プログラム、SID、シリアル#)

  VALUES(ora_login_user、SYSDATE、SYS_CONTEXT( 'USERENV'、 'IP_ADDRESS')、

  USERENV( 'SESSIONID')、

  mtSession.Terminal、mtSession.Osuser、

  mtSession.Machine、mtSession.Program、

  mtSession.Sid、mtSession.Serial番号);

  ELSE

  ユーザー--ifエラーを返し、その後存在しません。

  sp_write_log( 'セッション情報エラー:' || SQLERRM)。

  CLOSEのcsession;

  RAISE_APPLICATION_ERROR(-20099、 'ログイン例外'、FALSE);

  END IF;

  CLOSEのcsession;

  例外

  WHEN OTHERS THEN

  sp_write_log( 'ログイントリガーエラー:' || SQLERRM)。

  ENDのtr_login_record。

  上記のトリガでは、次の点に注意してくださいする必要があります

  1、ユーザーがアクセス許可オブジェクトクエリのv_ $セッションがあり、V_ $ MYSTATは、SYSの下で、明示的な許可をサポートすることができます。

  2は、sp_write_logはもともと、ログ書き込み処理は、ヌルスキップなど、独自のニーズに置き換えることができました。

  あなたはトリガを作成する前に3は、ログテーブルレコード$情報ログオン情報を作成する必要があります。

  

  [Q]データベース全体のDDLステートメントまたはそのオブジェクト構造の変更および修正をキャプチャする方法

  [A] DDLトリガーのような、使用することができます

  TRIGGER tr_trace_ddlをCREATE OR REPLACE

  DDL ONデータベースAFTER

  DECLARE

  SQL_TEXT ora_name_list_t;

  state_sql DDL $ trace.ddl_sql%のTYPE;

  ベギン

  私1..ora_sql_txt IN(SQL_TEXT)LOOP FOR

  state_sql:= state_sql || SQL_TEXT(I)。

  END LOOP;

  DDLの$トレース(LOGIN_USER、ddl_time、IP_ADDRESS、audsid。INSERT INTO、

  SCHEMA_USER、schema_object、ddl_sql)

  VALUES(ora_login_user、SYSDATE、USERENV( 'SESSIONID')、

  SYS_CONTEXT( 'USERENV'、 'IP_ADDRESS')、

  ora_dict_obj_owner、ora_dict_obj_name、state_sql)。

  例外

  WHEN OTHERS THEN

  sp_write_log( 'キャプチャDDL Excption:' || SQLERRM)。

  ENDのtr_trace_ddl。

  注意することはより多くのトリガーポイントを作成する場合

  1、あなたはレコードDDLを記録するためのDDL $のトレーステーブルを作成する必要があります

2は、sp_write_logはもともと、ログ書き込み処理は、ヌルスキップなど、独自のニーズに置き換えることができました。

おすすめ

転載: www.cnblogs.com/fanweisheng/p/11113418.html