نشر بواسطة : 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#;



 


علامات : Data Guard

يمكن ان يعجبك ايضا


Comments

لايوجد تعليق حتى الان