フィジカル・スタンバイからRMANアクティブ・デュプリケーションでデータベースを複製する方法
本記事では、フィジカル・スタンバイデータベースをソースとして、ターゲット環境にデータベースを複製(デュプリケート)する手順を解説します。
データベースの複製では、ネットワーク経由でターゲットデータベースを補助先(Auxiliary)インスタンスへコピーし、そこから複製データベースを作成します。事前にRMANのバックアップやコピーを用意しておく必要はありません。
フィジカル・スタンバイからのデータベース複製は、Oracle® 11g Release 2以降のバージョンでサポートされています。
前提条件
フィジカル・スタンバイからRMANアクティブ・デュプリケーションを実行するには、以下の環境が必要です。
- データベース:Oracle 11g 〜 最新バージョン
- プラットフォーム:Linux® 7
- スタンバイDB名:
PROD_DR - ターゲットDB名:
TEST
スタンバイデータベースを読み取り専用モードでオープンする
まず、フィジカル・スタンバイデータベースのリカバリを停止し、データベースを読み取り専用モードでオープンして、複製操作を受け入れられる状態にします。
以下のコマンドで、スタンバイデータベースの現在のステータスを確認します。
PROD_DR> select name, open_mode, log_mode from v$database;
出力は次のようになります。
NAME OPEN_MODE LOG_MODE
--------- -------------------- ------------
PROD_DR MOUNTED ARCHIVELOG
続いて、以下のコマンドでスタンバイデータベースのリカバリを停止します。
SQL> alter database recover managed standby database cancel;
Database altered.
その後、データベースを読み取り専用モードでオープンします。
SQL> alter database open read only;
Database altered.
再度ステータスを確認し、MOUNTEDではなくREAD ONLYになっていることを確認します。
PROD_DR> select name, open_mode,log_mode from v$database;
NAME OPEN_MODE LOG_MODE
--------- -------------------- ------------
PROD_DR READ ONLY ARCHIVELOG
ターゲットサーバーを準備する
このセクションでは、スタンバイ側のOracleホーム一式をターゲットインスタンスのサーバーへコピーし、ソースデータベースからpfile(パラメータファイル)を作成して、新しいデータベース名に合わせた修正を行います。
注意: 同じサーバー上へデータベースを複製する場合は、DB_NAME、DB_UNIQUE_NAME、DB_FILE_NAME_CONVERT、LOG_FILE_NAME_CONVERTに適切な値を必ず設定してください。
まず、以下のコマンドでpfileを作成します。
cd $ORACLE_HOME/dbs
initTEST.ora
*.control_files='+DATA/cntrl01.dbf', '+DATA/cntrl02.dbf'
*.db_create_file_dest='+DATA'
*.db_file_name_convert='+PROD_DR_DATA','+DATA'
*.db_name='TEST'
*.db_unique_name='TEST'
*.diagnostic_dest='/u01/app/diag'
*.log_file_name_convert='+PROD_DR_DATA','+DATA'
既存のスタンバイ用パスワードファイルをコピーし、TESTデータベースのSIDに合わせてリネームします。あるいは、同じパスワードを使用してターゲットサーバー上に新しいパスワードファイルを作成してもかまいません。
cd $ORACLE_HOME/dbs
cp orapwPROD_DR orapwTEST
静的リスナーを構成する
次に、テストデータベース用の静的リスナー登録を以下の手順で構成します。
cd $ORACLE_HOME/network/admin
cat listener.ora
ADR_BASE_LISTENER_LOCAL = /u01/app/oracle
LISTENER_LOCAL =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = TEST.ras.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER_LOCAL = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = DGNEER) (ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1) (SID_NAME = TEST)))
以下のコマンドでリスナーを起動します。
lsnrctl status listener_local
出力例は次のとおりです。
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 09-JUN-2020 02:57:35
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST= TEST.ras.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias listener_local
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 04-JAN-2020 04:53:15
Uptime 156 days 21 hr. 4 min. 19 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.1.0.2/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/12.1.0.2/dbhome_1/admin/diag/tnslsnr/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= TEST.ras.com)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "TEST" has 2 instance(s).
Instance "TEST", status UNKNOWN, has 1 handler(s) for this service...
Instance "TEST", status READY, has 1 handler(s) for this service...
The command completed successfully
Oracle Netエイリアスを作成する
続いて、スタンバイデータベースへ接続するためのOracle Netエイリアスを作成します。
PROD_DR=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST= standbydb.ras.com)(PORT=1523))
(CONNECT_DATA=
(SID=PROD_DR)
)
)
ターゲットデータベースを起動する
以下のコマンドを実行し、ターゲットデータベースをnomount状態で起動します。
sqlplus "/ as sysdba"
startup nomount
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- -------------
db_name string TEST
SQL> show parameter uniq
NAME TYPE VALUE
------------------------------------ ----------- -------------
db_unique_name string TEST
RMANで接続をテストする
ターゲットデータベースがnomount状態で起動したら、RMANで接続できることを確認します。
[oracle@TEST.ras.com dbs]$ rman target sys@PROD_DR auxiliary sys@TEST
Recovery Manager: Release 12.1.0.2.0 - Production on Thu Jun 09 03:25:22 2020
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
target database Password:
connected to target database: PROD_DR (DBID=4252464621)
auxiliary database Password:
connected to auxiliary database: TEST (not mounted)
データベースをリストアおよび複製する
以下のコマンドを使用して、スタンバイデータベースをターゲットデータベースへリストアおよび複製します。
RMAN> target sys@PROD_DR auxiliary sys@TEST
RMAN> duplicate target database to TEST from active database nofilenamecheck;
duplicateコマンドが完了した後、以下のコマンドでスタンバイデータベースを再起動し、リカバリを再有効化します。
PROD_DR> shut immediate
PROD_DR> startup mount;
PROD_DR> alter database recover managed standby database disconnect from session;
ターゲットデータベースのステータスを確認する
以下のコマンドで、複製されたターゲットデータベースのステータスを確認します。
[oracle@TEST.ras.com dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 9 05:15:53 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
SQL> select name, open_mode, log_mode , database_role from v$database;
NAME OPEN_MODE LOG_MODE DATABASE_ROLE
--------- -------------------- ------------ ----------------
TEST READ WRITE ARCHIVELOG PRIMARY
まとめ
本記事では、物理バックアップを一切取得することなくフィジカル・スタンバイからデータベースを複製し、スタンバイデータベースが供給する最新のアーカイブログの時点までターゲットデータベースをリストアしました。RMANアクティブ・デュプリケーションを活用すれば、バックアップを介さずに効率的なクローン環境の構築が可能です。
参考文献
- Performing RMAN duplicate from standby to create a new clone (Doc ID 1665784.1)
データベースに関する詳細は、関連ドキュメントをご参照ください。
ご意見やご質問がある場合は、フィードバックタブからお気軽にお寄せください。また、Sales Chatをクリックいただければ、すぐにチャットでご相談いただけます。
-
Oracle SE/SE2向けディザスタリカバリを実現するDbvisit Standby徹底解説
Dbvisit Standbyは、Oracle® Standard Edition(SE)およびStandard Edition 2(SE2)データベース向けに設計されたレプリケーションツールです。 はじめに Oracleデータベースのディザスタリカバリ(DR)環境を構築する際、コストは常に大きな検討要素となります。Oracle Standard Editionには標準でDRソリューションが含まれていませんが、Dbvisitはこの課題に対する有効なソリューションを提供しています。Dbvisitは、長年の実績で信頼性が証明されているOracleのアーカイブログおよびREDOログの仕組みを活用し、
-
増分バックアップを使用してフィジカル・スタンバイ・データベースをリカバリーする方法
スタンバイ・データベースとは、本番データベースの一貫性のあるコピーのことです。本番環境で災害やデータ損失、データ破損が発生した際の保護手段として重要な役割を果たします。 はじめに プライマリ・サイトとスタンバイ・サイトの間にラグ(遅延)が発生する主な理由としては、以下が挙げられます。 プライマリ・データベースとスタンバイ・データベース間のネットワーク帯域幅の問題 スタンバイ・データベースが利用できない状態 プライマリ・データベース上のアーカイブREDOデータの誤削除 プライマリ・サイトからアーカイブログをコピーして適用することで両環境を同期させることも可能ですが、この方法は非常に時間がかか