نقش و اولویت پارامتر db_create_file_dest در دیتاگارد –

نقش و اولویت پارامتر db_create_file_dest در دیتاگارد

با اجرای دستور زیر، دیتافایلی را در مسیر oracle/ ایجاد می کنیم:

 SQL> create tablespace mytbs datafile ‘/oracle/mytbs01.dbf’ size 1m;

Tablespace created.

در محیط دیتاگارد، خبری از مسیر oracle/ نیست! سرنوشت این دیتافایل در این محیط چه خواهد شد؟

شیوه تنظیم تعدادی از پارامترها در محیط دیتاگارد، در پاسخ به این سوال، نقش مهمی دارد.

اولین پارامتر اثرگذار در این زمینه، پارامتر STANDBY_FILE_MANAGEMENT می باشد! در صورتی که این پارامتر، در محیط دیتاگارد، برابر با مقدار MANUAL تنظیم شده باشد، ایجاد خودکار دیتافایل در این محیط، حتی در صورت وجود مسیر oracle/، امکان پذیر نخواهد بود.

با این فرض که این پارامتر به مقدار AUTO تنظیم شده است، مسئله را پی می گیریم:

–in data guard

SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO;

System altered.

صرفا با تنظیم این پارامتر و با توجه به اینکه مسیر oracle/ در محیط دیتاگارد وجود ندارد، دیتاگارد با خطا از حالت ریکاور خارج خواهد شد:

File #6 added to control file as ‘UNNAMED00006’.

Originally created as:

‘/oracle/mytbs01.dbf’

Recovery was unable to create the file as:

‘/oracle/mytbs01.dbf’

Recovery interrupted!

Recovered data files to a consistent state at change 710261729436

Media Recovery failed with error 1274

Errors in file /u01/oracle/diag/rdbms/hrmstb/hrmstb/trace/hrmstb_pr00_25193.trc:

ORA-00283: recovery session canceled due to errors

ORA-01274: cannot add datafile ‘/oracle/mytbs01.dbf’ – file could not be created

Mon Mar 04 17:50:46 2019

ORA-283 signalled during: alter database recover managed standby database…

در این صورت، به ناچار باید دیتافایل را به صورت دستی ایجاد کنیم:

–in data guard

SQL> alter system set STANDBY_FILE_MANAGEMENT=MANUAL;

System altered.

SQL> alter database create datafile 6 as ‘/u01/oracle/oradata/hrm/mytbs01.dbf’;

Database altered.

SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO;

System altered.

برای جلوگیری از رخ دادن این خطا، می توان از پارامتر db_file_name_convert کمک گرفت با تنظیم این پارامتر، عملیات را تکرار می کنیم:

–in data guard

SQL> alter system set db_file_name_convert=’/oracle’,’/u01/oracle/oradata/hrm’ scope=spfile;

System altered.

SQL> startup mount force;

–in primary:

SQL> drop tablespace mytbs;

Tablespace dropped.

SQL> create tablespace mytbs datafile ‘/oracle/mytbs01.dbf’ size 1m reuse;

Tablespace created.

با مطالعه alert log دیتاگارد، خواهیم دید که پارامتر db_file_name_convert سبب ایجاد دیتافایل در مسیری غیر از oracle/ خواهد شد:

Recovery created file /u01/oracle/oradata/hrm/mytbs01.dbf

Successfully added datafile 6 to media recovery

Datafile #6: ‘/u01/oracle/oradata/hrm/mytbs01.dbf’

روش راحت تری هم برای حل این مسئله وجود دارد و آن هم استفاده از پارامتر db_create_file_dest می باشد:

–in data guard

SQL> alter system reset db_file_name_convert scope=spfile;

System altered.

SQL> startup mount force;

SQL> alter system set db_create_file_dest=’/u01/oracle/oradata’;

System altered.

–in primary:

SQL> drop tablespace mytbs;

Tablespace dropped.

SQL> create tablespace mytbs datafile ‘/oracle/mytbs01.dbf’ size 1m reuse;

Tablespace created.

با تنظیم این پارامتر، دیتافایل mytbs01.dbf، به صورت OMFای ایجاد خواهد شد:

Successfully added datafile 6 to media recovery

Datafile #6: ‘/u01/oracle/oradata/HRMSTB/datafile/o1_mf_mytbs_g7tfpr41_.dbf’

در ادامه به این سوال پاسخ خواهیم داد که در صورت تنظیم هر دو پارامتر db_file_name_convert و db_create_file_dest، اولویت با کدام یک از این دو خواهد بود؟

تنظیمات زیر را در نظر بگیرید:

SQL> alter system set db_file_name_convert=’/oracle’,’/u01/oracle/oradata/hrm’ scope=spfile;

System altered.

SQL> alter system set db_create_file_dest=’/dbf/files’;

System altered.

SQL> startup mount force;

–in primary:

SQL> drop tablespace mytbs;

Tablespace dropped.

SQL> create tablespace mytbs datafile ‘/oracle/mytbs01.dbf’ size 1m reuse;

Tablespace created.

در صورت تنظیم هر دو پارامتر، تقدم با پارامتر db_create_file_dest خواهد بود:

Successfully added datafile 6 to media recovery

Datafile #6: ‘/dbf/files/HRMSTB/datafile/o1_mf_mytbs_g7tg2wr9_.dbf’

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *