Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 21

‫أبي صلح ميرغني )الباشا(‬

‫‪obaysalah@hotmail.com‬‬

‫نظام ال ‪ Business‬اليوم يتطلب أن تكون قاعدة البيانات متاحة علي الدوام‪ ،‬فلحظات ال‬
‫‪ Downtime‬قد تكلف الشركات مليين الدولرات‪ ،‬فال ‪ Oracle Data Guard‬تضمن لك‬
‫مستوي عالي من إتاحة البيانات وكذلك حماية البيانات والتغلب علي الكوارث التي تحدث‬
‫لقواعد البيانات وذلك من خلل إنشاء وإدارة ومراقبة واحد أو أكثر من ال ‪Standby‬‬
‫‪.Database‬‬
‫ال ‪ Oracle Data Guard‬تقوم بإدارة ال ‪ Primary Database‬وال ‪ Standby Databases‬بحيث‬
‫تكون ال ‪ Standby Databases‬متزامنة مع ال ‪ Primary Database‬فلحظة حدوث مشكلة في‬
‫ال ‪ Primary Database‬يتم التحول مباشرة إلي ال ‪ Standby Database‬لتكون هي ال ‪Primary‬‬
‫‪ Database‬الجديدة‪ ،‬هذه الجراءات ل تستغرق سواء لحظات‪ ،‬يمكن كذلك أن يتم التحول‬
‫بين ال ‪ Primary Database‬وال ‪ Standby Database‬بغرض الصيانة أو لغراض أخري‪.‬‬
.‫ تصل إلي تسع‬Standby Database ‫ إدارة عدد من ال‬Data Guard 10g Release 1 ‫وتدعم ال‬

:‫سنتبع في هذه السلسلة السيناريو التالي‬


‫ تعمل علي السيرفر‬PRIM ‫ تسمي‬Primary Database ‫ستكون لدينا قاعدة بيانات أساسية‬
Server1
‫ تسمي‬Primary Database ‫ من ال‬Standby Database ‫سنقوم بإنشاء قاعدة بيانات أخري‬
.Server2 ‫ تعمل علي السيرفر‬STAN

:‫واليكم الخطوات‬
Standby ‫ لنشاء ال‬Primary Database ‫ التأكد من تهيئة ال‬:‫الخطوة الولي‬
.Database

:Primary Database ‫ يجب عمل الخطوات التالية في ال‬Standby Database ‫قبل إنشاء ال‬
:Forced Logging ‫ تفعيل ال‬-1
ALTER DATABASE FORCE LOGGING

:‫ إذا لم يوجد‬Password File ‫ إنشاء ال‬-2


C:\orapwd file=D:\oracle\product\10.1.0\Db_1\database\PWDprim.ora entries=10
Password=SYS force=y

:Primary Database ‫ تهيئة ملف المتغيرات في ال‬-3


‫ مع ال‬Primary Database ‫ولكن قبل تهيئة ملف المتغيرات هل تعرف كيف تتعامل ال‬
‫ ولكن‬Primary Database ‫؟ بالطبع يتعامل المستخدمون مباشرة مع ال‬Standby Database
‫ ولكن يجب التذكير‬،‫ ليتم تطبيقها‬Standby Database ‫ مباشرة إلي ال‬Redo Data ‫يتم إرسال‬
:Standby Database ‫إلي أنه يوجد نوعان من ال‬
Primary Database ‫ وهي قاعدة بيانات يتم إنشاؤها من ال‬:Physical Standby Database -1
‫ تكون هيكلة ال‬،(Primary Database ‫)بمعني أنه يتم إنشاؤها من النسخ الحتياطي لل‬
.(Primary Database (Block-for-Block ‫ مشابهة تماما ً لهيكلة ال‬Physical Standby Database
(Log Writer Process (LGWR ‫ عبر ال‬Primary Database ‫ من ال‬Redo Data ‫يتم إرسال ال‬
‫ في ال‬Redo Data ‫ يتم استقبال ال‬،Standby Database ‫( لل‬Archiver Process (ARCH ‫أو ال‬
‫( ثم يتم تطبيق ال‬Remote File Server Process (RFS ‫ عن طريق ال‬Standby Database
Managed Recovery Process ‫ عن طريق ال‬Physical Standby Database ‫ في ال‬Redo Data
.(‫ )وهذا النوع سنستخدمه في السيناريو‬،Redo Apply ‫(( فيما يعرف بال‬MRP
Primary ‫ هي قاعدة بيانات يتم إنشاؤها كذلك من ال‬:Logical Standby Database -2
‫ ولكن يمكن أن يتم تغيير هيكلتها لحقا ً ولكن تظل البيانات الموجودة في ال‬Database
Redo ‫ هنا ل يتم عمل‬،‫ متماثلة تمامًا‬Logical Standby Database ‫ وال‬Primary Database
SQL Apply ‫ ولكن يتم عمل‬Physical Standby Database ‫ كما هو الحال في ال‬Apply
SQL ‫ يتم عمل ال‬، SQL Statements ‫بحيث يتم التعديل علي قاعدة البيانات عن طريق‬
.(Logical Standby Process(LSP ‫ عن طريق ال‬Apply

Database DB_UNIQUE_NAME Oracle Net Service Name


Primary PRIM PRIMNET
Physical standby STAN STANNET

Primary Database ‫تهيئة ملف المتغيرات في ال‬

DB_NAME=PRIM
DB_UNIQUE_NAME=PRIM
SERVICE_NAMES=PRIM
INSTANCE_NAME=PRIM
LOG_ARCHIVE_CONFIG='DG_CONFIG= (PRIM, STAN)'
LOG_ARCHIVE_DEST_1=
'LOCATION=D:\oracle\product\10.1.0\flash_recovery_area\
VALID_FOR= (ALL_LOGFILES, ALL_ROLES)
DB_UNIQUE_NAME=PRIM'
LOG_ARCHIVE_DEST_2=
'SERVICE=STANNET
VALID_FOR= (ONLINE_LOGFILES, PRIMARY_ROLE)
DB_UNIQUE_NAME=STAN'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
FAL_SERVER=STAN
FAL_CLIENT=PRIM
STANDBY_FILE_MANAGEMENT=AUTO

:‫حيث‬
(Standby Databases ‫ حروف )استخدم نفس السم لجميع ال‬8 ‫ وهو اسم من‬:DB_NAME
‫ هذا السم يظل في‬،‫ لتحديد السم الفريد لكل قاعدة بيانات‬:DB_UNIQUE_NAME
.Standby Database ‫ وال‬Primary ‫قاعدة البيانات ول يتغير حتى لو تغيرت الدوار بين ال‬
Standby ‫ وال‬Primary ‫ بين ال‬Instance ‫ ويجب أن يختلف اسم ال‬:INSTANCE_NAME
.‫ إذا كانا في نفس الجهاز‬Database
Primary ‫ لكل من ال‬DB_UNIQUE_NAME ‫ لتحديد ال‬:LOG_ARCHIVE_CONFIG
‫ هذا المتغير في الصل يقوم بتفعيل قاعدة البيانات‬،Standby Databases ‫ وال‬Database
.Redo ‫لرسال واستقبال ال‬
Primary ‫ التي تم إنشاؤها بواسطة ال‬Redo Data ‫ لرشفة ال‬:LOG_ARCHIVE_DEST_1
Local Archived Redo Log Files ‫ في ال‬Database
‫ التي سيتم‬Remote Physical Standby Database ‫ لتحديد ال‬:LOG_ARCHIVE_DEST_2
.‫ لها‬Redo Data ‫إرسال ال‬
Redo ‫ للسماح لنقل ال‬ENABLE ‫ يأخذ القيمة‬:LOG_ARCHIVED_DEST_STATE_n
.‫ للتجاه المحدد‬Data
EXCLUSIVE or) ‫ يجب أن يأخذ هذا المتغير‬:REMOTE_LOGIN_PASSWORDFILE
.(Shared
‫ )عادة تكون هذه‬FAL Server ‫ لل‬Oracle Net Service Name ‫ لتحديد ال‬:FAL_SERVER
‫ في دور ال‬PRIM ‫ فعندما تكون ال‬،(Primary Database ‫قاعدة البيانات التي تعمل دور ال‬
‫ يستخدم هذا‬،FAL SERVER ‫ ك‬STAN Database‫ل‬ ٍ ‫ يتم استخدام ا‬Standby Database
Standby ‫ لل‬Redo ‫( عجز عن إرسال ال‬Primary Database(STAN ‫المتغير في حال أن ال‬
.‫ المفقودة‬Archived Log Files ‫( فيقوم بجلب ال‬Database(PRIM
‫ حيث يقوم ال‬،PRIM Database ‫ لل‬Oracle Net Service Name ‫ لتحديد ال‬:FAL_CLIENT
.PRIM Standby Database ‫( بعمل نسخ لملفات الرشيف المفقودة لل‬FAL Server (STAN
‫ في هذا المتغير فإذا تم‬AUTO ‫ إذا تم وضع القيمة‬:STANDBY_FILE_MANAGEMENT
‫ تستجيب‬Standby Database ‫ فإن ال‬Primary Database ‫ في ال‬Data File ‫إضافة أو حذف‬
‫للتغيير بصورة آلية‬
Primary Database ‫ هذا المتغير يحول مسارات ال‬:DB_FILE_NAME_CONVERT
‫ نحتاج لتهيئة هذا الملف إذا كانت‬،Standby Database Datafiles Path Names ‫ لل‬Datafiles
Standby ‫ في نفس الجهاز أو إذا كان ال‬Primary Database ‫ وال‬Standby Database ‫ال‬
‫ في جهازين مختلفين ولكن يختلفان في الهيكلة‬Primary Database ‫ وال‬Database
‫ في جهازين مختلفين‬Primary Database ‫ وال‬Standby Database ‫ أما إذا كانت ال‬،‫الفيزيائية‬
‫ في كل القاعدين‬Data Files ‫ولكن متشابهان في الهيكلة الفيزيائية بمعني أن ملفات ال‬
‫متشابهتان تماما ً كما هو الحال في السيناريو الذي سنتبعه ففي مثل هذه الحالة فل نحتاج‬
.‫لتهيئة هذا المتغير‬
‫ ويمكن أن يقال ما قيل في المتغير السابق غير أن‬:LOG_FILE_NAME_CONVERT
.Data Files ‫ وليس ال‬Redo Log Files ‫هذا المتغير يختص بال‬

:Primary Database ‫ تفعيل الرشيف في ال‬-4


SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
.Standby Database ‫ إنشاء ال‬:‫الخطوة الثانية‬
‫ وستستغرق هذه المهمة‬Physical Standby Database ‫سنقوم في هذه المرحلة بإنشاء ال‬
:‫ خطوة‬14 ‫حوالي‬
:Primary Database ‫ في ال‬Datafiles ‫( لملفات ال‬Backup) ‫ عمل نسخ احتياطي‬-1
Physical Standby ‫ لنشاء ال‬Primary Database ‫ من ال‬Datafiles ‫نحتاج لنسخ ملفات ال‬
‫ لكن أنا اخترت‬،RMAN or Physical Database ‫ بالطبع يمكن أن نستخدم‬،Database
:‫ واليكم الخطوات‬،Physical Backup ‫الطريقة السهل‬
.‫ قم بإغلق قاعدة البيانات‬-‫أ‬
.Datafiles ‫ عن طريق نظام التشغيل قم بنسخ جميع ملفات ال‬-‫ب‬
.‫هكذا نكون قد انتهينا من قضية النسخ الحتياطي‬

:Standby Database ‫ لل‬Control File ‫ إنشاء ملف ال‬-2


‫ قم بإنشاء‬Sql*Plus ‫ ثم عن طريق ال‬Mount ‫ في الوضع‬Primary Database ‫قم بتشغيل ال‬
Standby Control File ‫ال‬
ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘D:\BACKUP\’;

:Standby Database ‫ إنشاء ملف المتغيرات لل‬-3


.Primary Database ‫ من ال‬Standby 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

‫ لكن‬Primary and Standby Database ‫ هو واحد لكل كم ال‬DB_NAME ‫لحظ أن ال‬


.DB_UNIQUE_NAME ‫يختلفان في ال‬
:Standby Database ‫ قم بإنشاء المسارات المطلوبة لل‬-4
Primary and Standby ‫سنتبع في هذا السيناريو مسارات متشابهة تماما ً لكل من ال‬
‫ في ال‬Redo Log File ‫ وال‬Data Files ‫ لذا قم بإنشاء المسارات لملفات ال‬،Database
‫ ولكن قد تختلف المسارات بين ال‬،Primary Site ‫ كما هو الحال في ال‬Standby Site
) ‫ ولكن يجب عليك وقتها أن تقوم بتهيئة المتغيرين‬Primary and Standby Database
.( DB_FILE_NAME_CONVERT & LOG_FILE_NAME_CONVERT

:Standby Database ‫ قم بنقل ملفات النسخ الحتياطي إلي المسارات الصحيحة في ال‬-5
Standby ‫ وأيضا ً ال‬initstan.ora ‫ وملف المتغيرات‬Data Files ‫بما في ذلك جميع ملفات ال‬
.‫ بعد إعادة تسميته بعدد النسخ المحددة في ملف المتغيرات‬Controlfile

:Standby Database ‫ الخاصة بال‬Instance ‫ قم بإنشاء ال‬-6


Windows ‫ في ال‬Service ‫وذلك من خلل إنشاء ال‬
D:\ oradim -NEW -SID STAN -INTPWD password -STARTMODE manual

:Password File ‫ قم بإنشاء ال‬-7


orapwd file= D:\oracle\product\10.1.0\Db_1\database\PWDSTAN.ora
password=sys force=y entries=5

:Primary and Standby Database ‫ لكل من ال‬listeners ‫ تهيئة ال‬-8


:‫ كالتالي‬Primary Database ‫ بالنسبة لل‬Listener ‫سيكون شكل ال‬

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)

:‫ كالتالي‬Listener ‫ فسيكون شكل ال‬Standby Database ‫أما بالنسبة لل‬

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

:Primary and Standby Database ‫ لكل من ال‬Tnsnames ‫ تهيئة ملف ال‬-9


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)
)
)

:Standby Database ‫ في ال‬Broken Connection Detection ‫ تفعيل ال‬-10


2 ‫ ليأخذ القيمة‬SQLNET.ORA ‫ في الملف‬SQLNET.EXPIRE_TIME ‫ذلك بتهيئة المتغير‬
(‫)دقيقة‬
SQLNET.EXPIRE_TIME=2

:Standby Database ‫ تشغيل ال‬-11


PFILE ‫ من ملف ال‬SPFILE ‫ قم بإنشاء ال‬Standby Database ‫ولكن قبل تشغيل ال‬
CREATE SPFILE FROM PFILE
STARTUP READ ONLY
‫ فظظي الوضظظع‬Standby Database ‫ل تفتظظح قاعظظدة البيانظظات للمسظظتخدمين يجظظب أن تظظظل ال‬
.Redo Data ‫ لستقبال ال‬Read Only ‫ أو‬Mount
:Standby Database ‫ جديد لل‬Temporary File ‫ إنشاء‬-12
‫ للعمليظات‬Temporary File ‫ قد تحتاج لظل‬Standby Database ‫هذه الخطوة مهمة لن قاعدة‬
OPEN READ ONLY ‫المؤقتة مثل الترتيب وغيره خصوصا ً عندما يتم فتحهظظا فظظي الوضظظع‬
Standby ‫فيقوم المستخدمون ببعض عمليات الستعلم كما يمكظظن أيض ظا ً أن يتحظظول دور ال‬
.‫ لحقًا‬Database
Temporary Files ‫ الذي يجب أن يحوي‬Tablespace ‫ قم بالتحقق من ال‬-‫أ‬

SELECT TABLESPACE_NAME FROM DBA_TABLESPACES


WHERE CONTENTS = 'TEMPORARY';

Standby Database ‫ جديد لل‬Temp File ‫ أضف‬-‫ب‬

ALTER TABLESPACE TEMP1 ADD TEMPFILE


‘D:\oracle\product\10.1.0\oradata\orcl\temp01.dbf'
SIZE 40M REUSE;

:Redo Apply ‫ تشغيل ال‬-13


Primary ‫ من ال‬Redo Data ‫ تقوم باستقبال ال‬Standby Database ‫ذكرنا سابقا ً أن ال‬
.Redo Apply ‫ فيما يعرف بال‬Data ‫ ومن ثم ييتم تطبيق هذه ال‬Database
Standby Database ‫ قم بتنفيذ هذا المر علي ال‬Redo Apply ‫لتشغيل ال‬
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

:Standby Database ‫ التحقق من الداء السليم لل‬-14


‫ في‬،Log Switch ‫ ل تتم إل بعد حدوث ال‬Standby Database ‫ لل‬Redo Data ‫عملية نقل ال‬
Log ‫ لكن يمكن عمل ال‬Redo Log File ‫ يحدث لحظة امتلء ال‬Log Switch ‫الصل ال‬
‫ بصور يدوية عن طريق المر‬Switch
ALTER SYSTEM SWITCH LOGFILE;
:‫ قم بالتي‬Standby Database ‫ بصورة سليمة في ال‬Redo Data ‫للتأكد من استقبال ال‬
‫ عن طريق الستعلم‬Standby Database ‫ تأكد من ملفات الرشيف الحالية في ال‬-‫أ‬
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY
SEQUENCE#;

‫ قم بتنفيذ المر‬Primary Database ‫ في ال‬-‫ب‬


ALTER SYSTEM ARCHIVE LOG CURRENT;
Online Redo Log File Group ‫ وأرشفة ال‬Log Switch ‫هذا المر يقوم بعمل بعملية ال‬
.‫الحالية‬

‫ قم‬Standby Database ‫ قد تم أرشفتها في ال‬New Redo Data ‫ للتأكد من أن ال‬-‫ج‬


Standby Database ‫بالستعلم التالي في ال‬
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY
SEQUENCE#;

:Standby Database ‫ التحقق من تطبيق الرشيف الذي تم إرساله لل‬-15


Redo) ‫ يجب التأكد من تطبيقه‬Standby Database ‫بعدما تأكدنا من وصول الرشيف لل‬
‫ وذلك عن طريق الستعلم‬Standby Database ‫( في ال‬Apply
SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
.Broker Configuration :‫الخطوة الثالثة‬
Broker ‫( لنشاء وإدارة ومراقبة ال‬Data Guard command-line interface (CLI ‫سنستخدم‬
:‫ واليكم الخطوات‬Configuration
:Data Guard Broker ‫ تشغيل ال‬-1
true ‫ ليأخذ القيمة‬DG_BROKER_START ‫ يجب تهيئة المتغير‬Data Guard Broker ‫لتشغيل ال‬
‫ في الوضع الفتراضي يأخذ هذا المتغير‬، Primary and Standby Database ‫لكل من ال‬
.(Server Parameter (SPFILE ‫ كذلك يجب استخدام ال‬،false ‫القيمة‬
ALTER SYSTEM SET DG_BROKER_START=true;

‫ آليا ً عند أول‬Data Guard Broker ‫ ويتم تشغيل ال‬SPFILE ‫هذا التغيير يتم حفظه في ال‬
.Instance ‫تشغيل لل‬

:‫ يجب إتباع الخطوات التالية‬Configuration ‫ لنشاء ال‬:Configuration ‫ إنشاء ال‬-2


(Data Guard Command Line Interface (CLI ‫ تشغيل ال‬-‫أ‬
C:\> DGMGRL
DGMGRL for Solaris: Version 10.1

Copyright (c) 2000, 2003, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information.


DGMGRL>

Primary Database ‫ التصال بال‬-‫ب‬


DGMGRL> CONNECT sys/sys@PRIMNET;
Connected
Broker Configuration ‫ إنشاء ال‬-‫ج‬
DGMGRL> CREATE CONFIGURATION 'TEST' AS
PRIMARY DATABASE IS 'PRIM'
CONNECT IDENTIFIER IS PRIMNET;

‫ في هذا ال‬Primary Database ‫ وقمنا بتحديد ال‬TEST ‫ يسمي‬Configuration ‫قمنا بإنشاء‬


.DB_UNIQUE_NAME ‫ لحظ أننا استخدمنا هنا ال‬PRIM Database ‫ وهي‬Configuration

:‫ بإرجاع المعلومات التالية‬CLI ‫سيقوم ال‬


Configuration "TEST" created with primary database "PRIM"

:‫ التحقق من التهيئة‬-‫د‬
DGMGRL> SHOW CONFIGURATION;
:‫ بإرجاع المعلومات التالية‬CLI ‫سيقوم ال‬
Configuration
Name: TEST
Enabled: NO
Protection Mode: MaxPerformance
Databases:
PRIM - Primary database

Current status for "TEST":


DISABLED

:Configuration ‫ لل‬Standby Database ‫ إضافة ال‬-3


DGMGRL> ADD DATABASE 'STAN' AS
CONNECT IDENTIFIER IS STANNET
MAINTAINED AS PHYSICAL;
CLI ‫ وسيقوم ال‬Configuration ‫ لل‬Physical Standby Database ‫هكذا قمنا بإضافة ال‬
:‫بإرجاع المعلومات التالية‬
Database "STAN" added.

‫ لل‬Standby Database ‫ للتأكد من إضافة ال‬SHOW CONFIGURATION ‫يمكن إعادة المر‬


Configuration
DGMGRL> SHOW CONFIGURATION;
:‫ بإرجاع المعلومات التالية‬CLI ‫سيقوم ال‬
Configuration
Name: TEST
Enabled: NO
Protection Mode: MaxPerformance
Databases:
PRIM - Primary database
STAN - Physical standby database

Current status for "TEST":


DISABLED

:Setting Database Properties -4


‫بعد إنشاء ال ‪ Configuration‬تستطيع تغيير خصائص قاعدة البيانات )‪Primary or Standby‬‬
‫‪ (Database‬في أي لحظة‪.‬‬
‫لمشاهدة خصائص ال ‪Primary Database‬‬
‫;'‪DGMGRL> SHOW DATABASE VERBOSE 'PRIM‬‬
‫ولمشاهدة خصائص ال ‪Standby Database‬‬
‫;'‪DGMGRL> SHOW DATABASE VERBOSE 'STAN‬‬

‫تستطيع التغيير في خصائص قاعدة البيانات عن طريق المر‬


‫‪DGMGRL> EDIT DATABASE 'DB_UNIQUE_NAME' SET PROPERTY‬‬
‫;'‪'PROPERTY_NAME'=’NEW VALUE‬‬

‫حيث‪:‬‬
‫‪ :DB_UNIQUE_NAME‬اسم قاعدة البيانات التي تريد تغيير خصائصها‪.‬‬
‫‪PROPERTY_NAME:‬تستطيع مشاهدة جميع ال ‪ Properties‬التي يمكن تغييرها في قاعدة‬
‫البيانات عن طريق المر ‪'SHOW DATABASE VERBOSE 'DB_UNIQUE_NAME‬‬

‫‪ -5‬تفعيل ال ‪:Configuration‬‬
‫إلي هذه اللحظة لم يتم تفعيل ال ‪ Configuration‬ويمكن التأكد من ذلك عن طريق المر‬
‫‪ ،SHOW CONFIGURATION‬هذا المر يوضح لك حالة ال ‪ Configuration‬وهي ‪.DISABLE‬‬
‫تفعيل ال ‪ Configuration‬تسمح لل ‪ Data Guard Broker‬لدارة ال ‪ Configuration‬ولجلب ال‬
‫‪ Primary and Standby Database‬ليكونا ‪.online‬‬
‫هناك خياران للتفعيل‪:‬‬
‫أ‪ -‬تفعيل ال ‪ Configuration‬بما في ذلك جميع قواعد البيانات في ال ‪Configuration‬‬
‫;‪DGMGRL> ENABLE CONFIGURATION‬‬
‫‪Enabled.‬‬
‫‪SHOW CONFIGURATION‬‬ ‫تستطيع التأكد من التفعيل عن طريق المر‬
‫ب‪ -‬تفعيل ال ‪Standby Database‬‬
‫;'‪DGMGRL> ENABLE DATABASE 'STAN‬‬
‫‪Enabled.‬‬

‫‪;’SHOW DATABASE ‘STAN‬‬ ‫تستطيع التأكد من التفعيل عن طريق المر‬

‫‪ -6‬اختيار ال ‪:Protection Mode‬‬


‫توفر ال ‪ Data Guard‬ثلثة أنواع من ال ‪:Protection Mode‬‬
‫أ‪ :Maximum Protection -‬هذا النمط يضمنك لك أنك لن تفقد أي بيانات في حال حدوث‬
‫مشكلة في ال ‪ Primary Database‬وذلك لن ال ‪ Redo Data‬لي عملية ستكتب في كل من‬
‫ال ‪ Local Online Redo Log‬وال ‪ Standby Redo Log‬علي القل في ‪Standby Database‬‬
‫واحدة قبل أن يتم تثبيتها )‪.(Commit‬‬
‫ولضمان أنك لن تفقد أي بيانات سيتم إغلق ال ‪ Primary Database‬في حال أنها غير قادرة‬
‫علي إرسال ال ‪ Redo Data‬علي القل ل ‪ Remote Standby Redo Log‬واحد‪.‬‬
‫ب‪ :Maximum Availability -‬هذا النوع يوفر لك أعلي مستوي لحماية البيانات ولكن دون‬
‫المساس بإتاحة ال ‪ ،Primary Database‬فهو يشبه ال ال ‪ Protection Mode‬من حيث أن‬
‫العمليات ل يتم تثبيتها حتى يتم كتابة ال ‪ Redo Data‬لهذه العمليات في كل من ال ‪Local‬‬
‫‪ Online Redo Log‬وال ‪ Standby Redo Log‬علي القل في ‪ ،Standby Database‬ولكن هذا‬
‫النمط يختلف عن ال ‪ Protection Mode‬وذلك لن ال ‪ Primary Database‬ل يتم إغلقها في‬
‫حال أنها عجزت عن كتابة ال ‪ Redo Data‬في ال ‪ Remote Standby Redo Log‬وإنما تعمل ال‬
‫‪ Primary Database‬في ال ‪ Maximum Performance‬حتى يتم علج المشكلة وسوف يتم‬
Redo Log Files ‫ ولحظة علج جميع الثغرات في ال‬.Redo Log Files ‫علج الثغرات في ال‬
.Maximum Availability ‫ مره أخري وبصورة آلية في النمط‬Primary Database ‫ستعمل ال‬
Primary ‫هذا النمط يضمن لك أيضا ً أنك لن تفقد أي بيانات في حال حدوث مشكلة في ال‬
.Database
‫ وهو‬،Configuration ‫ وهو النمط الفتراضي لحظة إنشاء ال‬:Maximum Performance -‫ج‬
Primary Database ‫يوفر أعلي مستوي ممكن لحماية البيانات دون التأثير علي أداء ال‬
Local Online Redo ‫ في ال‬Redo Data ‫وذلك بأن يتم تثبيت العمليات حالما يتم تثبيت ال‬
Redo Data ‫ ل تنتظر أن يتم استقبال ال‬Primary Database ‫ بمعني أن العمليات في ال‬،Log
‫ بل إذا أصبحت أي‬،Primary Database ‫ ليتم تثبيتها في ال‬Standby Database ‫في ال‬
Primary ‫ غير متاحة فإن العمليات ستستمر بشكل طبيعي في ال‬Standby Databases
.Alert Log ‫ وسيتم إرسال رسائل تحذيرية في ال‬Database
‫ وإذا حدثت‬،Primary and Standby Databases ‫إذا ً العمليات قد ل تكون متزامنة بين ال‬
Primary ‫ قد نفقد بعض البيانات التي تم تثبيتها في ال‬Primary Database ‫مشكلة في ال‬
‫ ولكن إذا كانت الشبكة تعمل بشكل‬Standby Database ‫ ولم يتم تثبيتها في ال‬Database
.‫جيد فإن كمية البيانات المفقودة ستكون صغيرة جدا ً أو صفر‬
.Standby Redo Log ‫هذا النمط ل يحتاج لل‬

‫ ( يجب إتباع الخطوات‬Maximum Protection or Maximum Availability) ‫لتفعيل النمط‬


:‫التالية‬
Standby Redo Log ‫ إنشاء ال‬-1
.‫ واحدة‬Standby Database ‫ علي القل في‬Standby Redo Log ‫لبد من إنشاء ال‬
STARTUP OPEN READ ONLY

ALTER DATABASE ADD STANDBY LOGFILE GROUP 4


‘D:\ORACLE\PRODUCT\10.1.0\ORADATA\PRIM\REDO4.LOG’
size 10M;

ALTER DATABASE ADD STANDBY LOGFILE GROUP 5


‘D:\ORACLE\PRODUCT\10.1.0\ORADATA\PRIM\REDO5.LOG’
size 10M;
.Primary Redo Log ‫ يساوي ال‬Standby Redo Log ‫تأكد من أن حجم ال‬

LogXptMode property ‫ تهيئة ال‬-2


.Standby Database ‫ في جميع ال‬SYNC ‫لتأخذ القيمة‬LogXptMode property ‫يجب تهيئة ال‬
DGMGRL> EDIT DATABASE 'STAN' SET PROPERTY 'LogXptMode'='SYNC';

Protection Mode ‫ أخيرا ً تفعيل ال‬-3


DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;

:Switchover Operations -7
‫ حيث تستطيع من خلل ال‬،Standby Database ‫ وال‬Primary Database ‫لتغيير الدوار بين ال‬
‫ والعكس دون أن نقد‬Standby Database ‫ لتكون‬Primary Database ‫ تحويل ال‬Switchover
‫( لكل من ال‬Restart) ‫ قليل جدا ً حيث سيتم عمل إعادة تشغيل‬Downtime ‫أي بيانات مع‬
‫ أما إذا كنا‬،Physical Standby Database ‫ إذا كنا نستخدم‬Primary and Standby Database
.‫ فل نحتاج لذلك‬Logical Standby Database ‫نستخدم‬
‫ وتطويرها أو لغيرها من‬Primary Database ‫ لعملية صيانة ال‬Switchover ‫نحتاج لعملية ال‬
.Primary Database ‫السباب وليس بسبب حدوث مشكلة في ال‬
‫ ولكن قبل‬New Primary Database ‫ التي ستعلب دور ال‬Standby Database ‫نحتاج لتحديد ال‬
:‫إجراء عملية التحويل يجب مراعاة التي‬
.Online ‫ في الوضع‬Primary and Standby Database ‫ التأكد من أن ال‬-‫أ‬
‫ تعمل بشكل جيد ودون أي‬Configuration ‫ جميع قواعد البيانات المشاركة في ال‬-‫ب‬
.‫رسائل خطأ‬
.‫ إذا لزم المر‬،Primary Database ‫ في ال‬Standby Redo Log ‫ التأكد من وجود‬-‫ج‬
:Switchover ‫وإليك خطوات تنفيذ ال‬
Primary Database ‫ التحقق من ال‬-‫أ‬
DGMGRL> SHOW DATABASE VERBOSE 'PRIM';

‫ الجديدة‬Primary Database ‫ التي ستصبح ال‬Standby Database ‫ التأكد من ال‬-‫ب‬


DGMGRL> SHOW DATABASE VERBOSE 'ٍ
STAN';

Switchover ‫ تنفيذ ال‬-‫ج‬


DGMGRL> SWITCHOVER TO "STAN";
Performing switchover NOW. Please wait...
Operation requires shutdown of instance "PRIM" on database
"PRIM".
Shutting down instance "PRIM"...
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
Operation requires shutdown of instance "STAN" on database
"STAN".
Shutting down instance "STAN"...
database not mounted
ORACLE instance shut down.
Operation requires startup of instance "PRIM" on database "PRIM".
Starting instance "PRIM"...
ORACLE instance started.
Database mounted.
Operation requires startup of instance "STAN" on database "STAN".
Starting instance "STAN"...
ORACLE instance started.
Database mounted.
Switchover succeeded. New primary is "STAN"

‫ وال‬Standby Database ‫ هي ال‬PRIM ‫هذا المر سيقوم بتبديل الدوار فسوف تصبح ال‬
Primary ‫ بالطبع سيتم تنفيذ هذا المر بعد التصال بال‬،Primary Database ‫ هي ال‬STAN
.‫ ستقوم أليا ً بإغلق وفتح قواعد البيانات‬Data Guard Broker ‫ لحظ أن ال‬،Database

‫ التأكد من عملية التحول‬-‫د‬


DGMGRL> SHOW CONFIGURATION;
.‫تأكد من أن عملية التحول تمت بسلم‬
DGMGRL> SHOW CONFIGURATION;

Configuration
Name: TEST
Enabled: YES
Protection Mode: MaxPerformance
Databases:
PRIM - Physical standby database
STAN - Primary database

Current status for "TEST":


SUCCESS

:Failover Operations -8
Failover ‫ ويجب تنفيذ ال‬،New Primary Database ‫ لتكون‬Standby Databases ‫لجلب أحد ال‬
‫ وليس هناك إمكانية لرجاع ال‬Primary Database ‫في حال حدوث فشل ذريع في ال‬
Primary ‫ ففي مثل هذه الحالة يتم تجاهل هذه ال‬،‫ في الوقت المناسب‬Primary Database
New ‫ لتلعب دور ال‬Target Standby Database ‫ التي بها مشكلة ويتم جلب ال‬Database
.Primary Database
New Primary ‫ التي ستصبح‬Standby Database ‫ في ال‬Failover ‫يتم تنفيذ عملية ال‬
Primary ‫ ستصبح‬Standby Database ‫ فإن ال‬Failover ‫ وبعد انتهاء عملية ال‬،Database
‫ الصلية التي حدثت فيها المشكلة ل يمكن استخدامها ك‬Primary Database ‫ و ال‬Database
‫ لذا‬Flashback Database ‫ ما لم يتم إعادة إنشاؤها أو إرجاعها بواسطة ال‬Standby Database
Primary and Standby ‫ في كل من ال‬Flashback Database ‫فمن الفضل تفعيل ال‬
.Database

:Failover ‫واليك خطوات تنفيذ ال‬


Target Standby Database ‫ التصال بال‬-‫أ‬
DGMGRL> CONNECT sys/sys@STANNET
Connected.

Failover ‫ تنفيذ أمر ال‬-‫ب‬


DGMGRL> FAILOVER TO "STAN";
Performing failover NOW. Please wait...
Operation requires shutdown of instance "STAN" on database
"STAN".
Shutting down instance "STAN"...
database not mounted
ORACLE instance shut down.
Operation requires startup of instance "STAN" on database "STAN".
Starting instance "STAN"...
ORACLE instance started.
Database mounted.
Failover succeeded. New primary is "STAN"

Failover ‫ التأكد من نجاح عملية ال‬-‫ج‬


DGMGRL> SHOW CONFIGURATION;

Configuration
Name: TEST
Enabled: YES
Protection Mode: MaxPerformance
Databases:
PRIM - Physical standby database
STAN - Primary database

Current status for "TEST":


SUCCESS

‫ الصلية‬Primary Database ‫ التحقق من ال‬-‫د‬


DGMGRL> SHOW DATABASE 'PRIM';

Database
Name: PRIM
Role: PHYSICAL STANDBY
Enabled: NO
Intended State: ONLINE
Instance(s):
PRIM

Current status for "PRIM":


Error: ORA-16795: Database resource guard detects that database reinstantiation is
required
.‫ القديمة‬Primary Database ‫ لل‬Disable ‫ قامت بعمل‬Data Guard Broker ‫لحظ أن ال‬

‫ تستطيع‬،‫ مجموعة من الوامر لدارة ومراقبة قواعد البيانات‬Oracle Data Guard ‫* توفر ال‬
.HELP ‫استعراضها عن طريق المر‬
DGMGRL> HELP

The following commands are available:

Add: Add a standby database into the broker configuration


Connect: Connect to an Oracle instance
Create: Create a broker configuration
Disable: Disable broker control of a configuration or database
Edit: Edit a configuration, database or instance
Enable: Enable broker control of a configuration or database
Exit: Exit the program
Failover: Change a standby database to be the primary database
Help: Display description and syntax for a given command
Quit: Exit the program
Rem: Comment to be ignored by DGMGRL
Remove: Remove a configuration, database or instance
Show: Display information of a configuration, database or instance
Shutdown: Shut down a currently running Oracle instance
Startup: Start an Oracle database instance
Switchover: Switch roles between the primary database and a standby
database

Use "help <command>" to see syntax for individual commands.

‫ ثم المر‬help ‫لمعرفة طرق استخدام هذه الوامر أكتب‬


DGMGRL> HELP CREATE
Create a broker configuration
Syntax:
CREATE CONFIGURATION <configuration name> AS
PRIMARY DATABASE IS (database name>
CONNECT IDENTIFIER IS <connect identifier>;
:Fast-start failover
‫ هذه‬Fast-start failover ‫ خاصية جديدة تسمي‬Oracle 10g Release 2 ‫يوفر الصدار‬
Standby ‫ بصورة تلقائية وآلية وعمل تزامن لل‬Failover ‫الخاصية لها القدرة علي عمل‬
‫ هذا كله دون إتباع الخطوات اليدوية‬،Primary Database ‫ في حال فقدان ال‬Database
‫ وبصورة آلية يتم إعادة تهيئة ال‬Failover ‫ وأيضا ً بعد انتهاء ال‬.Failover ‫المعقدة لعمل‬
.‫ جديدة‬Standby Database ‫ القديمة لتكون‬Primary Database
:‫ في الحالت التالية‬Fast-start failover ‫ويعمل‬
Database instance failure -1
Shutdown abort -2
Datafiles taken offline due to I/O errors -3
.Primary Database‫ التصال بال‬Observe‫ و ال‬Standby Database‫ عندما يفقد ال‬-4

‫خطوات تهيئة ال‬


:Fast-start failover
:Primary and Standby Database‫ في كل من ال‬Standby Redo Logs‫ التأكد من تهيئة ال‬-1
.Standby Redo Logs‫تحدثنا سابقا ً عن ال‬

Primary and Standby‫ في ال‬SYNC ‫ ليأخذ القيمة‬LogXptMode ‫ تهيئة المتغير‬-2


:Database
DGMGRL> EDIT DATABASE 'PRIM' SET PROPERTY
'LogXptMode'='SYNC';
Property "LogXptMode" updated

DGMGRL> EDIT DATABASE 'STAN' SET PROPERTY


'LogXptMode'='SYNC';
Property "LogXptMode" updated

:FastStartFailoverTarget ‫ تحديد‬-3
FastStartFailoverTarget ‫ لذا قم بتهيئة المتغير‬Standby Database ‫قد تكون لديك أكثر من‬
.‫ ليشير كل منهم للخر‬Primary and Standby Database‫في كل من ال‬

DGMGRL> EDIT DATABASE 'PRIM' SET PROPERTY


FastStartFailoverTarget='STAN';
Property "FastStartFailoverTarget" updated

DGMGRL> EDIT DATABASE 'STAN' SET PROPERTY


FastStartFailoverTarget='PRIM';
Property "FastStartFailoverTarget" updated
.:Real Time Apply ‫ تفعيل ال‬-4
‫ لتقليل وقت عملية ال‬Standby Database ‫ في ال‬Real Time Apply ‫يفضل تفعيل ال‬
‫ بمجرد استقبالها‬Standby Database ‫ يتم تطبيقها في ال‬Redo Data ‫ وذلك لن ال‬Failover
.Primary Database ‫ في ال‬Log Switch ‫دون انتظار‬
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
USING CURRENT LOGFILE;

:MAXAVAILABILITY ‫ تحويل النمط إلي‬-5


DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS
MAXAVAILABILITY;

:Flashback Database ‫ التأكد من تفعيل ال‬-6


‫ وذلك لن ال‬Primary and Standby Database ‫ في كل من ال‬Flashback Database ‫تفعيل ال‬
Standby ‫ بشكل آلي لتكون‬Primary Database ‫ تستخدم لعادة ال‬Data Guard Broker
.‫ جديدة‬Database
STARTUP MOUNT;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;

:fast start failover ‫ لتفعيل‬-7


DGMGRL> ENABLE FAST_START FAILOVER;
Enabled.

:observer ‫ تشغيل ال‬-8


Primary or Standby Site ‫وهو ما يعرف بالمراقب والفضل أن يكون في جهاز آخر غير ال‬
‫ ول يتطلب أن يكون في الجهاز‬،Primary and Standby Database ‫ومهمته مراقبة ال‬
.Oracle Client Administrator ‫ بل فقط‬Instance
‫ وقم‬observer ‫ من جهاز ال‬Guard Configuration ‫ قم بالتصال بال‬observer ‫ولتشغيل ال‬
.Observer ‫بتشغيل ال‬
DGMGRL> CONNECT sys/password@PRIMNET;
DGMGRL> START OBSERVER;
Observer started

:fast start failover ‫ التأكد من تهيئة ال‬-9


DGMGRL> SHOW CONFIGURATION VERBOSE;

Configuration
Name: TEST
Enabled: YES
Protection Mode: MaxAvailability
Fast-Start Failover: ENABLED
Databases:
PRIM - Primary database
STAN - Physical standby database
- Fast-Start Failover target

Fast-Start Failover
Threshold: 30 seconds
Observer: observer

Current status for "TEST":


SUCCESS

‫ بمراقبة كل من ال‬Observer ‫ الن يقوم ال‬،fast start failover ‫إذا لقد انتهينا من تهيئة ال‬
‫ سيقوم‬Primary Database ‫ وفي حال حدوث مشكلة في ال‬Primary and Standby Database
‫ جديدة‬Primary Database ‫ عبارة عن‬STAN ‫ أليا ً لتصبح ال‬Failover ‫ ثانية بعملية‬30 ‫بعد‬
.‫ جديدة‬Standby Database ‫ لتكون‬PRIM ‫ويحاول إعادة ال‬
:‫ ثانية مثل ً كالتي‬45 ‫ ثانية إلي‬30 ‫يمكن تغيير الزمن من‬
DGMGRL> EDIT CONFIGURATION SET PROPERTY
FastStartFailoverThreshold = 45;

You might also like