تو این مقاله نحوه راه اندازی گارد 12 رو گذاشتم. در صورتی که پیشنهادی برای بهبود این داکیومنت دارید یا جایی رو میتونیم بهترش کنیم، حتماً بفرمائید که اعمال کنم.
دیتابیس اصلی باید در مد آرشیو باشد. در صورتی که نیست، به مقاله ای که به همین منظور تو سایت گذاشتم، مراجعه کنید.
در دیتابیس اصلی متناسب با سایر redo group باید standby logfile ساخت و از لحاظ تعداد به ازای هر thread یک عدد بیشتر.
اسم دیتابیس اصلی vahiddb و اسم استندبای رو vahiddbg در نظر می گیریم.
اول از دیتابیس اصلی یه pfile درست می کنیم و می فرستیمش سمت سرور گارد:
create pfile='/home/oracle/pfile_for_standby' from spfile
بعد پسورد فایل دیتابیس اصلی رو هم می فرستیم سمت گارد. می تونید با زدن دستور زیر به مشخصات دیتابیس پی ببرید:
srvctl config database -db vahiddb
اگر خالی برگردوند، تحت پوشه dbs تحت ORACLE_HOME با شروع orapw و بعدش نام instance میشه پیداش کرد.
مشخصات یا همون env رو تو bash profile دیتابیس گارد ست می کنیم.
تو فایل pfile ی که آوردیم ، این موارد رو تنظیم می کنیم یا تغییر میدیم:
file_dest
converts
db_unique_name
db_recovery_file
standby_file_management auto
log_file_name_convert
log_archive_config
در مورد log_archive_config باید بگویم که در اصلی هم باید تغییر یابد. در صورتی که اسم دایرکتوری ها در asm فرق می کنه، اونها رو می سازیم.
pfile جدید رو به محل زیر انتقال میدیم:
ORACLE_HOME/dbs$
دیتابیس رو به حالت nomout در میاریم و یک spfile از pfile می سازیم:
sqlplus / as sysdba
sql> startup nomount;
sql> create spfile from pfile;
sql>shut immediate;
sql>startup nomount;
sql>show parameter spfile
قشنگتر هست که پسورد فایل و spfile رو به asm در جاهای خودشان که پوشه های پسورد و پارامترفایل هست و تحت اسم خود دیتابیس وجود دارد انتقال دهیم. مخصوصاً اگر rac باشد این امر ضروری میشود.
حالا دیتابیس را با دستور زیر رجیستر می کنیم:
srvctl add database -db vahiddbg -oraclehome $ORACLE_HOME -spfile $ORACLE_HOME/dbs/spfilevahiddb.ora -pwfile $ORACLE_HOME/dbs/pwdvahiddb.256.1062884631 -role PHYSICAL_STANDBY -dbname vahiddb
یا این دستور:
srvctl add database -db vahiddbg -oraclehome $ORACLE_HOME -spfile +AGDATADG/vahiddbG/PARAMETERFILE/spfilevahiddbg.ora -pwfile +AGDATADG/vahiddbG/PASSWORD/pwvahiddbg -role PHYSICAL_STANDBY -dbname vahiddb
در حالت rac باید instance ها را هم اضافه کنیم:
[oracle@vahiddbg1 ~]$ srvctl add instance -db vahiddbg -i vahiddbg1 -n vahiddbg1
[oracle@vahiddbg1 ~]$ srvctl add instance -db vahiddbg -i vahiddbg2 -n vahiddbg2
[oracle@vahiddbg1 ~]$ srvctl add instance -db vahiddbg -i vahiddbg3 -n vahiddbg3
[oracle@vahiddbg1 ~]$ srvctl add instance -db vahiddbg -i vahiddbg4 -n vahiddbg4
[oracle@vahiddbg1 ~]$ srvctl add instance -db vahiddbg -i vahiddbg5 -n vahiddbg5
در home grid در گارد باید در listener این تغییرات را اضافه کنیم:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = vahiddg)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
(SID_NAME = vahiddg)
)
)
در هر دو سمت اصلی و گارد در oracle home در تمامی نودها tnsnames.ora را ویرایش کرده و مشخصات زیر را اضافه می کنیم:
vahiddb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vahiddb-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = vahiddb.rh)
)
)
vahiddbG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = vahiddbg.rhdbrac.rh )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = vahiddbg.rh)
( UR=A )
)
)
حالا اگر دیتابیس گارد روشن است آن را stop می کنیم و با srvctl آن را start می کنیم:
srvctl start database -db vahiddbg -o nomount
بر روی دیتابیس اصلی بصورت زیر به rman وصل می شویم و کار راه اندازی گارد را شروع می کنیم:
rman target sys/CCCCCCCC auxiliary sys/XXXXXX@vahiddbg
حالا دستور زیر را میزنیم که دیتاگارد ساخته شود:
run{
allocate auxiliary channel ac1 device type disk;
allocate auxiliary channel ac2 device type disk;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
}
وقتی کار ساخت گارد به اتمام رسید، باید broker را فعال کنیم:
در صورتی که از asm استفاده می کنیم، مسیرهای broker را می سازیم و سپس پارامتر را بر اساس آن تنظیم می کنیم. هم در اصلی و هم در گارد:
SQL> show parameter broker
NAME TYPE VALUE
———————————— ———– ——————————
dg_broker_config_file1 string /u01/app/oracle/product/12.2.0/dbhome_1/dbs/dr1vahiddbg.dat
dg_broker_config_file2 string /u01/app/oracle/product/12.2.0/dbhome_1/dbs/dr2vahiddbg.dat
dg_broker_start boolean FALSE
create path on asm:
ASMCMD [+datadg/vahiddbg] > mkdir broker
ASMCMD [+datadg/vahiddbg] > cd broker
ASMCMD [+datadg/vahiddbg/broker] > pwd
+datadg/vahiddbg/broker
sqlplus / as sysdba
alter system set dg_broker_config_file1='+datadg/vahiddbg/broker/dr1vahiddbg.dat';
alter system set dg_broker_config_file2='+datadg/vahiddbg/broker/dr2vahiddbg.dat';
alter system set dg_broker_start=TRUE;
بر روی دیتابیس اصلی با دستور زیر وصل می شویم و سپس به دیتابیس اصلی متصل می شویم:
[oracle@vahiddb1 ~]$ dgmgrl
DGMGRL for Linux: Release 12.2.0.1.0 - Production on Sat Jan 30 12:11:39 2021
Copyright © 1982, 2017, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type “help” for information.
DGMGRL> connect sys/Sysdba12@vahiddb
Connected to "vahiddb"
Connected as SYSDBA.
DGMGRL>
حالا فایل کانفیگ و دیتابیس اصلی را اضافه می کنیم:
DGMGRL> CREATE CONFIGURATION dg_config AS PRIMARY DATABASE IS vahiddb CONNECT IDENTIFIER IS vahiddb;
حالا فایل گانفیگ دیتابیس گارد را اضافه می کنیم:
DGMGRL> ADD DATABASE vahiddbg AS CONNECT IDENTIFIER IS vahiddbg MAINTAINED AS PHYSICAL;
حالا کانفیگ را فعال می کنیم:
DGMGRL> enable configuration;
در alert دیتابیس اصلی و گارد می بینیم که log shipping فعال شده.
نکته : اگر به آرشیو لاگ بعد از duplicate ایراد گرفت، اون آرشیو لاگ رو از دیتابیس اصلی کپی می کنیم به گارد و همچنین یه کنترل فایل از اصلی می آوریم و در گارد آنرا ریستور می کنیم. بعد با دستور catalog تمام دیتافایلها و آرشیو لاگها را در هر مسیری که بود را می گوییم بخواند و سپس switch database to copy می زنیم و کانفیگ بروکر را مجدداً فعال می کنیم.