テーブルレベルの復旧タスクが終了した後、ビューを通じてテーブルレベルの復旧結果を確認できます。
ステップ1:テーブルレベルの復旧タスクの全体的な実行結果を確認する
rootユーザーで、復旧対象のテーブルが存在するターゲットテナントが属するクラスタのsysテナントにログインします。以下のコマンドを実行して、テーブルレベルの復旧タスク全体および補助テナントの復旧結果を確認します。
テーブルレベルの復旧タスク全体の結果を確認します。
obclient> SELECT * FROM oceanbase.CDB_OB_RECOVER_TABLE_JOB_HISTORY WHERE TENANT_ID = tenant_id\GCDB_OB_RECOVER_TABLE_JOB_HISTORYビューの各フィールドは基本的にCDB_OB_RECOVER_TABLE_JOBSと対応しています。その中で、フィールドCOMMENTはタスクが失敗した場合の関連エラー情報を記録するために使用されます。ビューCDB_OB_RECOVER_TABLE_JOB_HISTORYのフィールドの詳細については、物理復旧関連ビューの紹介を参照してください。tenant_idは実際のテナントIDに置き換える必要があります。クエリ結果の例は以下のとおりです:例1:すべてのターゲットテーブルが正常に復旧されました。
*************************** 1. row *************************** TENANT_ID: 1002 JOB_ID: 2 INITIATOR_TENANT_ID: 1 INITIATOR_JOB_ID: 2 START_TIMESTAMP: 2025-09-11 11:42:19.274226 FINISH_TIMESTAMP: 2025-09-11 11:43:35.495161 STATUS: COMPLETED AUX_TENANT_NAME: AUX_RECOVER$1692106995896258 TARGET_TENANT_NAME: backup_tenant IMPORT_ALL: 0 DB_LIST: `DB` TABLE_LIST: `TEST`.`T1`,`TEST`.`T2`,`TEST`.`T3` RESTORE_SCN: 1692104831498747191 RESTORE_SCN_DISPLAY: 2025-09-11 11:40:15.000000 RESTORE_OPTION: pool_list=small_pool_0&primary_zone=z1 BACKUP_DEST: file:///data2/nfs/ob_backup_oracle_tenant/archive,file:///data2/nfs/ob_backup_oracle_tenant/data BACKUP_SET_LIST: file:///data2/nfs/ob_backup_oracle_tenant/data/backup_set_1_full BACKUP_PIECE_LIST: file:///data2/nfs/ob_backup_oracle_tenant/archive/piece_d1001r1p1 BACKUP_PASSWD: NULL EXTERNAL_KMS_INFO: NULL REMAP_DB_LIST: REMAP_TABLE_LIST: `TEST`.`T1`:`RECOVER_TEST`.`T1`,`TEST`.`T2`:`RECOVER_TEST`.`T2`,`TEST`.`T3`:`RECOVER_TEST`.`T3` REMAP_TABLEGROUP_LIST: REMAP_TABLESPACE_LIST: RESULT: SUCCESS COMMENT: import succeed table count: 3, failed table count: 0 DESCRIPTION: NULL 1 row in set例2:一部のターゲットテーブルが正常に復旧され、一部のテーブルは正常に復旧され、一部のテーブルは復旧に失敗しました。
*************************** 1. row *************************** TENANT_ID: 1002 JOB_ID: 2 INITIATOR_TENANT_ID: 1 INITIATOR_JOB_ID: 2 START_TIMESTAMP: 2025-09-11 11:42:19.274226 FINISH_TIMESTAMP: 2025-09-11 11:43:35.495161 STATUS: COMPLETED AUX_TENANT_NAME: AUX_RECOVER$1692106995896258 TARGET_TENANT_NAME: backup_tenant IMPORT_ALL: 0 DB_LIST: `DB` TABLE_LIST: `TEST`.`T1`,`TEST`.`T2`,`TEST`.`T3` RESTORE_SCN: 1692104831498747191 RESTORE_SCN_DISPLAY: 2025-09-11 11:40:15.000000 RESTORE_OPTION: pool_list=small_pool_0&primary_zone=z1 BACKUP_DEST: file:///data2/nfs/ob_backup_oracle_tenant/archive,file:///data2/nfs/ob_backup_oracle_tenant/data BACKUP_SET_LIST: file:///data2/nfs/ob_backup_oracle_tenant/data/backup_set_1_full BACKUP_PIECE_LIST: file:///data2/nfs/ob_backup_oracle_tenant/archive/piece_d1001r1p1 BACKUP_PASSWD: NULL EXTERNAL_KMS_INFO: NULL REMAP_DB_LIST: REMAP_TABLE_LIST: `TEST`.`T1`:`RECOVER_TEST`.`T1`,`TEST`.`T2`:`RECOVER_TEST`.`T2`,`TEST`.`T3`:`RECOVER_TEST`.`T3` REMAP_TABLEGROUP_LIST: REMAP_TABLESPACE_LIST: RESULT: PARTIAL_SUCCESS COMMENT: import succeed table count: 2, failed table count: 1 DESCRIPTION: NULL 1 row in set例3:ユーザーが途中でテーブルレベルの復旧タスクをキャンセルしたため、一部のターゲットテーブルが正常に復旧されました。
*************************** 1. row *************************** TENANT_ID: 1002 JOB_ID: 2 INITIATOR_TENANT_ID: 1 INITIATOR_JOB_ID: 2 START_TIMESTAMP: 2025-09-11 11:42:19.274226 FINISH_TIMESTAMP: 2025-09-11 11:43:35.495161 STATUS: COMPLETED AUX_TENANT_NAME: AUX_RECOVER$1692106995896258 TARGET_TENANT_NAME: backup_tenant IMPORT_ALL: 0 DB_LIST: `DB` TABLE_LIST: `TEST`.`T1`,`TEST`.`T2`,`TEST`.`T3` RESTORE_SCN: 1692104831498747191 RESTORE_SCN_DISPLAY: 2025-09-11 11:40:15.000000 RESTORE_OPTION: pool_list=small_pool_0&primary_zone=z1 BACKUP_DEST: file:///data2/nfs/ob_backup_oracle_tenant/archive,file:///data2/nfs/ob_backup_oracle_tenant/data BACKUP_SET_LIST: file:///data2/nfs/ob_backup_oracle_tenant/data/backup_set_1_full BACKUP_PIECE_LIST: file:///data2/nfs/ob_backup_oracle_tenant/archive/piece_d1001r1p1 BACKUP_PASSWD: NULL EXTERNAL_KMS_INFO: NULL REMAP_DB_LIST: REMAP_TABLE_LIST: `TEST`.`T1`:`RECOVER_TEST`.`T1`,`TEST`.`T2`:`RECOVER_TEST`.`T2`,`TEST`.`T3`:`RECOVER_TEST`.`T3` REMAP_TABLEGROUP_LIST: REMAP_TABLESPACE_LIST: RESULT: PARTIAL_SUCCESS COMMENT: comment: OB_CANCEL(-4072), addr:11.xxx.xxx.xxx:18000, trace_id:Y4********-**********-0-0 DESCRIPTION: NULL 1 row in set例4:すべてのターゲットテーブルが完全に復旧に失敗しました。
*************************** 1. row *************************** TENANT_ID: 1002 JOB_ID: 2 INITIATOR_TENANT_ID: 1 INITIATOR_JOB_ID: 2 START_TIMESTAMP: 2025-09-11 11:42:19.274226 FINISH_TIMESTAMP: 2025-09-11 11:43:35.495161 STATUS: COMPLETED AUX_TENANT_NAME: AUX_RECOVER$1692106995896258 TARGET_TENANT_NAME: backup_tenant IMPORT_ALL: 0 DB_LIST: `DB` TABLE_LIST: `TEST`.`T1`,`TEST`.`T2`,`TEST`.`T3` RESTORE_SCN: 1692104831498747191 RESTORE_SCN_DISPLAY: 2025-09-11 11:40:15.000000 RESTORE_OPTION: pool_list=small_pool_0&primary_zone=z1 BACKUP_DEST: file:///data2/nfs/ob_backup_oracle_tenant/archive,file:///data2/nfs/ob_backup_oracle_tenant/data BACKUP_SET_LIST: file:///data2/nfs/ob_backup_oracle_tenant/data/backup_set_1_full BACKUP_PIECE_LIST: file:///data2/nfs/ob_backup_oracle_tenant/archive/piece_d1001r1p1 BACKUP_PASSWD: NULL EXTERNAL_KMS_INFO: NULL REMAP_DB_LIST: REMAP_TABLE_LIST: `TEST`.`T1`:`RECOVER_TEST`.`T1`,`TEST`.`T2`:`RECOVER_TEST`.`T2`,`TEST`.`T3`:`RECOVER_TEST`.`T3` REMAP_TABLEGROUP_LIST: REMAP_TABLESPACE_LIST: RESULT: FAILED COMMENT: import succeed table count: 0, failed table count: 3 DESCRIPTION: NULL 1 row in set
補助テナントの復旧タスクの結果を確認します。
obclient> SELECT * FROM oceanbase.CDB_OB_RESTORE_HISTORY\G補助テナントの復旧は、テナントレベルの物理復旧プロセスと一致しています。物理復旧結果の詳細については、物理復旧結果の確認を参照してください。
ステップ2:テナント間のテーブルエクスポートタスクの全体的な実行結果を確認する
テーブルレベルの復旧タスクの全体的な実行状況に基づいて、テナント間のテーブルエクスポートタスクの全体的な実行結果をさらに確認できます。
rootユーザーで、復旧対象のテーブルが存在するクラスタのsysテナントにログインします。以下のコマンドを実行して、ターゲットテナントのテナント間インポートタスクの結果を確認します。
obclient> SELECT * FROM oceanbase.CDB_OB_IMPORT_TABLE_JOB_HISTORY WHERE TENANT_ID = tenant_id AND INITIATOR_JOB_ID = recover_table_job_id\Gここで、
tenant_idは実際のテナントIDに置き換える必要があり、recover_table_job_idは ステップ1:テーブルレベルの復旧タスクの全体的な実行結果を確認する で照会したテーブルレベルの復旧タスクのJOB_IDに置き換える必要があります。CDB_OB_IMPORT_TABLE_JOB_HISTORYビューの各フィールドは基本的にCDB_OB_IMPORT_TABLE_JOBSと対応しています。その中で、フィールドCOMMENTはタスク失敗時の関連エラー情報を記録するために使用されます。ビューCDB_OB_IMPORT_TABLE_JOB_HISTORY内のフィールドの詳細については、物理復旧関連ビューの紹介 を参照してください。クエリ結果の例は次のとおりです:
例1:すべてのターゲットテーブルが正常に復旧されました
*************************** 1. row *************************** TENANT_ID: 1002 JOB_ID: 3 INITIATOR_TENANT_ID: 1002 INITIATOR_JOB_ID: 2 START_TIMESTAMP: 2025-09-11 11:43:15.204649 FINISH_TIMESTAMP: 2025-09-11 11:43:25.453894 SRC_TENANT_NAME: AUX_RECOVER$1692179849034890 SRC_TENANT_ID: 1004 STATUS: IMPORT_FINISH IMPORT_ALL: 0 DB_LIST: TABLE_LIST: `TEST`.`T1`,`TEST`.`T2`,`TEST`.`T3` REMAP_DB_LIST: REMAP_TABLE_LIST: `TEST`.`T1`:`RECOVER_TEST`.`T1`,`TEST`.`T2`:`RECOVER_TEST`.`T2`,`TEST`.`T3`:`RECOVER_TEST`.`T3` REMAP_TABLEGROUP_LIST: REMAP_TABLESPACE_LIST: TOTAL_TABLE_COUNT: 3 FINISHED_TABLE_COUNT: 3 FAILED_TABLE_COUNT: 0 RESULT: SUCCESS COMMENT: import succeed table count: 3, failed table count: 0 1 row in set例2:一部のターゲットテーブルが正常に復旧され、一部のテーブルは復旧に失敗しました
*************************** 1. row *************************** TENANT_ID: 1002 JOB_ID: 3 INITIATOR_TENANT_ID: 1002 INITIATOR_JOB_ID: 2 START_TIMESTAMP: 2025-09-11 11:43:15.204649 FINISH_TIMESTAMP: 2025-09-11 11:43:25.453894 SRC_TENANT_NAME: AUX_RECOVER$1692179849034890 SRC_TENANT_ID: 1004 STATUS: IMPORT_FINISH IMPORT_ALL: 0 DB_LIST: TABLE_LIST: `TEST`.`T1`,`TEST`.`T2`,`TEST`.`T3` REMAP_DB_LIST: REMAP_TABLE_LIST: `TEST`.`T1`:`RECOVER_TEST`.`T1`,`TEST`.`T2`:`RECOVER_TEST`.`T2`,`TEST`.`T3`:`RECOVER_TEST`.`T3` REMAP_TABLEGROUP_LIST: REMAP_TABLESPACE_LIST: TOTAL_TABLE_COUNT: 3 FINISHED_TABLE_COUNT: 2 FAILED_TABLE_COUNT: 1 RESULT: PARTIAL_SUCCESS COMMENT: import succeed table count: 2, failed table count: 1 1 row in set例3:ユーザーが途中でテーブルレベルの復旧タスクをキャンセルしたため、一部のターゲットテーブルが正常に復旧されました
*************************** 1. row *************************** TENANT_ID: 1002 JOB_ID: 3 INITIATOR_TENANT_ID: 1002 INITIATOR_JOB_ID: 2 START_TIMESTAMP: 2025-09-11 11:43:15.204649 FINISH_TIMESTAMP: 2025-09-11 11:43:25.453894 SRC_TENANT_NAME: AUX_RECOVER$1692179849034890 SRC_TENANT_ID: 1004 STATUS: IMPORT_FINISH IMPORT_ALL: 0 DB_LIST: TABLE_LIST: `TEST`.`T1`,`TEST`.`T2`,`TEST`.`T3` REMAP_DB_LIST: REMAP_TABLE_LIST: `TEST`.`T1`:`RECOVER_TEST`.`T1`,`TEST`.`T2`:`RECOVER_TEST`.`T2`,`TEST`.`T3`:`RECOVER_TEST`.`T3` REMAP_TABLEGROUP_LIST: REMAP_TABLESPACE_LIST: TOTAL_TABLE_COUNT: 3 FINISHED_TABLE_COUNT: 2 FAILED_TABLE_COUNT: 1 RESULT: PARTIAL_SUCCESS COMMENT: comment: OB_CANCEL(-4072), addr:11.xxx.xxx.xxx:18000, trace_id:Y4********-**********-0-0 1 row in set例4:すべてのターゲットテーブルが復旧に失敗しました
*************************** 1. row *************************** TENANT_ID: 1002 JOB_ID: 3 INITIATOR_TENANT_ID: 1002 INITIATOR_JOB_ID: 2 START_TIMESTAMP: 2025-09-11 11:43:15.204649 FINISH_TIMESTAMP: 2025-09-11 11:43:25.453894 SRC_TENANT_NAME: AUX_RECOVER$1692179849034890 SRC_TENANT_ID: 1004 STATUS: IMPORT_FINISH IMPORT_ALL: 0 DB_LIST: TABLE_LIST: `TEST`.`T1`,`TEST`.`T2`,`TEST`.`T3` REMAP_DB_LIST: REMAP_TABLE_LIST: `TEST`.`T1`:`RECOVER_TEST`.`T1`,`TEST`.`T2`:`RECOVER_TEST`.`T2`,`TEST`.`T3`:`RECOVER_TEST`.`T3` REMAP_TABLEGROUP_LIST: REMAP_TABLESPACE_LIST: TOTAL_TABLE_COUNT: 3 FINISHED_TABLE_COUNT: 0 FAILED_TABLE_COUNT: 3 RESULT: FAILED COMMENT: import succeed table count: 0, failed table count: 3 1 row in set
ステップ3:各テーブルの実行結果を確認する
クロステナントテーブルエクスポートタスクの実行状況に基づき、インポートに失敗したテーブルがある場合は、各テーブルの実行結果をさらに確認できます。
rootユーザーで、復元対象のテーブルが存在するクラスタのsysテナントにログインします。以下のコマンドを実行して、各テーブルのインポート結果を確認します。
obclient> SELECT * FROM oceanbase.CDB_OB_IMPORT_TABLE_TASK_HISTORY WHERE TENANT_ID = tenant_id AND JOB_ID = import_table_job_id\Gここで、
tenant_idは実際のテナントIDに置き換える必要があり、import_table_job_idは ステップ2:クロステナントテーブルエクスポートタスクの全体的な実行結果を確認する で照会したクロステナントテーブルエクスポートタスクのJOB_IDに置き換える必要があります。CDB_OB_IMPORT_TABLE_TASK_HISTORYビューの各フィールドは基本的にCDB_OB_IMPORT_TABLE_TASKSと対応しています。そのうち、COMMENTフィールドはタスクが失敗した場合の関連エラー情報を記録するために使用されます。ビューCDB_OB_IMPORT_TABLE_TASK_HISTORYのフィールドの詳細については、物理復旧関連ビューの紹介 を参照してください。クエリ結果の例は次のとおりです:
例1:ターゲットテーブルの復旧に成功し、ターゲットテーブルに関連付けられたSchemaもすべて正常に復旧しました。
*************************** 1. row *************************** TENANT_ID: 1002 TASK_ID: 1047 JOB_ID: 3 SRC_TENANT_ID: 1004 SRC_TABLESPACE: NULL SRC_TABLEGROUP: NULL SRC_DATABASE: TEST SRC_TABLE: T1 SRC_PARTITION: NULL TARGET_TABLESPACE: NULL TARGET_TABLEGROUP: NULL TARGET_DATABASE: RECOVER_TEST TARGET_TABLE: T1 TABLE_COLUMN: 7 STATUS: FINISH START_TIMESTAMP: 2025-09-11 11:43:15.270078 COMPLETION_TIMESTAMP: 2025-09-11 11:43:25.422834 CUMULATIVE_TS: -1 TOTAL_INDEX_COUNT: 2 IMPORTED_INDEX_COUNT: 2 FAILED_INDEX_COUNT: 0 TOTAL_CONSTRAINT_COUNT: 1 IMPORTED_CONSTRAINT_COUNT: 1 FAILED_CONSTRAINT_COUNT: 0 TOTAL_REF_CONSTRAINT_COUNT: 0 IMPORTED_REF_CONSTRAINT_COUNT: 0 FAILED_REF_CONSTRAINT_COUNT: 0 RESULT: SUCCEESS COMMENT: 1 row in set例2:ターゲットテーブルの復旧に成功しましたが、復旧処理中にユーザーが復旧済みのターゲットテーブルを削除しました。
*************************** 1. row *************************** TENANT_ID: 1002 TASK_ID: 1047 JOB_ID: 3 SRC_TENANT_ID: 1004 SRC_TABLESPACE: NULL SRC_TABLEGROUP: NULL SRC_DATABASE: TEST SRC_TABLE: T1 SRC_PARTITION: NULL TARGET_TABLESPACE: NULL TARGET_TABLEGROUP: NULL TARGET_DATABASE: RECOVER_TEST TARGET_TABLE: T1 TABLE_COLUMN: 7 STATUS: FINISH START_TIMESTAMP: 2025-09-11 11:43:15.270078 COMPLETION_TIMESTAMP: 2025-09-11 11:43:25.422834 CUMULATIVE_TS: -1 TOTAL_INDEX_COUNT: 2 IMPORTED_INDEX_COUNT: 2 FAILED_INDEX_COUNT: 0 TOTAL_CONSTRAINT_COUNT: 1 IMPORTED_CONSTRAINT_COUNT: 1 FAILED_CONSTRAINT_COUNT: 0 TOTAL_REF_CONSTRAINT_COUNT: 0 IMPORTED_REF_CONSTRAINT_COUNT: 0 FAILED_REF_CONSTRAINT_COUNT: 0 RESULT: SUCCEESS COMMENT: table type_tbl has been deleted by user 1 row in set例3:ターゲットテーブルの復旧に成功しましたが、ターゲットテーブルに関連付けられたSchemaの一部の復旧に失敗しました。
一般的に、テーブルに関連付けられたSchemaにはインデックステーブル、制約、外部キーなどが含まれますが、これらの復旧に失敗しても、メインテーブルのタスクの復旧には影響しません。例えば、以下の実行結果では、
FAILED_INDEX_COUNTが1である場合、ターゲットテーブルに関連付けられたインデックスのうち1つの復旧に失敗したことを意味しますが、メインテーブルの復旧タスクは依然として成功しています。***************************** 1. row *************************** TENANT_ID: 1002 TASK_ID: 1047 JOB_ID: 3 SRC_TENANT_ID: 1004 SRC_TABLESPACE: NULL SRC_TABLEGROUP: NULL SRC_DATABASE: TEST SRC_TABLE: T1 SRC_PARTITION: NULL TARGET_TABLESPACE: NULL TARGET_TABLEGROUP: NULL TARGET_DATABASE: TEST TARGET_TABLE: T1 TABLE_COLUMN: 2 STATUS: FINISH START_TIMESTAMP: 2025-09-11 11:43:15.270078 COMPLETION_TIMESTAMP: 2025-09-11 11:43:25.422834 CUMULATIVE_TS: -1 TOTAL_INDEX_COUNT: 2 IMPORTED_INDEX_COUNT: 1 FAILED_INDEX_COUNT: 1 TOTAL_CONSTRAINT_COUNT: 2 IMPORTED_CONSTRAINT_COUNT: 2 FAILED_CONSTRAINT_COUNT: 0 TOTAL_REF_CONSTRAINT_COUNT: 0 IMPORTED_REF_CONSTRAINT_COUNT: 0 FAILED_REF_CONSTRAINT_COUNT: 0 RESULT: SUCCEESS COMMENT: 1 row in set特に、Oracleモードでは、テーブルの制約名は同一ユーザー内で一意であることが求められます。テーブル名の主キー制約が制約名の競合により復旧に失敗した場合、メインテーブルの復旧に影響を与え、結果としてテーブル全体の復旧タスクが失敗します。例えば、以下の実行結果では、主キー制約の復旧に失敗したため、メインテーブルの復旧タスクが失敗しました。
***************************** 1. row *************************** TENANT_ID: 1002 TASK_ID: 1047 JOB_ID: 3 SRC_TENANT_ID: 1004 SRC_TABLESPACE: NULL SRC_TABLEGROUP: NULL SRC_DATABASE: TEST SRC_TABLE: T1 SRC_PARTITION: NULL TARGET_TABLESPACE: NULL TARGET_TABLEGROUP: NULL TARGET_DATABASE: TEST TARGET_TABLE: T1 TABLE_COLUMN: 2 STATUS: FINISH START_TIMESTAMP: 2025-09-11 11:43:15.270078 COMPLETION_TIMESTAMP: 2025-09-11 11:43:25.422834 CUMULATIVE_TS: -1 TOTAL_INDEX_COUNT: 0 IMPORTED_INDEX_COUNT: 0 FAILED_INDEX_COUNT: 0 TOTAL_CONSTRAINT_COUNT: 2 IMPORTED_CONSTRAINT_COUNT: 0 FAILED_CONSTRAINT_COUNT: 2 TOTAL_REF_CONSTRAINT_COUNT: 0 IMPORTED_REF_CONSTRAINT_COUNT: 0 FAILED_REF_CONSTRAINT_COUNT: 0 RESULT: FAILED COMMENT: OBE-02264: name already used by an existing constraint 1 row in set