- نشر منظومة DR مختلطة لقاعدة بيانات محلية
- تكوين طبعة بديلة باستخدام RMAN
تكوين طبعة بديلة باستخدام RMAN
استخدم Oracle Recovery Manager (RMAN) لتكوين طبعة سحابة بديلة من قاعدة البيانات الأساسية.
تكوين سجل حفظ
تحقق من وضع السجل لخادم Oracle المحلي. إذا كان في وضع NOARCHIVELOG، فقم بتغييره إلى وضع ARCHIVELOG لتكوين سجل أرشيف.
- عرض وضع السجل للخادم المحلي.
SQL> select log_mode from v$database;ستبدو المخرجات مشابهة لما يلي عندما يكون وضع السجل في وضعNOARCHIVELOG:LOG_MODE ------------ NOARCHIVELOG - قم بإغلاق الطبعة المحلية.
SQL> shutdown immediate;ستبدو المخرجات مشابهة لما يلي:Database closed. Database dismounted. ORACLE instance shut down. - قم بتركيب قاعدة البيانات المحلية.
SQL> startup mount;ستبدو المخرجات مشابهة لما يلي:ORACLE instance started. Total System Global Area 4966054520 bytes Fixed Size 9144952 bytes Variable Size 922746880 bytes Database Buffers 4026531840 bytes Redo Buffers 7630848 bytes Database mounted. - قم بتبديل أرشيف أرشيف قاعدة البيانات، ثم افتح قاعدة البيانات.
SQL> alter database archivelog;SQL> alter database open; - قم بتغيير وضع السجل إلى
ARCHIVELOG.SQL> select log_mode from v$database;LOG_MODE ------------ ARCHIVELOG - عرض قائمة أرشيف الحفظ.
SQL> archive log list;ستبدو المخرجات مشابهة لما يلي:Database log mode Archive Mode Automatic archival Enabled Archive destination /opt/oracle/product/19c/dbhome_1/dbs/arch Oldest online log sequence 10 Next log sequence to archive 12 Current log sequence 12 - أرشفة كل السجلات.
SQL> archive log all;ORA-00271:there are no logs that need archiving
تكوين طبعة قاعدة البيانات البديلة على OCI
استخدم Oracle Recovery Manager (RMAN) لتكرار قاعدة البيانات الأساسية النشطة في Oracle Cloud Infrastructure (OCI). وبدلاً من ذلك، يمكنك التكرار من نسخة احتياطية من قاعدة البيانات الأساسية.
- أوقف قاعدة البيانات باستخدام البرنامج المساعد
srvctlأو أغلق قاعدة البيانات باستخدام SQL*Plus.-
$ srvctl stop database -d standby DB_UNIQUE_NAME -o immediate -
Shutdown immediate;
-
- اتصال بقاعدة البيانات.
$ rman target / RMAN> startup nomount; - استعادة ملف التحكم البديل من الخدمة الأساسية.في هذا المثال، يعتبر ORCLCDB قاعدة البيانات الأساسية المحلية.
RMAN> restore standby controlfile from service 'ORCLCDB'; - في حالة ظهور رسائل الخطأ التالية، أعد الاتصال بقاعدة البيانات.
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of restore command at 09/24/2020 21:10:13 RMAN-06496: must use the TO clause when the database is mounted or open- إغلاق قاعدة البيانات
RMAN> shutdown; - اتصال بقاعدة البيانات
RMAN> startup nomount;
- إغلاق قاعدة البيانات
- استعادة باستخدام ملف تحكم قاعدة البيانات بدلاً من كتالوج الاستعادة.
RMAN> restore standby controlfile from service 'ORCLCDB';ستبدو المخرجات مشابهة لما يلي:Starting restore at DD-MM-YY using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=182 device type=DISK channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:02 output file name=/u02/app/oracle/oradata/ORCLCDB_iad1s3/control01.ctl output file name=/u03/app/oracle/fast_recovery_area/ORCLCDB_IAD1S3/control02.ctl Finished restore at DD-MM-YY - توصيل قاعدة البيانات.
RMAN> alter database mount; - إذا ظهرت رسائل خطأ مشابهة لما يلي، فقم بإعادة الاتصال بقاعدة البيانات.إذا لم تحصل على رسالة خطأ، انتقل إلى الخطوة 8.
Released channel: ORA_DISK_1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of sql statement command at 09/24/2020 21:13:41 RMAN-06189: current DBID 2822997440 does not match target mounted database (2823031995)- إغلاق قاعدة البيانات
RMAN> shutdown immediate;ستبدو المخرجات مشابهة لما يلي:database dismounted Oracle instance shutdown - اتصال بقاعدة البيانات
RMAN> startup nomount;ستبدو المخرجات مشابهة لما يلي:connected to target database (not started) Oracle instance startedTotal System Global Area 14495511760 bytesFixed Size 9151696 bytes Variable Size 1912602624 bytes Database Buffers 12549357568 bytes Redo Buffers 24399872 bytes - قم بتعيين معرف قاعدة البيانات.
RMAN> set DBID=2823031995;ستبدو المخرجات مشابهة لما يلي:executing command: SET DBID
- إغلاق قاعدة البيانات
- كجذر في طبعة OCI، قم بتغيير أذون دليل Oracle لفتحها (
chmod 777).[root@drdb opc]# sudo su [root@drdb opc]# cd /opt/ [root@drdb opt]# ls -lrt total 8 drwx------ 7 root root 4096 Sep 12 00:39 zookeeper drwxr-xr-x 6 root root 4096 Sep 12 00:51 oracle [root@drdb opt]# chmod 777 oracle/ [root@drdb opt]# ls -lrt total 8 drwx------ 7 root root 4096 Sep 12 00:39 zookeeper drwxrwxrwx 6 root root 4096 Sep 12 00:51 oracle - استعادة قاعدة البيانات من قاعدة البيانات الأساسية (ORCLCDB).
RMAN> restore database from service 'ORCLCDB' section size 5G;بعد اكتمال النسخ الاحتياطي للفحص الترافقي ونسخة الفحص الترافقي، تظهر قائمة بالملفات المفهرسة في المخرجات، تشبه ما يلي:Starting restore at 01-SEP-20 Starting implicit crosscheck backup at 01-SEP-20 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=184 device type=DISK Finished implicit crosscheck backup at 01-SEP-20 Starting implicit crosscheck copy at 01-SEP-20 using channel ORA_DISK_1 Finished implicit crosscheck copy at 01-SEP-20 searching for all files in the recovery area cataloging files... cataloging done List of Cataloged Files ======================= File Name: /u03/app/oracle/fast_recovery_area/ORCLCDB_IAD1S3/archivelog/2020_08_27/o1_mf_1_3_hngo1gl6_.arc File Name: /u03/app/oracle/fast_recovery_area/ORCLCDB_IAD1S3/archivelog/2020_08_27/o1_mf_1_1_hngnvtgb_.arc File Name: /u03/app/oracle/fast_recovery_area/ORCLCDB_IAD1S3/archivelog/2020_08_27/o1_mf_1_2_hngnwdfd_.arc using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00001 to /opt/oracle/oradata/ORCLCDB/system01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:26 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00003 to /opt/oracle/oradata/ORCLCDB/sysaux01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:15 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00004 to /opt/oracle/oradata/ORCLCDB/undotbs01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:08 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00005 to /opt/oracle/oradata/ORCLCDB/pdbseed/system01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00006 to /opt/oracle/oradata/ORCLCDB/pdbseed/sysaux01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:08 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00007 to /opt/oracle/oradata/ORCLCDB/users01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00008 to /opt/oracle/oradata/ORCLCDB/pdbseed/undotbs01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:04 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00009 to /opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:07 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00010 to /opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:08 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00011 to /opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: using network backup set from service ORCLCDB channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00012 to /opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf channel ORA_DISK_1: restoring section 1 of 1 channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 Finished restore at 01-SEP-20 - إغلاق قاعدة البيانات.
RMAN> Shutdown immediate; - قم بإعادة تشغيل قاعدة البيانات البديلة باستخدام البرنامج المساعد للتحكم في الخادم (
srvctl) أو SQL*Plus.- استخدم البرنامج المساعد
srvctlلبدء قاعدة البيانات:srvctl start instance -d standby DB_UNIQUE_NAME -i standby instance name -o mount - استخدم SQL*Plus لبدء قاعدة البيانات:
$ ./sqlplus / as sysdba
- استخدم البرنامج المساعد
- توصيل قاعدة البيانات.
SQL> startup mountستبدو المخرجات مشابهة لما يلي:ORACLE instance started. Total System Global Area 1.4496E+10 bytes Fixed Size 9151696 bytes Variable Size 1912602624 bytes Database Buffers 1.2549E+10 bytes Redo Buffers 24399872 bytes Database mounted. - تبديل قاعدة البيانات.
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;Database altered. - عرض الدور ورقم سلسلة العمليات والرقم المسلسل والإجراء لقاعدة البيانات.
SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;ستبدو المخرجات مشابهة لما يلي:ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ post role transition 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery logmerger 1 7 WAIT_FOR_LOG managed recovery 0 0 IDLE archive redo 0 0 IDLE archive local 0 0 IDLE redo transport timer 0 0 IDLE gap manager 0 0 IDLE archive redo 0 0 IDLE archive redo 0 0 IDLE redo transport monitor 0 0 IDLE log writer 0 0 IDLE 15 rows selected. - (اختياري) قم بعرض اسم قاعدة البيانات ودورها.
SQL> select name, database_role from v$database;ستبدو المخرجات مشابهة لما يلي:NAME DATABASE_ROLE --------- ---------------- ORCLCDB PHYSICAL STANDBY - كـ
sysdba، قم بمسح كل سجلاتredoالبديلة المباشرة$ sqlplus “/ as sysdba” SQL> alter system set db_create_online_log_dest_1=<DATA Disk group>; SQL> set pagesize 0 feedback off linesize 120 trimspool on SQL> spool /tmp/clearlogs.sql SQL> select distinct 'alter database clear logfile group '||group#||';' from v$logfile; SQL> spool off SQL> @/tmp/clearlogs.sql SQL> select member from v$logfile;
إضافة طبعات RAC إلى ملفات tnsnames.ora
بالنسبة لـ Oracle Real Application Clusters (Oracle RAC)، أضف طبعات Oracle RAC إلى tnsnames.ora وأعد تشغيل المستمعين. لا يمكن تحديد اسم المسح في أي من الاتجاهين في تكوين مختلط، مما يجعل من الضروري تكوين قائمة العناوين لتوفير إتاحة عالية.
- قم بتحرير ملف
TNSNAMES.ORAعلى مضيف قاعدة البيانات المحلي.Primary db_unique_name = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (FAILOVER=on) (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = PrimaryDB Node 1IP address)(PORT = {1521|port#})) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 2IP address)(PORT = {1521|port#})) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Primary_db_SID) (UR=A) )) Standby db_unique_name = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (FAILOVER=on) (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 1IP address)(PORT = {1521|port#})) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 2IP address)(PORT = {1521|port#})) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Primary_db_SID) (UR=A) )) - قم بتحرير ملف
TNSNAMES.ORAعلى مضيف قاعدة البيانات البديل في Oracle Cloud Infrastructure (OCI).Standby db_unique_name = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (FAILOVER=on) (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 1IP address)(PORT = {1521|port#})) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 2IP address)(PORT = {1521|port#})) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Primary_db_SID) (UR=A) )) <Primary db_unique_name> = (DESCRIPTION = (SDU=65536) (RECV_BUF_SIZE=134217728) (SEND_BUF_SIZE=134217728) (ADDRESS_LIST = (FAILOVER=on) (CONNECT_TIMEOUT=3)(RETRY_COUNT=3) (ADDRESS = (PROTOCOL = TCP)(HOST = PrimaryDB Node 1IP address)(PORT = {1521|port#})) (ADDRESS = (PROTOCOL = TCP)(HOST = StandbyDB Node 2IP address)(PORT = {1521|port#})) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = Primary_db_SID) (UR=A) ))