استعادة من النسخة الاحتياطية

قم باستعادة البيانات من النسخة الاحتياطية لقاعدة البيانات المصدر الخاصة بك إلى قاعدة البيانات الهدف.

تثبيت نسخة Oracle Database الاحتياطية على قاعدة البيانات الهدف

انسخ ملف oci_install.jar مرة أخرى إلى مضيف قاعدة البيانات الهدف وقم بتشغيل الأمر لتثبيت Oracle Database Backup على الهدف.

تثبيت Oracle Database Backup Cloud Service على قاعدة البيانات المصدر
  1. انسخ ملف oci_install.jar مرة أخرى إلى مضيف قاعدة البيانات الهدف من خلال مضيف البنية الأساسية والفاقد zip.
    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. SSH إلى قاعدة البيانات الهدف OCI من خلال مضيف الأساسي، والتبديل إلى مستخدم 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 لتثبيت المكتبة وتكوين ملف 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 في المجلد الرئيسي لمستخدم أوراكل.
  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)';
    

تعيين معرف قاعدة البيانات واستعادة ملف SPF من النسخة الاحتياطية

قم بتشغيل أوامر RMAN لتعيين DBID وكلمة سر فك التشفير لاستعادة ملف SPF من النسخة الاحتياطية. عند تعيين DBID، سوف تستخدم RMAN لاستبدال DBID الهدف بمعرف DBID المصدر.

  1. قم بتعيين معرف قاعدة البيانات (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 هو ملف ثنائي يتطلب سلاسل للتحليل اللغوي بشكل صحيح. على أنه قد توجد فواصل أسطر تحول دون تقدم مسارًا كاملاً. يؤدي الخيار -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 بإعادة تشغيل قاعدة البيانات باستخدام سجلات الإعادة المحفوظة.

  1. افتح RMAN وقم باستعادة ملف التحكم من النسخة الاحتياطية. استخدم رقم DBID وكلمة سر decyrption التي قمت بتعيينها سابقًا.
    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 سجل الإعادة المحفوظ الأخير في النسخة الاحتياطية ولا يمكنه العثور على أية سجلات أخرى، تظهر رسالة مماثلة لما يلي: 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. تحرير SERVICE_NAME لمطابقة اسم SID لقاعدة البيانات المصدر (دون اسم النطاق).
    (SERVICE_NAME = SID_NAME)
  9. أعد تشغيل المستمع.
    $ORACLE_HOME/bin/lsnrctl stop
    $ORACLE_HOME/bin/lsnrctl start
    $ORACLE_HOME/bin/lsnrctl status
    
يجب أن يكون الوصول إلى قاعدة البيانات ممكنًا.