Oracle 12C Online Datafile Taşımak

Oracle 12C Online Datafile Taşımak

Bu makalede oracle 12C üzerinde online olarak(kesintisiz) datafile taşıması yapacağız,bu özellik sadece 12C veritabanı ile (gelen) kullanılabilen bir özellik, eski versiyonlarda(11G,10G,9i ..) çalışmayacaktır.Disk yetersizliği, diskin değişmesi, ASm’e migration gibi durumlarda datafileları move etmemiz gerekebilir.
Eski versiyonlarda nasıl taşınır bu konuya yazının sonunda kısaca değineceğim ama bunun için detaylı olarak makale yazmayı planlıyorum. Şimdi asıl konumuza dönelim, 12C’de online olarak datafile nasıl taşınır bakalım.

Kullanım amaçları;
– Datafile Rename
– ASM’den ASM’e taşıma
– ASM’den diske taşıma
– Diskten ASM’e taşıma

1. Diskten Diske Datafile Taşımak

Önce Datafilelarımızın lokasyonlarına bakalım.

 
SQL>Select name, STATUS  from v$datafile;
 
NAME                                                         STATUS
------------------------------------------------------------ ----------
/u01/12CDB/oradata/omertest/system01.dbf                    SYSTEM
/u01/12CDB/oradata/omertest/example01.dbf                   ONLINE
/u01/12CDB/oradata/omertest/sysaux01.dbf                    ONLINE
/u01/12CDB/oradata/omertest/undotbs01.dbf                   ONLINE
/u01/12CDB/oradata/omertest/test1.dbf                       ONLINE
/u01/12CDB/oradata/omertest/test2.dbf                       ONLINE
/u01/12CDB/oradata/omertest/users01.dbf                     ONLINE
 
7 rows selected.

Test1.dbf adlı datafile’ımızı aynı lokasyonda Rename edelim.(taşıyalım)

 
SQL> alter database move datafile
  2  '/u01/12CDB/oradata/omertest/test1.dbf '    
  3  to 
  4  '/u01/12CDB/oradata/omertest/omertest1.dbf ';
 
Database altered.

Datafileları tekrar kontrol edelim..

 
SQL>Select name, STATUS  from v$datafile;
 
NAME                                                         STATUS
------------------------------------------------------------ ----------
/u01/12CDB/oradata/omertest/system01.dbf                    SYSTEM
/u01/12CDB/oradata/omertest/example01.dbf                   ONLINE
/u01/12CDB/oradata/omertest/sysaux01.dbf                    ONLINE
/u01/12CDB/oradata/omertest/undotbs01.dbf                   ONLINE
/u01/12CDB/oradata/omertest/omertest1.dbf                   ONLINE
/u01/12CDB/oradata/omertest/test2.dbf                       ONLINE
/u01/12CDB/oradata/omertest/users01.dbf                     ONLINE
 
7 rows selected.

Ve işlem tamamdır, kesinti olmadan online olarak datafile’ı rename ve move edebildik.
Şimdi de ASM ve disk üzerindeki taşımalar için örnekler yapalım..

2. Diskten ASM’e Datafile Taşımak

Test için oluşturduğum iki datafile’ı local diskten +DATA üzerine taşıyalım..

 
SQL> alter database move datafile
  2  '/u01/12CDB/oradata/omertest/omertest1.dbf'
  3  to
  4  '+DATA/omertest/omertest1.dbf';
 
Database altered.
 
SQL> alter database move datafile
  2  '/u01/12CDB/oradata/omertest/test2.dbf'
  3  to 
  4  '+DATA/omertest/omertest2.dbf';
 
Database altered.
 
SQL> select name, STATUS  from v$datafile;
 
NAME                                                         STATUS
------------------------------------------------------------ ----------
/u01/12CDB/oradata/prod/system01.dbf                    SYSTEM
/u01/12CDB/oradata/prod/example01.dbf                   ONLINE
/u01/12CDB/oradata/prod/sysaux01.dbf                    ONLINE
/u01/12CDB/oradata/prod/undotbs01.dbf                   ONLINE
+DATA/omertest/omertest1.dbf                                 ONLINE
+DATA/omertest/omertest2.dbf                                 ONLINE
/u01/12CDB/oradata/omertest/users01.dbf                 ONLINE
 
7 rows selected.

3. ASM’den ASM’e Datafile Taşımak

Şimdi de test için oluşturduğum iki datafile’ı +RECO diskine taşıyalım..

 
SQL> alter database move datafile
  2  '+DATA/omertest/omertest1.dbf'
  3  to
  4  '+RECO/omertest/omertest1.dbf';
 
Database altered.
 
SQL> alter database move datafile
  2  '+DATA/omertest/omertest2.dbf'
  3  to 
  4  '+RECO/omertest/omertest2.dbf';
 
Database altered.
 
SQL> select name, STATUS  from v$datafile;
 
NAME                                                         STATUS
------------------------------------------------------------ ----------
/u01/12CDB/oradata/prod/system01.dbf                    SYSTEM
/u01/12CDB/oradata/prod/example01.dbf                   ONLINE
/u01/12CDB/oradata/prod/sysaux01.dbf                    ONLINE
/u01/12CDB/oradata/prod/undotbs01.dbf                   ONLINE
+RECO/omertest/omertest1.dbf                            ONLINE
+RECO/omertest/omertest2.dbf                            ONLINE
/u01/12CDB/oradata/omertest/users01.dbf                 ONLINE
 
7 rows selected.

4. ASM’den Diske Datafile Taşımak

ASM de bulunan test1 datafile’ı disk üzerine taşıyalım.

 
SQL> alter database move datafile
  2  '+DATA/omertest/omertest1.dbf'
  3  to
  4  '/u01/12CDB/oradata/omertestdata/omertest1.dbf';
 
Database altered.
 
 
SQL> select name, STATUS  from v$datafile;
 
NAME                                                         STATUS
------------------------------------------------------------ ----------
/u01/12CDB/oradata/prod/system01.dbf                    SYSTEM
/u01/12CDB/oradata/prod/example01.dbf                   ONLINE
/u01/12CDB/oradata/prod/sysaux01.dbf                    ONLINE
/u01/12CDB/oradata/prod/undotbs01.dbf                   ONLINE
/u01/12CDB/oradata/omertestdata/omertest1.dbf           ONLINE
+RECO/omertest/omertest2.dbf                            ONLINE
/u01/12CDB/oradata/omertest/users01.dbf                 ONLINE
 
7 rows selected.

Notlar:
*Online datafile taşıma oracle 12C ile gelen bir özelliktir, eski versiyonlarda bu özelliği kullanamayız.
*User datafilelartı taşıdığımız gibi system datafile’larını da taşıyabiliriz.
*Bu işlem yoğun kaynak kullanımı yapacağından günün sakin saatlerinde çalıştırmanız önerilir.
*Bu özellik için oracle’a çok teşekkürler 🙂

Oracle 12C öncesi datafile taşımak

12C öncesi datafile’ı kesintisiz taşımak mümkün değil minimum kesintiyle taşınabilir, bu durumda yapılması gereken işlemler kabaca aşağıdaki gibidir. Bu konuyu ayrıca bir makale olarak yazacağım, çünkü; system datafile’ları taşımak biraz daha farklı işlemler gerektiriyor ve instance’ı kapatıp açmanız gerekiyor..

Ama user datafile’lar 11G ve öncesi için aşağıdaki yöntemlerle taşınabilir..

– Seçenek 1
1.Tablespace’i offline yap.(alter tablespace x online)
2.Datafile’ı fiziksel olarak taşı ya da rename et(mv test1.dbf)
3.Controlfile’a datafile’ın yeni yerini bildir.(alter database rename file)
4.Tablespace’i online yap.(alter tablespace online)

-Seçenek 2
RMAN ile datafile’ın yeni kopyasına switch etmek.

Tagged: , , , , , ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir