Bu işlem veritabanı kapalıyken veya açıkken yapılabilir.
1 ) Veritabanı Kapalıyken:
* Database kapatılır.
SQL > shutdown imeediate
* Datafile yeni dizine kopyalanır veya move edilir.
$ cp /old_location/dbfilename01.dbf /new_location/
Taşımayıp kopyaladıysanız eski lokasyondaki datafile'ı kullanmasını önlemek adına ek önlem için rename edebiliriz.
$ mv /old_location/dbfilename01.dbf /old_location/dbfilename01.dbf_OLD
* Database mount mode'da açılarak datafile rename edilir.
SQL > startup mount
SQL > alter database rename file '/old_location/dbfilename01.dbf' to '/new_location/dbfilename01.dbf';
* Database open mode'a alınır.
SQL > alter database open;
2 ) Veritabanı Açıkken:
Bunu yapabilmek için database'in archive log mode'da olması gerekiyor. Bunu aşağıdaki komutla kontrol edebilirsiniz.
SQL> select log_mode from sys.v_$database;
LOG_MODE
------------
ARCHIVELOG
* Datafile offline'a alınır.
SQL> alter database datafile '/old_location/dbfilename01.dbf' offline;
* Datafile yeni dizine kopyalanır veya move edilir.
$ cp /old_location/dbfilename01.dbf /new_location/
Taşımayıp kopyaladıysanız eski lokasyondaki datafile'ı kullanmasını önlemek adına ek önlem için rename edebiliriz.
$ mv /old_location/dbfilename01.dbf /old_location/dbfilename01.dbf_OLD
* Veritabanın taşınan datafile'ı yeni lokasyonda olduğunu göstermek için rename ederiz:
SQL> alter database rename file '/old_location/dbfilename01.dbf' to '/new_location/dbfilename01.dbf';
* Datafile'ı tutarlı hale getirmek için recover edilir.
SQL> alter database recover datafile '/new_location/dbfilename01.dbf';
* Tekrar kullanıma açmak için online mode'a alınır.
SQL> alter database datafile '/new_location/dbfilename01.dbf' online;
şeklinde taşıma işlemini tamamlamış oluruz.
Yorumlar