バックアップからの復元

ソース・データベースのデータベース・バックアップからターゲット・データベースにデータをリストアします。

ターゲット・データベースへのOracle Database Backupのインストール

oci_install.jarファイルをターゲット・データベース・ホストにコピーし、コマンドを実行してOracle Databaseバックアップをターゲットにインストールします。

ソース・データベースにOracle Database Backup Cloud Serviceをインストールします
  1. 要塞ホストを介してoci_install.jarファイルをターゲット・データベース・ホストにコピーし、解凍します。
    BASTION_IP=BASTION_IP # public IP
    DB_HOST=DB_HOST # private IP
    
    scp -o ProxyCommand="ssh -W %h:%p
    opc@${BASTION_IP}" oci_install.jar 
    opc@${DB_HOST}:~/
    
    ssh -J opc@${BASTION_IP} opc@${DB_HOST} 'sudo chown oracle:oinstall oci_install.jar; sudo mv oci_install.jar
    /home/oracle/'
  2. 要塞ホストを介してOCIターゲット・データベースにSSH接続し、oracleユーザーに切り替えます。
    ssh -J opc@${BASTION_IP} opc@${DB_HOST}
    sudo su - oracle
  3. 現在のウォレットをバックアップし、ターゲット・データベースにウォレットをインストールします。
    mv $ORACLE_HOME/data/wallet $ORACLE_HOME/data/wallet_bck
    mkdir -p $ORACLE_HOME/data/wallet
    unzip wallet.zip -d $ORACLE_HOME/data/wallet/
  4. Database Cloud Backup Moduleコマンドを実行して、ライブラリをインストールし、configファイルを作成します。
    これは、ソース・データベースにOracle Database Backup Cloud Serviceをインストールするために実行したコマンドと同じですが、ORACLE_HOME変数は異なる場合があります。
    java -jar oci_install.jar \
    -host https://objectstorage.region.oraclecloud.com \
    -pubFingerPrint wallet_public_key_fingerprint \
    -tOCID tenancy_OCID \
    -uOCID user_OCID \
    -cOCID compartment_OCID \
    -libDir $ORACLE_HOME/lib \
    -walletDir $ORACLE_HOME/data/wallet \
    -pvtKeyFile $ORACLE_HOME/data/wallet/oci_pvt \
    -bucket bucket_name \
    -configFile ~/config
    
    configファイルがoracleユーザーのホーム・フォルダに表示されます。
  5. 元のターゲット・データベースのSPFファイルをSID_NAMEでバックアップします。
    元のターゲット・データベースのSPFファイルをバックアップしない場合、RMANはそれを使用してバックアップをリストアし、失敗します。
    mv $ORACLE_HOME/dbs/spfileSID_NAME.ora $ORACLE_HOME/dbs/spfileSID_NAME.ora.bck

ターゲット・データベースでのバックアップ・ストレージの構成

ターゲット・データベースでバックアップSBT_TAPEストレージ・デバイスを構成します。

  1. RMANターゲット・コマンドを実行します。
    rman target /
  2. ターゲット・データベースでバックアップSBT_TAPEストレージ・デバイスを構成します。
    ORACLE_HOME環境変数を使用して、SBTライブラリを定義します。
    RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
    

DBIDの設定およびバックアップからのSPFファイルのリストア

RMANコマンドを実行してDBIDおよび復号化パスワードを設定し、SPFファイルをバックアップからリストアします。DBIDを設定する場合は、RMANを使用してターゲットDBIDをソースDBIDに置き換えます。

  1. データベースID (DBID)を設定します。
    RMAN> run {
    shutdown immediate;
    set dbid DBID number;
    STARTUP FORCE NOMOUNT;
    }
  2. 復号化パスワード(暗号化に使用されたパスワード)を設定し、SPFファイルをバックアップからリストアします。
    RMAN> SET DECRYPTION IDENTIFIED BY password;
    RMAN> set controlfile autobackup format for device type sbt to '%F';
    RMAN> run {
      allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
      restore spfile from autobackup;
    }
  3. RMANを終了します。

監査ファイルのディレクトリの作成

監査ファイルの宛先ディレクトリを作成します。

デフォルトの場所は/u01/app/oracle/admin/$ORACLE_SID/adumpです。リストアされたspfileで文字列audit_file_destを検索すると、元のデータベースで使用されている設定を確認できます。

spfileはバイナリ・ファイルで、文字列を正しく解析する必要があります。ただし、単純なgrepがフルパスを提供できないようにする改行が存在する場合があります。文字列の-s ""オプションは改行を削除し、sedコマンドはaudit_file_destの後にテキストを解析します。sedコマンドは非最長正規表現を処理しないため、ファイルの終わりを切り捨てるにはawkコマンドが必要です。

  • 追加したxargsコマンドを使用してフォルダを作成します。
    strings -s "" ${ORACLE_HOME}/dbs/spfile*.ora | sed -E "s|.*audit_file_dest='(.*)'.*|\1|" | awk -F"'" '{print $1}' | xargs mkdir -p 

データベースのリストアおよびリカバリ

RMANを使用して、バックアップから制御ファイルをリストアしてから、データベースをリストアおよびリカバリします。RMANは、アーカイブREDOログを使用してデータベースをリカバリします。

  1. RMANを開き、バックアップから制御ファイルをリストアします。前に設定したDBID番号とデシルプション・パスワードを使用します。
    Rman target /
    RMAN> set dbid DBID number;
    RMAN> STARTUP FORCE NOMOUNT;
    RMAN> SET DECRYPTION IDENTIFIED BY password;
    RMAN> set controlfile autobackup format for device type sbt to '%F';
    RMAN> run {
    allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
      restore controlfile from autobackup;
      alter database mount;
    }
  2. RMANを使用してデータベースをリストアおよびリカバリします。
    RMAN> run {
    CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=ORACLE_HOME/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
    RESTORE DATABASE;
    RECOVER DATABASE;
    }
    RMANがバックアップの最後のアーカイブREDOログを適用し、これ以上ログが見つからない場合、次のようなメッセージが表示されます: unable to find archived log
  3. resetlogsでデータベースを開きます。
    RMAN> ALTER DATABASE OPEN RESETLOGS;
  4. 接続を受信するターゲット・データベースを準備します。
  5. リスナー構成を編集して静的リスナーを作成し、TNSリスナーを再稼働します。
    nano $ORACLE_HOME/network/admin/listener.ora
  6. TNSリスナーに次のセクションを追加して、ソース・データベースのORACLE_HOMEおよびCDB名を定義します。

    ORACLE_HOMEをパス値ORACLE_HOMEに、SID_NAMEをソース・データベースのサービス名(CDB名)に置き換えます。

    SID_LIST_LISTENER=
      (SID_LIST=
        (SID_DESC=
          (ORACLE_HOME=ORACLE_HOME)
          (SID_NAME=SID_NAME))
      )
    
  7. tnsnameファイルを編集します。
    nano $ORACLE_HOME/network/admin/tnsnames.ora
  8. ソース・データベースのSID名(ドメイン名なし)と一致するようにSERVICE_NAMEを編集します。
    (SERVICE_NAME = SID_NAME)
  9. リスナーを再起動します。
    $ORACLE_HOME/bin/lsnrctl stop
    $ORACLE_HOME/bin/lsnrctl start
    $ORACLE_HOME/bin/lsnrctl status
    
データベースにアクセスできる必要があります。