به قسمت سوم از راهاندازی سناریو Active DataGuard پایگاه داده اوراکل خوش آمدید
پیکربندی rlwrap
تو مرحله اول از این سری نصب و راهاندازی پکیج rlwrap رو معرفی و نصب کردیم. حالا نوبت به این رسیده که پیکربندی مورد نیاز رو انجام بدیم
[oracle@shafaq ~]$ vim ~/.bash_profile
# rlwrap configuration
alias condb='rlwrap sqlplus / as sysdba'
alias conrm='rlwrap rman target /'
alias condg='rlwrap dgmgrl /'
از این به بعد از aliasها برای اتصال به دیتابیس، rman و گلدن گیت استفاده میکنیم.
چک کردن وضعیت grid و database
از طریق کاربر grid به سیستمعامل login کرده و با دستور crsctl نسبت به بررسی وضعیت منابع grid و database به شکل زیر اقدام میکنیم
از آپشن help میتوانید برای کمک بیشتر استفاده کنید
crsctl = cluster control
----
stat = status
res = resurces
option t = Tabular display
چک کردن سایت شفق (primary)
[grid@shafaq ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE shafaq
ora.FRA.dg
ONLINE ONLINE shafaq
ora.LISTENER.lsnr
ONLINE ONLINE shafaq
ora.asm
ONLINE ONLINE shafaq Started
ora.ons
OFFLINE OFFLINE shafaq
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE shafaq
ora.diskmon
1 OFFLINE OFFLINE
ora.evmd
1 ONLINE ONLINE shafaq
ora.orcl.db
1 ONLINE ONLINE shafaq Open
چک کردن سایت تابان (standby)
[grid@taban ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE taban
ora.FRA.dg
ONLINE ONLINE taban
ora.LISTENER.lsnr
ONLINE ONLINE taban
ora.asm
ONLINE ONLINE taban Started
ora.ons
OFFLINE OFFLINE taban
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE taban
ora.diskmon
1 OFFLINE OFFLINE
ora.evmd
1 ONLINE ONLINE taban
نحوه گرفتن help
[grid@taban ~]$ crsctl stat res -help
Usage:
crsctl status resource [<resName>[...]|-w <filter>] [<-p|-v> [-e]] | [[-f|-l|-g]] | [[-k <cid>|-n <server>] [-d <did>]] | [-s -k <cid> [-d <did>]]
Check status of designated resources
crsctl status resource [<resName>[...]|-w <filter>] -t
Print status of resources in tabular format
crsctl status resource [<resName>[...]] -dependency [-stop | -pullup]
Print resource dependencies
where
resName [...] One or more blank-separated resource names
-w Resource filter (e.g., "TYPE = ora.database.type")
-p Print static configuration
-v Print runtime configuration
-e Evaluate a resource instance's special values
-f Print full configuration
-l Print all cardinal and degree members
-g Check if resources are registered
-k Cardinality ID
-d Degree ID
-n Server name
-s Get target servers for relocation
-t Tabular display
-dependency Display resource dependencies, default is start dependencies
-stop Display resource stop dependencies
-pullup Display resource pullup dependencies
سناریو دیتاگارد
قدم اول - سایت primary
فعال کردن force logging یکی از شرطهای راهاندازی دیتاگارد است. در حقیقت با دادن hintهایی به optimizer میتوان نوشتن در Online Redo Log Fileها را برای دستوراتی خاص متوقف کرد (مانند append, nologging) ولی با فعال کردن این ویژگی دیتابیس در هر حالتی عملیات ایجاد redoها را انجام خواهد داد.
[oracle@shafaq ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 3 23:05:21 2018
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Automatic Storage Management option
SQL> alter database force logging;
Database altered.
قدم دوم (پارامترها) - سایت primary
۲ روش برای تغییر پارمترهای اوراکل وجود دارد:
- روش اول: از روی SPFILE ما یک PFILE بسازیم و بعد از تغییر دوباره PFILE را تبدیل به SPFILE کنیم
- روش دوم: تغییر پارامترها با استفاده از Alter در دیتابیس
من از روش دوم این مرحله را انجام میدم، به شما هم این روش رو توصیه میکنم:
فعالسازی فضای FRA
برای فعالسازی فضای FRA دو پارامتر db_recovery_file_dest و db_recovery_file_dest_size باید مقداردهی شوند
اگر موقع پیکربندی دیتابیس با ابزار DBCA این فضا رو پیکربندی کردید نیازی به پیکربندی ندارید
SQL> show parameter DB_RECOVERY_FILE_DEST;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +FRA
db_recovery_file_dest_size big integer 20384M
SQL>
لیست پارامترها
alter system set log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles)' scope=both;
alter system set log_archive_dest_state_1=enable scope=both;
alter system set log_archive_format='archive_%s_%t.%r' scope=spfile;
alter system set log_archive_max_processes=30 scope=both;
alter system set log_archive_dest_2='service=standby lgwr sync valid_for=(online_logfiles,primary_roles) db_unique_name=maindg' scope=both;
alter system set log_archive_dest_state_2=enable scope=both;
alter system set log_archive_config='dg_config=(maindb,maindg)' scope=both;
alter system set db_unique_name=maindb scope=spfile;
alter system set dg_broker_start=true scope=both;
alter system set fal_server=standby scope=both;
alter system set fal_client=primary scope=both;
alter system set standby_file_management=auto scope=both;
alter system set db_file_name_convert='+data','+data' scope=spfile;
alter system set log_file_name_convert='+fra','+fra' scope=spfile;
مفهوم پارامترها
دنیای بدون مفهوم معنا نداره! تک تک مفهوم پارامترها رو بررسی میکنیم
پارامتر log_archive_dest_1
محل قرارگیری 1 مکان آرشیوها
مقدارها
LOCATION = محل قرارگیری لاگها
VALID_FOR = پارامتر ما برای چه حالتهایی redo dataها را در مقصد(محل مشخص شده) براساس فاکتورهای مشخص عملیات نوشتن را انجام دهد. این مقدار دارای ۲ آرگومان ورودی است.
نکات مفید
ویژگی VALID_FOR به صورت اختیاری است (optional) ولی به هر حال اوراکل پیشنهاد میکنه این ویژگی برای هر مقصد redo transport در هنگام پیکربندی Oracle Data Guard تنظیم شود. با این تتظیم عملیات redo transport بعد از هر switchover و تغییر نقش ادامه پیدا میکند.
این ویژگی میتواند برای هر پارمتر LOG_ARCHIVE_DEST_n فعال شود. به طور مشخص این ویژگی از ۲ ورودی وابسته به هم پشتیبانی میکند: VALID_FOR=(redo_log_type,database_role)
کلمه کلیدی redo_log_type به طور مشخص برای تعیین این موضوع است که مقصد ما برای آرشیو کردن اطلاعات از چه نوعی است.
- ONLINE_LOGFILE = در مقصد فقط online redo log fileها آرشیو میشوند.
- STANDBY_LOGFILE = در مقصد فقط standby redo log fileها آرشیو میشوند.
- ALL_LOGFILES = مقصد ما میتواند online redo log fileها و یا standby redo log fileها را آرشیو نماید.
کلمه کلیدی database_role به طور مشخص برای تعیین این موضوع است که مقصد ما در چه نقشی در باید در حال انجام عملیات آرشیو گردد:
- PRIMARY_ROLE = پارامتر فقط در زمانی که مقصد در نقش primary است فعال میگردد.
- STANDBY_ROLE = پارامتر فقط در زمانی که مقصد در نقش standby است فعال میگردد.
- ALL_ROLES = پارارمتر در زمانهایی که مقصد در نقش primary و یا standby است میتواند معتبر و فعال باشد.
اگه شما به طور مشخص ویژگی VALID_FOR رو برای هر مقصدتان مشخص نکنید به طور پیشفرض آرشیو کردن online redo log fileها و standby redo log fileها در مقصد فعال میگردد، صرف نظر از اینکه پایگاه داده در نقش primary و یا standby است. رفتار پیشفرض مساوی تنظیم (ALL_LOGFILES,ALL_ROLES) در ویژگی VALID_FOR است.
این ویژگی میتواند هم در پایگاه داده primary و هم در پایگاه داده standby با یک initialization parameter فعال گردد.
مثال ویژگی VALID_FOR
مثال زیر رفتار این ویژگی در حالت پیشفرض است:
LOG_ARCHIVE_DEST_1='LOCATION=/disk1/oracle/oradata VALID_FOR=(ALL_LOGFILES, ALL_ROLES)'
وقتی پایگاه داده در نقش primary و یا standby است destination 1 تمام log fileها را در مسیر دایرکتوری لوکال /disk1/oracle/oradata آرشیو میکند.
Online Redo Log Fileها (ORL)
زمانی که Redo Buffer از RAM در Disk فلاش میشود محتویات redo در Online Redo Log Fileها نوشته میشود. حال زمانی که ما گارد راهاندازی میکنیم به پایگاه داده میگوییم با استفاده از عملیات log shipping شروع کن Online Redo ها را از روی Buffer و یا Fileها با استفاده از Oracle Net Services به سمت مقصد مشخص شده بفرست.
Standby Redo Log Fileها (SRL)
درحقیقت SRLها از جنس ORL و با همان مکانیزمها هستند با این تفاوت که redo ای را در خود نگهداری میکنند که از سمت پایگاه داده primary به پایگاه داده فعلی (standby) فرستاده شده است. بعد از دریافت redoها از سمت standby توسط background process ای به نام RFS و ذخیره در SRLها وظیفهی Background Process ای به نام MRP و یا LSP (بسته به نوع مکانیزم دیتاگارد - فیزیکال و یا لاجیکال) است که SRLها را بر روی ORLهای آن پایگاه داده اعمال نماید.
نکته: SRLها هم در سمت primary و هم standbyها ساخته میشوند ولی تا زمانی که SwitchOver ای اتفاق نیافتد(نقشها عوض نشوند) در سمت primary خالی هستند.
بررسی نیاز یا عدم نیاز به SRL
اوراکل پیشنهاد میکنه همیشه در سناریو دیتاگارد SRL داشته باشید اما میتوانید بدون ایجاد SRLها هم زیرساخت دیتاگارد را فقط با استفاده از آرشیوهای دیتابیس primary راهاتدازی کنید.
دیتاگارد اوراکل(standby) به طور کلی در ۳ رفتار مختلف میتواند از پایگاه داده primary شما محافظت میکند انتخاب هر کدام از این رفتارها با توجه به بیزنس و نیازمندی شما است و زیرساخت میتواند بدون SRL و یا با SRL باشد:
- Maximum Performance = الزاما نیاز به SRL نداره، چون در این رفتار پایگاه داده standby میتواند sync نباشد
- Maximum Protection = الزاما نیاز به SRL دارد، چون الزما باید پایگاه داده standby با primary حتما sync باشد
- Maximum Availability = در این رفتار مادامی پایگاه داده ها با هم sync هستند همانند رفتار protection عمل میگردد و مادامی که sync نیستند همانند رفتار performance عمل میگردد
منابع
https://docs.oracle.com/cd/B28359_01/server.111/b28294/log_arch_dest_param.htm