0

DBMS_AUDIT_MGMT.CREATE_PURGE_JOB を作成/スケジュールして、 CREATE_PURGE_JOB を実行したときに開始するように見える間隔ではなく、特定の時刻に実行する方法を理解しようとしています。

私が考えることができる唯一のことは、システム時間を一時的に変更し、この手順を実行してから、システム時間を修正することです??? (バカ)

BEGIN
  DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(
    AUDIT_TRAIL_TYPE           => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
    AUDIT_TRAIL_PURGE_INTERVAL => 24 * 30 /* hours */,
    AUDIT_TRAIL_PURGE_NAME     => 'Daily_Audit_Purge_Job',
    USE_LAST_ARCH_TIMESTAMP    => TRUE
  );
END;

私が行方不明になっている別の方法はありますか?

時間を指定できる DBMS_SCHEDULER.CREATE_JOB などの start_date パラメータがないようです。

4

2 に答える 2

1

パージ ジョブ機能は DBMS_SCHEDULER パッケージの単なるラッパーであるため、このタスクを別の時間に実行するようにスケジュールする場合は、DBMS_SCHEDULER 機能を使用する必要があります。

コードを実行した後のケースでは、 DBA_AUDIT_MGMT_CLEANUP_JOBS には次の情報があります。

SQL> SELECT JOB_NAME,JOB_STATUS,AUDIT_TRAIL,JOB_FREQUENCY FROM DBA_AUDIT_MGMT_CLEANUP_JOBS ;

JOB_NAME                  JOB_STAT AUDIT_TRAIL                  JOB_FREQUENCY
------------------------- -------- ---------------------------- ------------------------------
DAILY_AUDIT_PURGE_JOB     ENABLED  STANDARD AUDIT TRAIL         FREQ=HOURLY;INTERVAL=720

また、 DBA_SCHEDULER_JOBS には次のものがあります。

SQL> SELECT job_name, next_run_date, state, enabled FROM dba_scheduler_jobs WHERE job_name LIKE '%AUDIT%' ;

JOB_NAME                  NEXT_RUN_DATE                                                STATE           ENABL
------------------------- ------------------------------------------------------------ --------------- -----
DAILY_AUDIT_PURGE_JOB     15-AUG-15 01.11.40.411757 AM AMERICA/ARGENTINA/RIO_GALLEGOS  SCHEDULED       TRUE

通常どおり、新しい「手動」ジョブをスケジュールします。

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
   job_name             => 'MANUAL_AUDIT_PURGE_JOB',
   job_type             => 'PLSQL_BLOCK',
   job_action           => 'BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(1, TRUE, 1);  END;',
   enabled              =>  TRUE,
   comments             => 'Manual Audit Purge Job');
END;
/

次に、次のように dba_scheduler_job_log をクエリして、その実行を確認できます。

select log_date
, job_name
, status
from dba_scheduler_job_log
order by log_date asc;

次のようなものが得られます。

LOG_DATE                                                                    JOB_NAME                  STATUS
--------------------------------------------------------------------------- ------------------------- ------------------------------
16-JUL-15 01.50.03.081815 AM -03:00                                         ORACLE_APEX_MAIL_QUEUE    SUCCEEDED
16-JUL-15 01.52.29.935133 AM -03:00                                         MANUAL_AUDIT_PURGE_JOB    SUCCEEDED

注: この POC は 12.1.0.2.0 リリースを使用して実行されました。

于 2015-07-16T05:19:16.447 に答える