Bu yazıda Oracle veritabanıdaki bir datafile dosyasını ASM diskine nasıl taşınacağını 2 yöntem ile anlatacağım.
Datafile ler ile ilgili bilgiyi aşağıdaki gibi alabiliriz.
$ sqlplus / as sysdba SQL> select name from v$datafile; NAME ------------------------ +DATA/ORCL/DATAFILE/system.257.953933869 +DATA/ORCL/DATAFILE/sysaux.258.953933921 +DATA/ORCL/DATAFILE/undotbs1.259.953933957 +DATA/ORCL/DATAFILE/users.260.953933957 /u01/app/oracle/oradata/tbs_f03.dbf
“tbs_f03.dbf” hariç diğer datafilelerim ASM disk grubunda. tbs_f03.dbf datafile dosyasını ASM diskine taşımak için aşağıdaki adımları takip edin.
SQLPlus Üzerinden Taşıma:
Datafile dosyasını SQLPlus üzerinden taşımak için aşağıdaki adımları takip edin. Datafile’i bu şekilde taşımak için durumunu offline yapmaya gerek yoktur. Bu özellik 12c ile gelmiştir.
$ sqlplus / as sysdba SQL> alter database move datafile '/u01/app/oracle/oradata/tbs_f03.dbf' to '+DATA';
RMAN Kullanarak Taşıma:
$ sqlplus / as sysdba SQL> alter tablespace tbs_f03 offline; SQL> exit;
Datafile’i offline durumuna getirdikten sonra RMAN ile ASM diskine taşıyabiliriz. Eğer veritabanınız archivelog modundaysa tablespace’i offline yapmanıza gerek yortur.
$ rman target / RMAN> copy datafile '/u01/app/oracle/oradata/tbs_f03.dbf' to '+DATA'; Starting backup at 06-SEP-17 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=38 device type=DISK channel ORA_DISK_1: starting datafile copy input datafile file number=00005 name=/u01/app/oracle/oradata/tbs_f03.dbf output file name=+DATA/ORCL/DATAFILE/tbs_03.267.953992759 tag=TAG20170906T135918 RECID=1 STAMP=953992758 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 06-SEP-17 Starting Control File and SPFILE Autobackup at 06-SEP-17 piece handle=/u01/app/oracle/oradata/c-1481714732-20170906-00 comment=NONE Finished Control File and SPFILE Autobackup at 06-SEP-17 RMAN> exit;
ASM diskine taşıma bittikten sonra datafile’nin tam konumunu verecektir. Bu adresi sqlplus ile bağlanıp datafiles tablosundan güncellemek gerekiyor.
$ sqlplus / as sysdba SQL> alter database rename file '/u01/app/oracle/oradata/tbs_f03.dbf' to '+DATA/ORCL/DATAFILE/tbs_03.267.953992759'; SQL> alter tablespace tbs_03 online; SQL exit;
Datafile taşıma işlemi tamamlandı, ama oracle dizininde bulunan datafile dosyası hala duruyor. Yer kaplamasını istemiyorsanız silebilirsiniz.
$ rm /u01/app/oracle/oradata/tbs_f03.dbf
Great post !