はじめに
みなさん、こんにちは。
Oracle Cloud Infrastructure検証チームです。
今回は、Oracle Cloud Infrastructure(OCI)のオブジェクト・ストレージに取得したバックアップからdbaascliを使用してデータベースリカバリを実施する方法について、ご紹介したいと思います。
オブジェクト・ストレージに取得するために、dbaascliを使用してバックアップを取得できますが、リカバリにもdbaascliを使用してデータベースリカバリが可能です。
リカバリオプション
dbaascliを使用したリカバリには、dbaascli database recover コマンドを使用します。
また、リカバリには下記の指定が可能です。
- –untilTime(時間指定)
- –untilSCN(SCN指定) ★今回の記事で取り上げます
- –latest(最新の状態)
- –tag(バックアップtag指定)
今回は、SCN指定でデータベースリカバリを試してみたいと思います。
前準備
データベースリカバリができたかを確認するために、事前にテーブルを作成して、SCNを確認しておきます。
$ date Sun Nov 13 12:37:09 UTC 2022 $ sqlplus / as sysdba SQL> create table table_01 ( 2 col01 VARCHAR2(10) 3 ); Table created. SQL> select table_name from user_tables where table_name='TABLE_01'; TABLE_NAME -------------------------------------------------------------------------------- TABLE_01 SQL> select current_scn from v$database; CURRENT_SCN ---------------- 87654321
dbaascliを使用してオブジェクトストレージにバックアップを取得します。
※dbaascliを使用したオブジェクトストレージへのデータバックアップ方法については過去記事をご参照ください。下図から該当記事へ遷移出来ます。
バックアップを取得した後に、作成したテーブルを削除します。
SQL> DROP TABLE TABLE_01; Table dropped. SQL> select table_name from user_tables where table_name='TABLE_01'; no rows selected SQL>
データベースリカバリ
以下のようなコマンドを実行し、データベースリカバリを実施します。
# dbaascli database recover --dbname TESTCDB --start --untilSCN 87654321 ←確認したSCN
DBAAS CLI version XX.X.X.X.X
Executing command database recover --start --untilSCN 87654321
DBaaS Backup API VX.X @XXXX Multi-Oracle home
-> Action : recover_start
-> logfile : /var/opt/oracle/log/TESTCDB/bkup_api_log/bkup_api_XXXXXXXX_XXXXXXXXXXXXXX.XXXXXX.log
UUID 9876543210abcdefghijklmnopqrstuv for this backup
** process started with PID: 123456
** see log file for monitor progress
--------------------------------------
dbaascli execution completed
リカバリステータスの確認
バックアップ時と同じように、データベースリカバリでもリカバリのステータスを確認することができます。
uuidには、上記、データベースリカバリ実行時に表示されるuuidを指定します。
リカバリ実行中には、以下のような標準出力となります。
# dbaascli database recover --dbname TESTCDB --status --uuid 9876543210abcdefghijklmnopqrstuv
DBAAS CLI version XX.X.X.X.X
Executing command database recover --status --uuid 9876543210abcdefghijklmnopqrstuv
DBaaS Backup API VX.X @XXXX Multi-Oracle home
@ STARTING CHECK STATUS 9876543210abcdefghijklmnopqrstuv
[ REQUEST TICKET ]
[UUID -> 9876543210abcdefghijklmnopqrstuv
[DBNAME -> TESTCDB
[STATE -> running
[ACTION -> recovery-start
[STARTED -> 2022-11-10 15:49:XX UTC
[ENDED -> UTC
[PID -> 123456
[TAG -> SCN 87654321
[PCT -> 90.0
[ END TICKET ]
dbaascli execution completed
リカバリ成功時には、以下のような出力となります。
# dbaascli database recover --dbname TESTCDB --status --uuid 9876543210abcdefghijklmnopqrstuv
DBAAS CLI version XX.X.X.X.X
Executing command database recover --status --uuid 9876543210abcdefghijklmnopqrstuv
DBaaS Backup API VX.X @XXXX Multi-Oracle home
@ STARTING CHECK STATUS 9876543210abcdefghijklmnopqrstuv
[ REQUEST TICKET ]
[UUID -> 9876543210abcdefghijklmnopqrstuv
[DBNAME -> TESTCDB
[STATE -> success
[ACTION -> recovery-start
[STARTED -> 2022-11-10 15:49:XX UTC
[ENDED -> 2022-11-10 15:59:XX UTC
[PID -> 123456
[TAG -> SCN 87654321
[PCT -> 100
[LOG -> 2022-11-10 15:49:XX.XXXXXX - API:: Logfile is /var/opt/oracle/log/TESTCDB/orec/orec_2022-11-10_15:49:XX.XXXXXXXXXXXX.log
[LOG -> 2022-11-10 15:49:XX.XXXXXX - API:: RUNNINg IN NON DATAGUARD ENVIRONMENT
[LOG -> 2022-11-10 15:49:XX.XXXXXX - API:: DATA mode only
[LOG -> 2022-11-10 15:49:XX.XXXXXX - API:: Stopping GRID DB
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: State GRID DB
[LOG -> 2022-11-10 15:49:XX.XXXXXX - API:: Executing SHUTDOWN ABORT...2022-11-10 11:50:XX.XXXXXX - Output from sql shutdown abort is:
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: Verifying scn validity...
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: Checking prerequirements before recovery process.
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: State GRID DB
[LOG -> ORA-01034: ORACLE not available2022-11-10 11:50.XX.XXXXXX - API:: DB Status : 0
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: Checking for PFILE in file system...
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: PFILE is present in file system.
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: Changing instance to MOUNT stage.
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: Shutting down the database...2022-11-10 11:50:XX.XXXXXX - DEBUG: SQL Executing set hea off set pagesize 5000
set linesize 400 set newpage none shutdown abort; quit
[LOG -> 2022-11-10 15:50:XX.XXXXXX - API:: (RMAN) Startup mount...2022-11-10 11:51:XX.XXXXXX -
[LOG -> 2022-11-10 15:51:XX.XXXXXX - API:: Checking for PDBs directories.
[LOG -> 2022-11-10 15:51:XX.XXXXXX - API:: Opening DB in order to validate PITR parameter
[LOG -> 2022-11-10 15:51:XX.XXXXXX - API:: Catalog mode: 2022-11-10 11:51:XX.XXXXXX - Disabled
[LOG -> 2022-11-10 15:51:XX.XXXXXX - API:: Testing RMAN connection.
[LOG -> 2022-11-10 15:51:XX.XXXXXX - API:: bkup_standby_enabled = no
[LOG -> 2022-11-10 15:51:XX.XXXXXX - API:: Verifying backups dates ..
[LOG -> 2022-11-10 15:52:XX.XXXXXX - API:: Performing PITR using SCn number 123456 ...2022-11-10 11:52:XX.XXXXXX - API:: Checking if PITR is across incarnation ...
[LOG -> 2022-11-10 15:52:XX.XXXXXX - API:: Determining current incarnation ...
[LOG -> 2022-11-10 15:52:XX.XXXXXX - API:: Determining target incarnation for SCN: 123456 ...
[LOG -> API:: PITR is within current incarnation 11
[LOG -> 2022-11-10 15:52:XX.XXXXXX - API:: Starting all instance in mount mode
[LOG -> 2022-11-10 15:52:XX.XXXXXX - API:: Shutting down the database...2022-11-10 11:52:XX.XXXXXX - DEBUG: SQL Executing set hea off set pagesize 5000
set linesize 400 set newpage none shutdown abort; quit
[LOG -> 2022-11-10 15:52:XX.XXXXXX - API:: State database verbose
[LOG -> 2022-11-10 15:56:XX.XXXXXX - API:: Stopping GRID DB
[LOG -> 2022-11-10 15:57:XX.XXXXXX - API:: State GRID DB
[LOG -> 2022-11-10 15:57:XX.XXXXXX - API:: Starting GRID DB
[LOG -> 2022-11-10 15:58:XX.XXXXXX - API:: State GRID DB
[LOG -> 2022-11-10 15:58:XX.XXXXXX - API:: Recovery to SCN completed.
[LOG -> 2022-11-10 15:58:XX.XXXXXX - API:: Patching database...
[ END TICKET ]
dbaascli execution completed
データベースリカバリが完了しました。
前作業で削除したテーブルがある状態に、データベースが戻っているか確認します。
SQL> select table_name from user_tables where table_name='TABLE_01';
TABLE_NAME
--------------------------------------------------------------------------------
TABLE_01
SQL>
テーブルがあることが確認できました。
バックアップ後に削除したテーブルがデータベースリカバリで戻りました。
おわりに
今回はdbaascliを使用したデータベースリカバリを試してみましたが、いかがでしたでしょうか?
バックアップと同様にdbaascliユーティリティを使用することで、簡単にデータベースリカバリが実施できたかと思います。
今回は割愛をしましたが、PDB単位のリカバリは、dbaascli pdb recoveryを使用して、リカバリ可能なようです。
最後までご覧いただきありがとうございました!
Oracle Cloudをご検討の際は弊社までお問い合わせください。
当社のプロ集団にお任せください!
投稿者プロフィール
- Dbvisit Standby2024年12月20日【Dbvisit Standby】チュートリアル_サポートパッケージ
- 23ai2024年12月19日【Oracle 23ai 新機能】読み取り専用ユーザを使ってみました
- Oracle Cloud2024年12月5日OCI ブロック・ボリュームのパフォーマンスについて検証してみた!
- 23ai2024年12月4日【Oracle 23ai 新機能】True Cacheを紹介・導入してみました