چگونه در پایگاه داده اوراکل یک دیتا فایل را از محیط FILESYSTEM به محیط ASM منتقل کنیم؟
مقدمه
در برخی از سناریو ها لازم می شود دیتا فایل های خارج از ASM به ASM منتقل شوند . این حالت در سناریو های RAC که به اشتباه دیتا فایلی خارج از محیط ASM ساخته می شود خیلی پرکاربرد می باشد که منجر به خطاهای سیستمی می شود.
مراحل کار به صورت دستور عمل زیر می باشد :
• قبل از هر کاری باید دیتا فایل مورد نظر را OFFLINE کنیم ( در این حالت برای اینکه در وضعیت open این کار بتوانید انجام دهید پایگاه داده اوراکل باید در حالت ARCHIVELOG باشد)
SQL> alter system switch logfile;
System altered.
SQL> select file_name, file_id from dba_data_files;
FILE_NAME FILE_ID
———————
/u01/oracle/oradata/test1.dbf 6
SQL> alter database datafile 6 offline;
Database altered.
SQL> select file_name, file_id, online_status from dba_data_files where file_id=6;
FILE_NAME FILE_ID ONLINE_STATUS
———- ——-
/u01/oracle/oradata/test1.dbf 6 RECOVER
• در این مرحله از ابزار ASMCMD برای انتقال دیتا فایل به ASM استفاده می کنیم.
ASMCMD> cp /u01/oracle/oradata/test1.dbf +DATA/LONDON/DATAFILE/test.dbf
copying /u01/oracle/oradata/test1.dbf -> +DATA/LONDON/DATAFILE/test.dbf
• با دستور زیر از صحت انتقال مطمئن می شویم.
ASMCMD> cd +DATA/ASM/DATAFILE
ASMCMD> ls -lt
Type Redund Striped Time Sys Name
N test.dbf => +DATA/ASM/DATAFILE/test.dbf.286.833718815
• حال که توانستیم فایل را منتقل کنیم باید دیتا فایل را در کنترل فایل نیز تغییر نام دهیم و به مسیر جدید اشاره کنیم که با دستور زیر این امر انجام می گردد.
SQL> alter database rename file ‘/u01/oracle/oradata/test1.dbf’ to ‘+DATA/LONDON/DATAFILE/test.dbf’;
Database altered.
• در این مرحله دیتا فایل را ONLINE می نماییم
SQL> alter database recover datafile 6;
Database altered.
SQL> alter database datafile 6 online;
Database altered.
• در نهایت با select زیر از موفقیت آمیز بودن عملیات مطمئن می شویم.
SQL> select file_name, file_id, online_status from dba_data_files where file_id=6;
FILE_NAME FILE_ID ONLINE_STATUS
———- ——- ————-
+DATA/london/datafile/test.dbf 6 ONLINE