Database Support Blog

Database Support Blog>【Oracle Database】18c新機能:統合監査のData Pump EXPORT/IMPORT

  • Oracle Database
2018.07.31

【Oracle Database】18c新機能:統合監査のData Pump EXPORT/IMPORT

【Oracle Database】18c新機能:統合監査のData Pump EXPORT/IMPORT

Oracle Database 18cでは統合監査の情報をData Pumpを使ってEXPORT/IMPORTできるようになっています。これにより監査証跡の分析を本番環境とは異なるデータベースで行うことが可能です。

データベース新機能ガイド 18c
 Oracle Data Pumpを使用して統合監査証跡をエクスポートおよびインポートする機能
 URL:https://docs.oracle.com/cd/E96517_01/newft/index.html
実際に試してみたところ幾つか動作に注意点がありましたので、併せてご紹介します。

エクスポート:INCLUDE=AUDIT_TRAILSオプション

統合監査の監査データをエクスポート(EXPDP)する場合はFULL=Y、INCLUDE=AUDIT_TRAILSで実行します。コマンドを実行するユーザはEXP_FULL_DATABASEロールを付与されている必要があります。

コマンドの実行により、SYS/AUDSYSの統合監査に関わるオブジェクトがエクスポートされていることがわかります。

 
 [oracle@taono18c admin]$  expdp system/oracle@pdb1 full=y directory=test_dir dumpfile=aud.dmp include=AUDIT_TRAILS
 
 Export: Release 18.0.0.0.0 - Production on Thu Jul 19 04:53:21 2018
 Version 18.2.0.0.0
 
 Copyright (c) 1982, 2018, Oracle and/or its affiliates.  All rights reserved.
 
 Connected to: Oracle Database 18c EE Extreme Perf Release 18.0.0.0.0 - Production
 Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/********@pdb1 full=y directory=test_dir dumpfile=aud.dmp include=AUDIT_TRAILS
 Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
 Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE
 Processing object type DATABASE_EXPORT/EARLY_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE
 Processing object type DATABASE_EXPORT/NORMAL_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/FINAL_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/POST_SYSTEM_IMPCALLOUT/MARKER
 . . exported "SYS"."KU$_USER_MAPPING_VIEW"               6.328 KB      49 rows
 . . exported "AUDSYS"."AUD$UNIFIED":"SYS_P228"           50.96 KB       6 rows
 . . exported "SYS"."AUD$"                                35.82 KB      68 rows
 . . exported "SYS"."DAM_CONFIG_PARAM$"                   6.531 KB      14 rows
 . . exported "SYS"."DAM_CLEANUP_EVENTS$"                     0 KB       0 rows
 . . exported "SYS"."DAM_CLEANUP_JOBS$"                       0 KB       0 rows
 . . exported "SYS"."AUDTAB$TBS$FOR_EXPORT"               5.953 KB       2 rows
 . . exported "SYS"."FGA_LOG$FOR_EXPORT"                      0 KB       0 rows
 Master table "SYSTEM"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
 ******************************************************************************
 Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:
   /home/oracle/kkatsuta/aud.dmp
 Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed at Thu Jul 19 04:54:59 2018 elapsed 0 00:01:37
 

上述の例では弊社テスト環境のため行数が少ないですが、サービス提供をしている本番環境で統合監査を設定されている場合は格納されている行数が多く、エクスポートに負荷がかかることも考えられます。処理ピークの時間帯は避けて実行することも検討ください。

インポート:監査データはAPPENDでインポートされる

INCLUDE=AUDIT_TRAILSでエクスポートしたダンプファイルをインポートします。実行するユーザはIMP_FULL_DATABASEロールを付与されている必要があります。

インポート(IMPDP)時のTABLE_EXISTS_ACTIONのデフォルトはSKIP(同名テーブルが既に存在する場合はインポートしない)ですが、INCLUDE=AUDIT_TRAILSでエクスポートした監査データをインポートする際はAPPEND(既存データを残したまま追加)で実行されます。
次の例は先程エクスポートした環境にそのままインポートを行った結果ですが、同一のレコードが存在しています。

 
 [oracle@taono18c admin]$ impdp system/oracle@pdb1 full=y directory=test_dir dumpfile=aud.dmp
 
 Import: Release 18.0.0.0.0 - Production on Thu Jul 19 06:39:11 2018
 Version 18.2.0.0.0
 
 Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
 
 Connected to: Oracle Database 18c EE Extreme Perf Release 18.0.0.0.0 - Production
 Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
 Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/********@pdb1 full=y directory=test_dir dumpfile=aud.dmp
 Processing object type DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE
 Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
 . . imported "SYS"."KU$_EXPORT_USER_MAP" 6.328 KB 49 rows
 Processing object type DATABASE_EXPORT/EARLY_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
 . . imported "AUDSYS"."AMGT$DP$AUD$UNIFIED":"SYS_P228" 50.96 KB 6 rows
 . . imported "SYS"."AMGT$DP$AUD$" 35.82 KB 68 rows
 . . imported "SYS"."AMGT$DP$DAM_CONFIG_PARAM$" 6.531 KB 14 rows
 . . imported "SYS"."AMGT$DP$DAM_CLEANUP_EVENTS$" 0 KB 0 rows
 . . imported "SYS"."AMGT$DP$DAM_CLEANUP_JOBS$" 0 KB 0 rows
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE
 Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
 . . imported "SYS"."AMGT$DP$AUDTAB$TBS$FOR_EXPORT" 5.953 KB 2 rows
 . . imported "SYS"."AMGT$DP$FGA_LOG$FOR_EXPORT" 0 KB 0 rows
 Processing object type DATABASE_EXPORT/NORMAL_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/FINAL_POST_INSTANCE_IMPCALLOUT/MARKER
 Processing object type DATABASE_EXPORT/POST_SYSTEM_IMPCALLOUT/MARKER
 Job "SYSTEM"."SYS_IMPORT_FULL_01" successfully completed at Thu Jul 19 06:39:25 2018 elapsed 0 00:00:13
 
 SQL> SELECT EVENT_TIMESTAMP,ACTION_NAME,CLIENT_PROGRAM_NAME FROM UNIFIED_AUDIT_TRAIL order by 1;
 
 EVENT_TIMESTAMP ACTION_NAME CLIENT_PROGRAM_NAME
 ------------------------------ ------------------------ ----------------------------------------
 19-JUL-18 04.43.30.189863 AM EXECUTE sqlplus@taono18c (TNS V1-V3)
 19-JUL-18 04.43.30.189863 AM EXECUTE sqlplus@taono18c (TNS V1-V3)
 19-JUL-18 04.45.26.016665 AM ALTER PLUGGABLE DATABASE sqlplus@taono18c (TNS V1-V3)
 19-JUL-18 04.45.26.016665 AM ALTER PLUGGABLE DATABASE sqlplus@taono18c (TNS V1-V3)
 

過去にインポートをしたことがある場合は監査情報が2重で登録される/他のDBの監査データと混在する可能性があるため注意が必要です。本番環境でのエクスポート実行後に監査データを削除するか、分析用DBでインポート前に監査データの削除を行うなどの対応が必要になるケースも考えられます。
なお、インポート時にTABLE_EXISTS_ACTION=TRUNCATEを明示的に指定した場合、IMPDPは成功しますがTRUNCATEは行われず、未指定時と同様にAPPENDでインポートされる(同じレコードが追加されている)ことを確認しています。

統合監査データの削除方法

上述のとおり追記でインポートされるため、エクスポート元やインポート先の環境で監査データを削除する対応が必要になるケースがあります。統合監査で取得された監査データを削除するには DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL プロシージャを使用します。

すべての監査データを削除するにはUSE_LAST_ARCH_TIMESTAMP=FALSEで実行します。

 
 SQL> begin
   2      dbms_audit_mgmt.clean_audit_trail(
   3      audit_trail_type     => dbms_audit_mgmt.audit_trail_unified,
   4      use_last_arch_timestamp => false);
   5  end;
   6  /
 

指定した時間よりも前のデータを削除するには DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP プロシージャを使用して監査レコードの最終アーカイブ・タイムスタンプを設定した上で、USE_LAST_ARCH_TIMESTAMP=TRUEで削除します。

 
 SQL> BEGIN
   2      DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
   3      audit_trail_type  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
   4      last_archive_time => TO_TIMESTAMP('2018/07/20 00:00:00','YYYY/MM/DD HH24:MI:SS')) ;
   5      dbms_audit_mgmt.clean_audit_trail(
   6      audit_trail_type     => dbms_audit_mgmt.audit_trail_unified,
   7  use_last_arch_timestamp => TRUE);
   8  END;
   9  /
 

統合監査のタイムスタンプ( UNIFIED_AUDIT_TRAIL.EVENT_TIMESTAMP )はUTC(JST-9時間)で格納されているため、SET_LAST_ARCHIVE_TIMESTAMPで指定する時刻もUTCを意識する必要がある点には注意が必要です。

まとめ

Data Pumpで監査データがエクスポート/インポートができるようになったことで、エクスポート以前のデータを削除するなどの管理も可能になりました。監査データは肥大化しやすい情報だったため、統合監査を取得されている環境ではメンテナンスを見直してみるのも良いかもしれません。
Oracle Database 18cの新機能ガイドをみてみると興味をそそるものもありました。確認した結果は引き続き本ブログで公開していきます。

検証協力

サービス事業部 サポートセンター 2部 勝田 航介
検証環境:Oracle Database 18.2.0

筆者情報

大野 高志

サービス事業部 付加価値創造部

2007年アシスト入社。Oracle Databaseのサポート業務を経て、サポートセンターに蓄積されたナレッジを使用したサービス開発の立ち上げに従事。現在は「 アシストの超サポ 」を広め、カスタマーエンゲージメントの構築を実現するための活動を行っている。でも、Oracleは好きなのでできる限りブログは続ける。


データベースのサポートならアシスト

関連している記事

  • Oracle Database
2018.09.11

【Oracle Database】実行計画の固定化方法まとめ

実行計画を固定する方法を4つご紹介します。Oracle Database 18cからStandard Editionでも実行計画固定のためにSQL Plan Management(SPM)の一部機能が利用できるようになりました。

  • Oracle Database
2018.08.08

【Oracle Database】18cで追加された手軽に使える便利な新機能3つ

Oracle Database 18c で追加された手軽に使える便利な新機能を3つご紹介します。

  • Oracle Database
2018.07.12

【Oracle Database Cloud】10gR2以下のJDBC接続でORA-12650が発生する原因と対処

オンプレミス環境からDBCSへの移行後、JDBCによるOracle Databaseへの接続でORA-12650エラーが発生する原因と対処方法を紹介します。

アシストサポートセンターのご紹介

ページの先頭へ戻る