۱۱G DATAGUARD اوراکل؛ CLIENT FAILOVER خودکار
۱۱G DATAGUARD اوراکل؛ CLIENT FAILOVER خودکار
در این مطلب در خصوص CLIENT FAILOVER خودکار که ویژگی جدید ۱۱G DATAGUARD اوراکل میباشد، می پردازیم.
تا پیش از نسخهی ۱۱G، به یک یا بیشتر trigger نوشته شده توسط کاربر نیاز بود تا بسته به موقعیت، پروسهی CLIENT FAILOVER به صورت خودکار انجام شود.
۱۱G DATAGUARD دو پیکر بندی ساده را به طور عمده انتشار میدهد که نیاز به نوشتن trigger توسط کاربر را برطرف میکند. انتقال وظیفه توسط کارگذار(broker) DATAGUARD به صورت اتوماتیک این موارد را انجام میدهد:
_ استندبای کردن پایگاه داده
_سرویسهای مناسب را روی پایگاه دادهی جدید ارائه دادن
_ قطع ارتباط Client از پایگاه دادهی ناموفق
_ و ارجاع او به پایگاه دادهی جدید بدون هیچگونه نیاز به مداخلهی دستی کاربر
مرور کلی:
_ یک سرویس (orcls) جدید برای پایگاه داده بسازید تا شروع کنید
_ یک نام سرویس شبکه (net service name) درست کنید که به هر دو پایگاه دادههای اصلی و استندبای اشاره داشته باشد
_ یک trigger درست کنید که سرویس را در پایگاه دادهی جدید اجرا کند
_ با استفاده از سرویس اوراکل به پایگاه دادهی جدید متصل شوید
_ سفارش یک جستجو ((query طولانی مدت را بدهید
_ در حالی که جستجو در حال انجام است، عملیات switchover به حالت استندبای را انجام دهید
_ بعد از switchover، چک کنید که جستجو به پایگاه دادهی جدید منتقل شده باشد
پیاده سازی و اجرا:
SERVICE_NAMES را چک کرده و پارامترها را در پایگاهدادهی اصلی بررسی کنید
PRI>sho parameter service_names
NAME TYPE VALUE
———————————— ———– ——————————
service_names string orcl
یک سرویس اوراکل جدید (ORCLS) ایجاد کنید
PRI>exec dbms_service.create_service(-
service_name => ‘orcls’,-
network_name => ‘orcls’,-
failover_method => ‘BASIC’, –
failover_type => ‘SELECT’,-
failover_retries => 180,-
failover_delay => 1);
چک کنید که LISTENER از سرویس اطلاعی نداشته باشد انگار که هنوز شروع به کار نکرده است
$ lsnrctl services |grep orcls
سرویس را اجرا کنید
PRI>exec dbms_service.start_service(‘orcls’);
چک کنید که سرویس در قسمت پارامترهای پارامترهای SERVICE_NAMES وجود داشته باشد
PRI>sho parameter service_names
NAME TYPE VALUE
———————————— ———– ——————————
service_names string orcls
چک کنید که سرویس به طور خودکار برای LISTENER رجیستر شده باشد
PRI>ho lsnrctl services |grep orcls
Service “orcls” has 1 instance(s).
بعد از ساخت trigger که سرویس را راهاندازی میکند، پایگاهداده ی جدید را راهاندازی کنید و در STANDBY DATABASE متوقفاش کنید
PRI>create or replace trigger manage_service after startup on database
declare
role varchar2(30);
begin
select database_role into role from v$database;
IF role = ‘PRIMARY’ THEN
DBMS_SERVICE.START_SERVICE(‘orcls’);
ELSE
DBMS_SERVICE.STOP_SERVICE(‘orcls’);
END IF;
END;
لطفا توجه داشته باشید که هر دو پایگاه دادههای primary و standby میبایست به طور static، در database home با listener رجیستر شده باشند. حال در اینجا listener در database home برای هر دو standby و primary، در پورت ۱۵۲۹ اجرا میشود.
اگر هر دو پایگاه دادههای standby و primary روی یک ماشین مشترک هستند:
create net service name orcls
– service name = orcls
– add address on host1 port 1521 (representing both primary database orcl and standby database sby)
حال وقتی سرویس روی اوراکل در دسترس است ( primary)، listener به سرویس ORCL متصل میشود
و وقتی سرویس در حالت sby در دسترس است ( standby به همراه FAILOVER/SWITCHOVER)، کاربر به پایگاهدادهی sby متصل میشود
اگر پایگاه دادههای standby و primary روی سیستمهای متفاوت هستند:
– USING NETMGR
. create net service name orcls
– service name = orcls
– add address on host1 port 1521 (representing primary database orcl)
– add address on host2 port 1521 (representing standby database sby)
حال وقتی سرویس در حال اجرا روی پایگاهدادهی اصلی اوراکل باشد، به طور اتوماتیک در پورت ۱۵۲۹ و host1 با listener رجیستر میشود و برنامه به پایگاه دادهی اوراکل (ORCL) متصل میشود.
حال وقتی سرویس در حال اجرا روی پایگاهدادهی استندبای اوراکل باشد، به طور اتوماتیک در پورت ۱۵۲۹ و host2 با listener رجیستر میشود و برنامه به پایگاهدادهی standby متصل میشود.
یک کاربر DGTEST ایجاد کنید
PRI>create user dgtest identified by dgtest;
grant create session to dgtest;
grant select_catalog_role to dgtest;
در حال حاضر من هر دو پایگاه دادههای standby و primary را روی ماشین مشترک دارم
پیکر بندی در حال اجرا را چک کنید
Primary – orcl
Standby sby
DGMGRL>show configuration
چک کنید که سرویس با listener رجیستر شده باشد در پورت ۱۵۲۹ و به اوراکل (پایگاه دادهی primary)،هدایت کند
$lsnrctl services
به سرویس اوراکل ORCLS متصل شوید و بررسی نمایید DB_UNIQUE_NAME=ORCL(PRIMARY)
PRI>connect dgtest/dgtest@orcls
show parameter db_unique_name
چک کنید که Session تاکنون ناموفق نشده باشد
(failed_over = no)
PRI>select failover_method, failover_type, failed_over
from v$session
where username=’DGTEST’;
سفارش یک جستجو طولانی را در این قسمت بدهید و همزمان در یک DGMGRL Session دیگر به استندبای سوییچ کنید
PRI>select * from dba_objects, dba_tables;
DGMGRL>switchover to sby;
در حالی که تعویض (SWITCHOVER) چک می شود، جستجو به طور موقت به حالت تعلیق در میآید
پس از آن که پایگاهداده ی sby راه اندازی شد، چک کنید که سرویس اوراکل (ORCLS) به سمت این پایگاه داده (Standby) اشاره کند
$lsnrctl services
پس از عملیات Switch Over وضعیت اجرای query را بررسی نمایید
پیکربندی کنونی را بررسی نمایید
DGMGRL>show configuration;
از Failed Over شدن Session به پایگاه داده Standby مطمئن شوید
PRI>sho parameter db_unique_name
بررسی Failed Over شدن Session
PRI>select failover_method, failover_type, failed_over
from v$session
where username=’DGTEST’;
بازگرداندن تنظیمات قبلی:
DGMGRL>switchover to orcl;
همچنین از قابلیت FailOver خودکار در دیتاگارد پایگاه داده ۱۱g میتوان به منظور Fail Over خودکار یک Job در حال اجرا به Standby در هنگام switchover یا failover نیز استفاده نمود.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.