Blog ' da Ara

Loading

16 Kasım 2011

ORACLE VERITABANINDA DATAFILE NASIL TAŞINIR

Bir Oracle Veritabanında datafile 'ı başka bir diske taşıma işleminin adımları veritabanının arşiv modda olup olmaması durumuna göre belirlenir.Bu işlemleri aşağıda olumsuz durumlar karşısında geri dönme senaryoları ile birlikte bulabilirsiniz.
                SELECT log_mode FROM v$database;
Sorgusu ile veritabanının arşiv modda olup olmadığını görebilirsiniz.
Eğer Veritabanı Arşiv Modda ise (ARCHIVELOG) datafile aşağıdaki adımlarla diger bir diske taşınabilir.
ALTER DATABASE DATAFILE 'old_datafile_path/datafile_name' OFFLINE;
Adım 1;
cp /old_datafile_path/datafile_name  /new_datafile_path/datafile_name;
Datafile diğer diske başarılı bir şekilde kopyalanırsa;
Adım 2;
ALTER DATABASE RENAME FILE  'old_datafile_path/datafile_name' to  'new_datafile_path/datafile_name';

                                                                                                                        
            RECOVER DATAFILE  'new_datafile_path/datafile_name';

ALTER DATABASE DATAFILE   'new_datafile_path/datafile_name' ONLINE;
Tüm Adımlar başarılı bir şekilde tamamlanmışsa eski diskteki datafile silinebilir.Böylece fuzuli yer israfıda engellenmiş olur.
rm /old_datafile_path/datafile_name;

Taşıma işlemi sırasında peki hata alınırsa sisteme zarar vermeden nasıl geri dönülür?
Eğer Adım 1 de hata alınmışsa geri dönüş için;
ALTER DATABASE DATAFILE 'old_datafile_path/datafile_name' ONLINE;
Eğer Adım 2 de hata alınmışsa geri dönüş için;
ALTER DATABASE RENAME FILE  'new_datafile_path/datafile_name' to 'old_datafile_path/datafile_name';
ALTER DATABASE DATAFILE 'old_datafile_path/datafile_name' ONLINE;
rm /new_datafile_path/datafile_name;
Eğer Veritabanı Arşiv Modda değil ise (NOARCHIVELOG) datafile aşağıdaki adımlarla diger bir diske taşınabilir.
Adım 1:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
cp /old_datafile_path/datafile_name  /new_datafile_path/datafile_name;
           
 ALTER DATABASE RENAME FILE '/old_path/name_of_datafile'
    TO '/new_path/name_of_file';
Adım 2:
ALTER DATABASE OPEN;
Eğer Adım 1 de hata alınmış ise geri dönüş için;
ALTER DATABASE OPEN;
Eğer Adım 2 de hata alınmış ise geri dönüş için;
ALTER DATABASE RENAME FILE '/new_path/name_of_file'
             TO '/old_path/name_of_datafile';

ALTER DATABASE OPEN;

Eğer datafileler ASM diskgrouplar üzerinde ise taşıma olayı aşağıdaki işlemlerle adım adım yapılabilir.

1-SQL>alter database datafile '+FRA/file_on_fra.3912.766160401' offline;

            2-RMAN> COPY DATAFILE '+FRA/file_on_fra.3912.766160401' TO '+DATA';



Bu aşamadan sonra +DATA üzerine kopyalanan disk ismi RMAN ekranından okunur ve aşağıdaki yerine yazılır.

            3-SQL>ALTER DATABASE RENAME FILE
              '+FRA/file_on_fra.3912.766160401' to
              '+DATA/file_on_data.6123.775963395';

            4-RMAN> SWITCH DATAFILE  '+DATA/file_on_data.6123.775963395'  TO COPY;

            5-RMAN> RECOVER DATAFILE  '+DATA/file_on_data.6123.775963395' ;

            6-SQL>ALTER DATABASE DATAFILE  '+DATA/file_on_data.6123.775963395' ONLINE;

            7-SQL>SELECT file_name FROM dba_data_files;

            8-SQL>ALTER DISKGROUP FRA DROP FILE '+FRA/file_on_fra.3912.766160401';


                                                                                      Özcan YILDIRIM

1 yorum:

  1. çok faydalı bir makale olmuş teşekkürler.

    YanıtlaSil

"Sorularınız ve Eleştirileriniz Değerlidir"