プライマリ・データベースとスタンバイ・データベースのバックアップ

この項では、プライマリ・データベースおよびスタンバイ・データベースをリカバリ・アプライアンスに登録およびバックアップする方法について説明します。

リカバリ・アプライアンスを使用するプライマリ・データベースおよびスタンバイ・データベースの前提条件

リカバリ・アプライアンスでは、プライマリ・データベースおよびスタンバイ・データベースでリカバリ・アプライアンスにバックアップする前に、いくつかの操作を実行するか、その状態である必要があります。

  1. プライマリまたはスタンバイのリカバリ・アプライアンスで、RASYSまたは同等のadmin_userであるユーザーとしてログインします。
  2. プライマリおよびスタンバイのリカバリ・アプライアンスに新しい保護ポリシーを作成します。
    既存の保護ポリシーを使用できるため、このステップはオプションです。
    コマンドracli create protection_policyを実行します。
    読みやすいようにフォーマットしたコマンドの例を次に示します。
    racli create protection_policy 
    --protection_policy_name=GOLD_POLICY 
    --storage_location_name=DELTA 
    --recovery_window_goal=30days
    --unprotected_window=15min 
    --guaranteed_copy=NO
    --allow_backup_deletion=YES 
    --store_and_forward=NO
    
  3. プライマリおよびスタンバイのリカバリ・アプライアンスにVPCユーザー・アカウントを作成します。
    このステップは、新しいユーザーが必要な場合にのみ必要です。既存のVPCユーザー・アカウントを使用できます。
    コマンドracli add db_userを実行します。
    myVpcUser1用の読みやすいようにフォーマットしたコマンドの例を次に示します。
    racli add db_user --user_name=myVpcUser1 --user_type=vpc 

    Enterprise Managerを使用する場合、VPCを認識しないため、Enterprise Managerはデータベース側の構成を実行してリカバリ・アプライアンスにバックアップを送信したり、リカバリ・アプライアンスにバックアップをスケジュールしたりできなくなります。

    リカバリ・アプライアンス管理者がEnterprise Managerの保護されたデータベースの追加ワークフロー(次のステップのような)を実行すると、Enterprise Managerがリカバリ・アプライアンスのVPCを認識するようになります。

  4. Enterprise Managerにリカバリ・アプライアンスの仮想プライベート・カタログを認識させます。
    このステップは、Enterprise Managerが使用されている場合にのみ必要です。
    1. Enterprise Managerの「ターゲット」メニューで、「データベース」を選択します。
    2. 「データベース」ページで、メニュー項目「可用性」→「リカバリ・カタログ」を選択します。·
    3. ベース・リカバリ・アプライアンス・カタログを選択し、「仮想プライベート・カタログの管理」をクリックします。·
    4. 「Enterprise Managerでの既存の仮想プライベート・カタログの管理」ラジオ・ボタンを選択し、処理を続行します。
  5. プライマリ・データベースをプライマリおよびスタンバイのリカバリ・アプライアンスに追加します。
    コマンドracli add protected_dbを実行します。
    読みやすいようにフォーマットしたコマンドの例を次に示します。
    racli add protected_db --db_unique_name=myDatabase 
    --protection_policy_name=GOLD --reserved_space=1500G 

    --reserved_spaceは、データベースのサイズの約2倍(2x)にする必要があります。

    ノート:

    登録できるのはプライマリ・データベースのみです(スタンバイではなく)。プライマリとスタンバイのリカバリ・アプライアンスの両方で、プライマリ・データベースのdb_unique_nameを登録しています。

    Dataguardデータベースを後で作成する場合、Dataguardデータベースではこのステップを後で実行できます。

  6. VPCユーザーがプライマリとスタンバイの両方のリカバリ・アプライアンスでプライマリ・データベースを管理できるようにします。
    コマンドracli grant db_accessを実行します。
    次に例を示します。
    racli grant db_access --db_unique_name=myDatabase 
    --tenant_identifier=TENANT_ID 
    --username=myVpcUser1 

    この操作では、myVpcUser1アカウントを使用して新しいデータベースを管理できるように、リカバリ・アプライアンスのVPCユーザーがデータベースに接続します。このアカウントは、データベースのバックアップおよびリストアに使用されます。複数のVPCユーザーがデータベースを管理できますが、通常は1人のみが使用されます。

保護されたデータベース・サーバーの準備

保護されたデータベース・サーバーでは、プライマリ・データベースとスタンバイ・データベースを登録する前に、いくつかの準備が必要です。

ノート:

これは、$ORACLE_HOMEごとに1回のみ実行する必要があります。スタンバイ・データベース・サーバーを後で作成する場合、スタンバイ・データベース・サーバーではこれらの手順を後で実行できます。
  1. [選択肢1] Java RAバックアップ・モジュールを実行します。
    1. Oracleから現在のバックアップ・モジュールをダウンロードします(Oracle ZDLRAバックアップ・モジュールを参照)。
    2. READMEファイルの情報に従って、ra_install.jarファイルを実行します。

    完了する必要がある2つのステップは次のとおりです:

    • リカバリ・アプライアンスのカタログ資格証明を格納するウォレット・ファイルを作成します。
    • 適切なOS/プラットフォーム用の現在のlibra.soをダウンロードします。

    RACクラスタの場合:

    • このプロセスをすべてのノードで実行するか、
    • すべてのノードに構成ファイルを追加します。
      • ウォレット・ファイル
      • libra.so
      • sqlnet.orgの変更
    コマンドを実行します。
  2. [選択肢2、および後続のステップ]保護されたデータベース・サーバーを手動で構成します。
  3. 保護されたデータベース・サーバーにウォレットを作成します。
    1. ウォレットを保持するディレクトリ($ORACLE_HOME/dbs/zdlra)を作成します。
    2. mkstoreを実行してウォレット・ファイルを作成するか、ezconnect形式を使用して新しい資格証明を追加します。
    mkstoreコマンドを実行します。
    mkstore -wrl $ORACLE_HOME/dbs/zdlra/ -createCredential <db SCAN listener:PORT/Service:dedicated> 
     <VPCUSER>  <password>

    ノート:

    • プライマリとスタンバイの両方のリカバリ・アプライアンスの接続文字列/VPCユーザーを追加します。これは、プライマリ・データベース・サーバーとスタンバイ・データベース・サーバーの両方に対して行う必要があります。
    • これは、RACクラスタ内のすべてのホストで実行する必要があります。sqlnet.oraファイルとウォレット・ファイルは、ノード間でコピーできます。
    • リカバリ・アプライアンスに接続する各データベース・ホームでこれを行う必要があり、新しいインストールにコピーする必要があります。
    • ウォレット・ファイルは、OSバックアップの一部としてバックアップする必要があります。
    • データベースに標準のVPCUSERアカウントを使用している場合は、これを事前にステージングできます。VPCUSERの資格証明を含む現在のウォレット・ファイルを中央の場所からコピーします。
    • $ORACLE_HOMEごとにウォレットに含めることができる接続文字列(/@<db SCAN listener:PORT/Service:dedicated>)は1つのみです。
  4. 保護されたデータベース・サーバーでウォレットをテストします。

    プライマリおよびスタンバイの両方のリカバリ・アプライアンスすべてのデータベース・サーバーで、SQLPLUSコマンドを使用してウォレット・ファイルのエントリをテストします。

    SQL > sqlplus /@<primary ZDLRA connection>
    SQL> sqlplus /@<standby ZDLRA connections>
    SQL> sqlplus /@<db SCAN listener:PORT/Service:dedicated>  

    例:

    SQL> sqlplus /@slcm_adm03_scan.us.mycompany.com:1521/zdlra1:dedicated
  5. 資格証明をリストします。
    mkstore -wrl $ORACLE_HOME/dbs/zdlra -listCredential
  6. ウォレットの場所の行をsqlnet.oraファイルに追加します。
    この$ORACLE_HOMEの場所にあるデータベースにリアルタイムREDOを使用しない場合、これはオプションのステップです。次のようになります。
    SQLNET.WALLET_OVERRIDE = true
    WALLET_LOCATION =
    	(SOURCE =
    	  	(METHOD = FILE)
    	  	(METHOD_DATA =
    			(DIRECTORY = <ORACLE_HOME>/dbs/zdlra)
    		  )
    	)
    
  7. 保護されたデータベース・サーバーにSBTライブラリ・ファイルを追加します。
    • 現在のlibra.soファイルをダウンロードします。
    • または、同じOS/プラットフォームを使用している別のサーバーから現在のlibra.soファイルをコピーします。

    ノート:

    • 通常、これは$ORACLE_HOME/libディレクトリにあります。
    • これは、RACクラスタ内のすべてのノードに対して行う必要があります。ライブラリはノード間でコピーできます。

プライマリ保護データベースの登録

プライマリ保護データベースをプライマリおよびセカンダリのリカバリ・アプライアンスに登録します

登録できるのはプライマリ・データベースのみです。スタンバイ・データベースは登録できません。次のステップでは、保護されたデータベース・サーバーのRMANクライアントを使用して、プライマリ・データベースをプライマリおよびセカンダリのリカバリ・アプライアンスに登録します。
ウォレットを配置すると、リカバリ・カタログに接続できます。
  1. リカバリ・アプライアンス・カタログに接続します。

    次のコマンドを実行します

    RMAN>  CONNECT TARGET /
     connected to target database: PROD (DBID=1619241818)
    
    RMAN> CONNECT CATALOG /@<db_SCAN_name:PORT/Service:dedicated>  
    connected to recovery catalog database
    
    RMAN> REGISTER DATABASE;
    database registered in recovery catalog
    starting full resync of recovery catalog
    full resync complete
    

    ノート:

    データベースを手動で登録すると、この構成に関するメッセージがEnterprise Manager内から表示されることがあります。「リカバリ・カタログ設定」へのリンクに従って、controlfileではなくリカバリ・カタログを使用するようにデータベースを変更します。
    .
  2. (オプション)プライマリ保護データベースおよびスタンバイ・データベースのリアルタイムREDO適用を構成します。
    • データベースは、archivelogモードで実行されている必要があります。
    • データベースのdb_unique_nameを設定する必要があります
    .
  3. ウォレット構成の更新

    通常、データベース・バックアップを管理するZDLRA上の同じVPCUSERアカウントがREDO転送に使用されます。このユーザーはすでにウォレットに存在します。

    自動ra_install.jarプロセスを使用してリカバリ・アプライアンスを構成した場合は、ウォレットの場所をSQLNET.ORAファイルに追加するステップに従ってください。

  4. プライマリ・データベースとスタンバイ・データベースの両方でデータベース構成パラメータを更新します。
    REMOTE_LOGIN_PASSWORDFILE=shared
    LOG_ARCHIVE_FORMAT=’log_%d_%t_%s_%r.arc’
    
    .
  5. プライマリのLOG_ARCHIVE_CONFIG初期化パラメータをDG_CONFIGリストが含まれるように設定します。

    保護されたデータベースから、アーカイブ・ログ構成を変更して、リカバリ・アプライアンスと現在の保護されたデータベースの両方を含めます。

    SQL > ALTER SYSTEM SET LOG_ARCHIVE_CONFIG=
    ’DG_CONFIG=(<ZDLRA DB>,<DB_UNIQUE_NAME_PRIMARY>,<DB_UNIQUE_NAME_STANDY>)’  SCOPE=BOTH;
    
    .
  6. プライマリ・データベースでREDO転送ユーザーを作成します。

    ノート:

    プライマリとスタンバイの両方のリカバリ・アプライアンスにVPCユーザーを追加します。

    プライマリ保護データベースから、プライマリREDOログの送信に使用するVPCユーザーをデータベースに作成します。

    SQL>create <VPCUSER PRIMARY> identified by xxx;
    SQL> grant create session to <VPCUSER PRIMARY >;
    SQL>grant sysdg to  <VPCUSER PRIMARY > ;  --- if 12c
    SQL>grant sysoper to <VPCUSER PRIMARY >;  -- Not 12c
    SQL>create <VPCUSER STANDBY> identified by xxx;
    SQL> grant create session to <VPCUSER STANDBY >;
    SQL>grant sysdg to  <VPCUSER STANDBY > ;  --- if 12c
    SQL>grant sysoper to <VPCUSER STANDBY >;  -- Not 12c
    SQL> alter system archive log current; -- ensure it transfers to standby database.
    
    .
  7. プライマリ・データベースからスタンバイ・データベースにパスワード・ファイルをコピーします。

    ノート:

    両方が含まれるようにするには、これはスタンバイ・データベースのVPCUSERの作成後である必要があります。

    プライマリ・データベース・サーバーの$ORACLE_HOME/dbsからスタンバイ・データベース・サーバーの$ORACLE_HOME/dbs/orapw<stdby database>orapw<primarydatabase>ファイルをコピーします。

  8. プライマリ・データベースとスタンバイ・データベースの両方でパスワード・ファイルを確認します。
    プライマリ・データベースとデータガード・データベースの両方で実行します。パスワード・ファイルの両方のVPCユーザーが表示されます。
    SQL> select  * from v$pwfile_users;

REDO転送の変更

  1. プライマリ・データベースのREDO転送ユーザーを変更します。

    redo_transport_userパラメータを変更して、プライマリ・リカバリ・アプライアンスのVPCUSERを使用します。

    SQL> alter system redo_transport_user=<VPCUSER PRIMARY>;
    
  2. スタンバイ・データベースのREDO転送ユーザーを変更します。

    ノート:

    スタンバイ・データベースを後で作成する場合、このステップは後で実行できます。

    SQL> Alter system set redo_transport_user=<VPCUSER STANDBY>;
  3. プライマリ・リカバリ・アプライアンスをアーカイブ先としてプライマリ・データベースに追加します。

    次のログ保存先を更新して、プライマリ・リカバリ・アプライアンスの接続情報を含めます。ウォレット・ファイルの作成時に指定された接続文字列を使用します。

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_<next>=
    ‘SERVICE=”<primary string from wallet>”, 
    VALID_FOR=(ALL_LOGFILES, ALL_ROLES) ASYNC
    DB_UNIQUE_NAME=<primary ZDLRA DB>’ SCOPE=BOTH;
    

    次のログ保存先の状態を更新して有効にします。

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_<next>= ENABLE SCOPE=BOTH;
  4. プライマリ・データベースを再起動して、変更を有効にします。

    データベースの起動時にsqnet.oraファイルがすでに配置されている場合、これは必要ありません。

    すべてのインスタンスを停止/起動して、sql*netの変更を有効にします。

  5. スタンバイ・リカバリ・アプライアンスをアーカイブ先としてスタンバイ・データベースに追加します。

    次のログ保存先を更新して、スタンバイZDLRAの接続情報を含めます。ウォレット・ファイルの作成時に指定された接続文字列を使用します

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_<next>= ‘SERVICE=”<standby string from wallet>”, 
    VALID_FOR=(ALL_LOGFILES, ALL_ROLES) ASYNC DB_UNIQUE_NAME=<standby ZDLRA DB>’ SCOPE=BOTH; 

    次のログ保存先の状態を更新して有効にします。

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_<next>= ENABLE SCOPE=BOTH
  6. プライマリ・データベースでアーカイブ・ログ構成をテストします。
    select status,error from v$archive_dest where dest_id=<destination>; 

    ユーザーの変更後もリカバリが正常に機能していることを確認します。

  7. プライマリ・データベースおよびスタンバイ・データベースにデフォルトのチャネル構成を追加します。

    チャネルは、適切なリカバリ・アプライアンスを指すように構成されます。

    RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' FORMAT '%d_%U' 
    PARMS "SBT_LIBRARY=<ORACLE_HOME>/lib/libra.so, ENV=(RA_WALLET='location=file:<ORACLE_HOME>/dbs/zdlra 
    credential_alias=< string from wallet >’)";  
    
    RMAN> CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM <n> BACKUP TYPE TO BACKUPSET;  
    
    RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;  
    
    RMAN> CONFIGURE BACKUP OPTIMIZATION ON;  
    
    RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;  
    
    RMAN> CONFIGURE DEFAULT DEVICE TYPE to SBT_TAPE;
  8. レベル0の明示的なバックアップの実行
    RMAN> connect target / 
    
    RMAN> connect catalog /@<string from wallet> 
    
    RMAN>run 
    { backup cumulative incremental level 0 section size 32g database plus archivelog not backed up; }
  9. 定期的な増分のスケジュール
    RMAN> connect target / 
    
    RMAN> connect catalog /@<string from wallet> 
    
    RMAN>run 
    { backup cumulative incremental level 1 database plus archivelog not backed up; }