Create Standby Database From Cold Physical Backup
نشر بواسطة : Obay Salah , November 19, 2024
سنقوم في هذه المرحلة بإنشاء الPhysical Standby Database وستستغرق هذه المهمة حوالي 14 خطوة:
1- عمل نسخ احتياطي (Backup) لملفات الDatafiles في الPrimary Database:
نحتاج لنسخ ملفات الDatafiles من الPrimary Database لإنشاء الPhysical Standby Database، بالطبع يمكن أن نستخدم RMAN or Physical Database، لكن أنا اخترت الطريقة الأسهل Physical Backup، واليكم الخطوات:
أ- قم بإغلاق قاعدة البيانات.
ب- عن طريق نظام التشغيل قم بنسخ جميع ملفات الDatafiles.
هكذا نكون قد انتهينا من قضية النسخ الاحتياطي.
2- إنشاء ملف الControl File للStandby Database:
قم بتشغيل الPrimary Database في الوضع Mount ثم عن طريق الSql*Plus قم بإنشاء الStandby Control File
ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘D:\BACKUP\;
3- إنشاء ملف المتغيرات للStandby Database:
قم بإنشاء ملف المتغيرات للStandby Database من الPrimary Database.
CREATE PFILE='D:\BACKUP\initٍSTAN.ora' FROM SPFILE;
ثم قم بتهيئة ملف المتغيرات الجديد ليتوافق مع الStandby Database، سيكون شكل ملف المتغيرات بعد التعديل كالأتي:
DB_NAME=PRIM
DB_UNIQUE_NAME=STAN
SERVICE_NAMES=STAN
INSTANCE_NAME=STAN
LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STAN)'
CONTROL_FILES=' D:\oracle\product\10.1.0\oradata\PRIM\control1.ctl', ‘D:\oracle\product\10.1.0\oradata\PRIM\control2.ctl’, ‘D:\oracle\product\10.1.0\oradata\PRIM\control3.ctl’
LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
LOG_ARCHIVE_DEST_1=
'LOCATION=D:\oracle\product\10.1.0\flash_recovery_area\
VALID_FOR= (ALL_LOGFILES, ALL_ROLES)
DB_UNIQUE_NAME=STAN'
LOG_ARCHIVE_DEST_2=
'SERVICE=PRIMNET
VALID_FOR= (ONLINE_LOGFILES, PRIMARY_ROLE)
DB_UNIQUE_NAME=PRIM'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
STANDBY_FILE_MANAGEMENT=AUTO
FAL_SERVER=PRIM
FAL_CLIENT=STAN
لاحظ أن الDB_NAME هو واحد لكل كم الPrimary and Standby Database لكن يختلفان في الDB_UNIQUE_NAME.
4- قم بإنشاء المسارات المطلوبة للStandby Database:
سنتبع في هذا السيناريو مسارات متشابهة تماماً لكل من الPrimary and Standby Database، لذا قم بإنشاء المسارات لملفات الData Files والRedo Log File في الStandby Site كما هو الحال في الPrimary Site، ولكن قد تختلف المسارات بين الPrimary and Standby Database ولكن يجب عليك وقتها أن تقوم بتهيئة المتغيرين (DB_FILE_NAME_CONVERT & LOG_FILE_NAME_CONVERT ).
5- قم بنقل ملفات النسخ الاحتياطي إلي المسارات الصحيحة في الStandby Database:
بما في ذلك جميع ملفات الData Files وملف المتغيرات initstan.ora وأيضاً الStandby Controlfile بعد إعادة تسميته بعدد النسخ المحددة في ملف المتغيرات.
6- قم بإنشاء الInstance الخاصة بالStandby Database:
وذلك من خلال إنشاء الService في الWindows
D:\ oradim -NEW -SID STAN -INTPWD password -STARTMODE manual
7- قم بإنشاء الPassword File:
orapwd file= D:\oracle\product\10.1.0\Db_1\database\PWDSTAN.ora password=sys force=y entries=5
8- تهيئة ال listeners لكل من الPrimary and Standby Database:
سيكون شكل الListener بالنسبة للPrimary Database كالتالي:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVER1)(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.1.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = PRIM)
(ORACLE_HOME = D:\oracle\product\10.1.0)
(SID_NAME = PRIM)
)
(SID_DESC =
(GLOBAL_DBNAME = PRIM_DGMGRL)
(ORACLE_HOME = D:\oracle\product\10.1.0)
(SID_NAME = PRIM)
)
أما بالنسبة للStandby Database فسيكون شكل الListener كالتالي:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVER2)(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.1.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = STAN)
(ORACLE_HOME = D:\oracle\product\10.1.0)
(SID_NAME = STAN)
)
(SID_DESC =
(GLOBAL_DBNAME = STAN_DGMGRL)
(ORACLE_HOME = D:\oracle\product\10.1.0)
(SID_NAME = STAN)
)
ثم قم بإيقاف وتشغيل الListener.
D:\> lsnrctl stop D:\> lsnrctl start
9- تهيئة ملف الTnsnames لكل من الPrimary and Standby Database:
بالنسبة للPrimary Site
PRIMNET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVER1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = PRIM_DGMGRL)
)
)
STANNET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVER2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = STAN_DGMGRL)
)
)
بالنسبة للStandby Site
STANNET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVER2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = STAN_DGMGRL)
)
)
PRIMNET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVER1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = PRIM_DGMGRL)
)
)
10- تفعيل ال Broken Connection Detection في الStandby Database:
ذلك بتهيئة المتغير SQLNET.EXPIRE_TIME في الملف SQLNET.ORA ليأخذ القيمة 2 (دقيقة)
SQLNET.EXPIRE_TIME=2
11- تشغيل الStandby Database:
ولكن قبل تشغيل الStandby Database قم بإنشاء الSPFILE من ملف الPFILE
CREATE SPFILE FROM PFILE STARTUP READ ONLY
لا تفتح قاعدة البيانات للمستخدمين يجب أن تظل الStandby Database في الوضع Mount أو Read Only لاستقبال الRedo Data.
12- إنشاء Temporary File جديد للStandby Database:
هذه الخطوة مهمة لأن قاعدة Standby Database قد تحتاج للTemporary File للعمليات المؤقتة مثل الترتيب وغيره خصوصاً عندما يتم فتحها في الوضع OPEN READ ONLY فيقوم المستخدمون ببعض عمليات الاستعلام كما يمكن أيضاً أن يتحول دور الStandby Database لاحقاً.
أ- قم بالتحقق من الTablespace الذي يجب أن يحوي Temporary Files
'SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE CONTENTS = 'TEMPORARY
ب- أضف Temp File جديد للStandby Database
ALTER TABLESPACE TEMP1 ADD TEMPFILE ‘D:\oracle\product\10.1.0\oradata\orcl\temp01.dbf' SIZE 40M REUSE;
13- تشغيل الRedo Apply:
ذكرنا سابقاً أن الStandby Database تقوم باستقبال الRedo Data من الPrimary Database ومن ثم ييتم تطبيق هذه الData فيما يعرف بالRedo Apply.
لتشغيل الRedo Apply قم بتنفيذ هذا الأمر علي الStandby Database
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
14- التحقق من الأداء السليم للStandby Database:
عملية نقل الRedo Data للStandby Database لا تتم إلا بعد حدوث الLog Switch، في الأصل الLog Switch يحدث لحظة امتلاء الRedo Log File لكن يمكن عمل الLog Switch بصور يدوية عن طريق الأمر
ALTER SYSTEM SWITCH LOGFILE;
للتأكد من استقبال الRedo Data بصورة سليمة في الStandby Database قم بالأتي:
أ- تأكد من ملفات الأرشيف الحالية في الStandby Database عن طريق الاستعلام
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
ب- في الPrimary Database قم بتنفيذ الأمر
ALTER SYSTEM ARCHIVE LOG CURRENT;
هذا الأمر يقوم بعمل بعملية الLog Switch وأرشفة الOnline Redo Log File Group الحالية.
ج- للتأكد من أن الNew Redo Data قد تم أرشفتها في الStandby Database قم بالاستعلام التالي في الStandby Database
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
15- التحقق من تطبيق الأرشيف الذي تم إرساله للStandby Database:
بعدما تأكدنا من وصول الأرشيف للStandby Database يجب التأكد من تطبيقه (Redo Apply) في الStandby Database وذلك عن طريق الاستعلام
SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
Comments
لايوجد تعليق حتى الان