راه اندازی و پیکربندی دیتاگارد (Physical Standby)

Data guard عنوان راهکاری است از اوراکل برای پیاده سازی Standby Database. که معمولا برای پایداری سیستم و جلوگیری از خرابی های مختلف مورد استفاده قرار می گیرد.
در این مقاله نحوه پیاده سازی دیتاگارد از نوع Physical Standby برروی دیتابیس ۱۱g و با روش Duplicate توضیح داده شده است.
فرض کنید:
• برروی دو سرور (فیزیکی یا مجازی) با سیستم عامل اوراکل لینوکس ۵٫۶ و دیتابیس ۱۱٫۲٫۰٫۲
• برروی سرور primary دیتابیس بصورت کامل نصب شده و instance بالاست.
• برروی سرور Standby تنها اوراکل بصورت Software only نصب شده است.

1

تنظیمات سرور Primary
ابتدا باید بررسی کنید که دیتابیس primary در حالت Archivelog هست یا خیر؟

1

اگر در حالت Noarchivelog بود به شکل زیر به حالت archivelog سوییچ نمایید:

با دستور زیر Force Logging را فعال نمایید: (اینکار دیتابیس را مجبور می کند که برای کلیه تغییرات redo log تهیه کند.)

3

پارامترهای سیستمی ((Initialization Parameters
پارمترهای db_name و Db_unique_name را مشاهده کنید. در این مورد خاص نام آنها را DB11G در دیتابیس primary در نظر گرفتم.

4

پارامتر db_name در هردو دیتابیس primary و Standby باید “یکسان” باشد. ولی db_unique_name باید از یکدیگر متفاوت باشد. به عنوان مثال مقدار پارامتر db_unique_name در دیتابیس Standby برابر با DB11G_STBY می باشد.
با دستور زیر مقادیر این پارامتر در هر دو دیتابیس در تنظیم پارامتر DG_CONFIG مورد استفاده قرار می گیرد.

5

حالا نوبت به مقداردهی پارامتر LOG_ARCHIVE_DEST_2 یعنی محلی قرار است REDO LOG به آنجا ارسال شود، میرسد. دقت کنید مقداری که در جلوی SERVICE نوشته شده است نامی که شما در فایل”$ORACLE_HOME/network/admin/tnsnames.ora” قرار داده اید .

6

پارامترهای دیگر را به شکل زیر مقداردهی کنید:

7

راه اندازی سرویس دیتاگارد
در هر دو دیتابیس primary و standby با استفاده از ابزار NETCA و یا بصورت دستی محتوای فایل tnsnames.ora را بشکل زیر تغییر دهید:

8

یک کپی pfile از روی spfile دیتابیس Primary تهیه نمایید:

9

باید برخی از این پارامترها (که مربوط به سرور standby میشود) را اصلاح کنید:

باید تغییری هم در فایل Listener.ora سمت دیتابیس standby داده و نام instance را صریحا (Static Registeration) به آن معرفی کنید:

11

و سرویس listener را یکبار restart کنید:

12ایجاد Standby redo logfile در سمت primary
فرمان Duplicate بصورت خودکار Stadnby Redo logfile ها را در سمت standby ایجاد می کند اما در سمت primary باید این فایلها بصورت دستی و به تعداد “حداقل یکی بیشتر از” تعداد online log ها و “دقیقا با همان سایز” ایجاد کنیم (اینکار باعث می شود که در زمان switchover به دیتابیس primary با مشکلی مواجه نشویم).

ساخت دیتابیس Standby با استفاده از فرمان DUPLICATE
با استفاده از pfileی که بالاتر ایجاد کردیم یک auxiliary instance برروی دیتابیس standby لود می کنیم:

14

به Rman متصل شده و کانالهای Target و Auxiliary را در آن ایجاد می کنیم (حتما با پسورد به کانال ها متصل شوید):

15

حالا دستور DUPLICATE را به صورت زیر اجرا می کنیم:

16

;

در زیر برخی از پارامترهای استفاده شده در فرمان DUPLICATE را بررسی می کنیم:
• For standby: این پارامتر به duplicate می گوید که دستور را برای دیتابیس standby باید اجرا کنی و در نتیجه نیازی به تغییر DBID در حالت force نیست.
• FROM ACTIVE DATABSE: با این پارامتر داده مستقیما از روی دیتافایلها خوانده شده و دیگر نیازی به تهیه backup قبل از اجرای دستور نمی باشد.
• DORECOVER : بعد از restore کردن اطلاعات در دیتابیس standby ، بلافاصله عملیاتRecovery انجام شده و داده ها به لحظه جاری در دیتابیس primary میرسند.
• SPFILE: پارامترهایی سیستمی که در ذیل این دستور قرار می گیرند در زمان ساخت spfile در دیتابیس standby رونویسی شده و جایگزین مقادیر قبلی می شوند.
• NOFILENAMECHECK: محل و نام فایلها در مقصد بررسی نمی شود.
پس از اتمام دستور DUPLICATE باید سرویس Apply Process اجرا شده تا از این به بعد دیتابیس STANDBY خود را با دیتابیسPrimary هماهنگ (SYNC)نماید.

اجرای سرویس Apply Process
با اجرای دستور زیر در دیتابیس standby سرویس مذکور اجرا خواهد شد.

17

در صورت نیاز به لغو این سرویس از دستور زیر استفاده کنید:

18

همچنین شما می توانید با تغییر دستور به صورت زیر از امکان پرس و جوی در لحظه (real-time apply) برروی دیتاگارد استفاده نمایید.

19

تست انتقال REDO LOG ها
برای این کار روشهای گوناگونی وجود دارد که باید در مقاله ای جداگانه به آن بپردازیم اما فعلا به روش زیر بسنده خواهیم کرد:
برروی سرور primary وضعیت آخرین Archivelog را بررسی کرده و سپس log switch کنید:

سپس همین عمل را در سرور standby انجام داده و از sync بودن دیتاگارد با دیتابیس اصلی اطمینان حاصل نمایید.

نویسنده : آقای مهندس فرشید قاسمی