Oracle Database 21c の Data Pump にはチェックサム機能が追加されました。これはエクスポート時にダンプファイルのブロックにチェックサムを付与し、インポート時に検証を行うというものです。ダンプファイルの検証のみを行うこともできます。
準備
この機能を利用するためには、初期化パラメーター compatible を 20.0 以上に指定する必要があります。
SQL> SHOW PARAMETER compatible
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
compatible string 21.0.0
noncdb_compatible boolean FALSE
エクスポート
expdp コマンドによるエクスポート時、標準ではチェックサムは付与されません。チェックサム機能を有効にするには CHECKSUM=YES オプションを指定します。チェックサムのアルゴリズムはデフォルトでは SHA256 が使用されます。デフォルト値を変更する場合には CHECKSUM_ALGORITHMオプションを指定します。指定できる値は「CRC32」、「SHA256」、「SHA384」、「SHA512」です。CHECKSUM_ALGORITHM オプションだけを指定してもチェックサム機能は有効になります。
チェックサムを有効にしたエクスポートではログに「ダンプ・ファイル・セットのチェックサムを生成しています」が出力されます。
$ expdp userid=pdbadmin/{password}@PDB1 schemas=scott dumpfile=scott_sha512.dmp checksum=yes checksum_algorithm=sha512
Export: Release 21.0.0.0.0 - Production on 木 10月 14 17:17:42 2021
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
"PDBADMIN"."SYS_EXPORT_SCHEMA_01"を起動しています: userid=pdbadmin/********@PDB1 schemas=scott dumpfile=scott_sha512.dmp checksum=yes checksum_algorithm=sha512
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSの処理中です
オブジェクト型SCHEMA_EXPORT/STATISTICS/MARKERの処理中です
オブジェクト型SCHEMA_EXPORT/USERの処理中です
オブジェクト型SCHEMA_EXPORT/SYSTEM_GRANTの処理中です
オブジェクト型SCHEMA_EXPORT/DEFAULT_ROLEの処理中です
オブジェクト型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINTの処理中です
. . "SCOTT"."DATA1" 1.425 MB 100000行がエクスポートされました
マスター表"PDBADMIN"."SYS_EXPORT_SCHEMA_01"は正常にロード/アンロードされました
ダンプ・ファイル・セットのチェックサムを生成しています
******************************************************************************
PDBADMIN.SYS_EXPORT_SCHEMA_01に設定されたダンプ・ファイルは次のとおりです:
/u01/app/oracle/admin/O21C/dpdump/C97E54F196FA8565E053E101A8C0F15D/scott_sha512.dmp
ジョブ"PDBADMIN"."SYS_EXPORT_SCHEMA_01"が木 10月 14 17:17:51 2021 elapsed 0 00:00:08で正常に完了しました
チェックサム機能を有効にした場合、またアルゴリズムを変更した場合でもダンプファイルのサイズは変わりませんでした。
チェック
ダンプファイルの整合性をチェックためには impdp コマンドに VERIFY_ONLY=YES オプションを指定します。以下の例ではダンプファイル scott_sha512.dmp ファイルが一部破損した状態でチェックを行っています。破損をチェックして「ORA-39412」エラーが出力されています。ただし expdp コマンドの終了ステータスは 0 になっています。
$ impdp userid=pdbadmin/{password}@PDB1 schemas=scott dumpfile=scott_sha512.dmp verify_only=yes
Import: Release 21.0.0.0.0 - Production on 木 10月 14 19:01:02 2021
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
ダンプ・ファイル・チェックサムを検証しています
マスター表"PDBADMIN"."SYS_IMPORT_SCHEMA_01"は正常にロード/アンロードされました
ダンプ・ファイル・セットは完全です
ORA-39412: ダンプ・ファイル"/u01/app/oracle/admin/O21C/dpdump/C97E54F196FA8565E053E101A8C0F15D/scott_sha512.dmp"でファイル・チェックサム・エラーが発生しました
ダンプ・ファイル・セットには一貫性がありません
ジョブ"PDBADMIN"."SYS_IMPORT_SCHEMA_01"が完了しましたが、1エラーが木 10月 14 19:01:04 2021 elapsed 0 00:00:01で発生しています
$ echo $?
0
インポート
チェックサムを付与したダンプファイルを通常通りインポートしてもチェックサムは検証されません。以下の例では破損したファイルをインポートしていますがエラーは検知できていません。ログに「警告: ダンプ・ファイル・チェックサムの検証が無効です」が出力されます。
$ impdp userid=pdbadmin/{password}@PDB1 schemas=scott dumpfile=scott_sha512.dmp content=data_only
Import: Release 21.0.0.0.0 - Production on 木 10月 14 17:21:45 2021
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
警告: ダンプ・ファイル・チェックサムの検証が無効です
マスター表"PDBADMIN"."SYS_IMPORT_SCHEMA_01"は正常にロード/アンロードされました
"PDBADMIN"."SYS_IMPORT_SCHEMA_01"を起動しています: userid=pdbadmin/********@PDB1 schemas=scott dumpfile=scott_sha512.dmp content=data_only
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "SCOTT"."DATA1" 1.425 MB 100000行がインポートされました
ジョブ"PDBADMIN"."SYS_IMPORT_SCHEMA_01"が木 10月 14 17:21:49 2021 elapsed 0 00:00:03で正常に完了しました
チェックサムの検証とインポートを両方実施する場合には VERIFY_CHECKSUM=YES オプションを指定します。下記の例ではチェックサムのエラー「ORA-39412」と「ORA-39002」が発生してます。エラーが発生すると impdp コマンドの終了ステータスは 1 になります。
$ impdp userid=pdbadmin/{password}@PDB1 schemas=scott dumpfile=scott_sha512.dmp content=data_only verify_checksum=yes
Import: Release 21.0.0.0.0 - Production on 木 10月 14 19:13:13 2021
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
ORA-39002: 操作が無効です
ORA-39412: ダンプ・ファイル"/u01/app/oracle/admin/O21C/dpdump/C97E54F196FA8565E053E101A8C0F15D/scott_sha512.dmp"でファイル・チェックサム・エラーが発生しました
$ echo $?
1