Oracle Dataguard Datafile Taşıma
Bu yazımda sizlere Dataguard ortamı kurulu olan veritabanımızdaki, dataguard veritabanından temp datafile’ları taşıma yönteminden bahsedeceğim.
Kontrol edilecekler:
- Aşağıdaki sorgu ile taşımak istediğimiz datafile’ın disk üzerindeki lokasyonunu öğrenelim.
SQL> select tablespace_name, file_name from dba_temp_files;TABLESPACE_NAME FILE_NAMETEMP /u01/app/oracle/oradata/orcl/temp01.dbf
TEMP1 /u01/app/oracle/oradata/orcl/temp1_02.dbf
Not: Biz temp datafile’ları taşıyacağımız için bu şekilde baktık. Diğer datafile’ları listelemek için aşağıdaki sorguyu kullanabilirsiniz.
select name from v$datafile;
- STANDBY_FILE_MANAGEMENT parametresinin değerine bakalım.
SQL> show parameter STANDBY_FILE_MANAGEMENTNAME TYPE VALUE
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
standby_file_management string AUTO
STANDBY_FILE_MANAGEMENT : Bu parameterenin değeri AUTO yapıldığında primary veritabanına yeni bir datafile eklendiğinde ve silindiginde otomatik olarak standby veritabanına da yansır.
NOT: Taşımak istediğimiz datafile boyutunu kontrol edelim ve taşıyacağımız diskte yeterli yerin olduğundan emin olalım.
İŞLEM ADIMLARI:
Şimdi gerekli kontrolleri gerçekleştirdiğimize göre datafile taşıma işlem adımlarına geçebiliriz.
- Öncelikle dataguard üzerindeki apply işlemini durduralım
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
2. STANDBY_FILE_MANAGEMENT parametremizi “MANUEL” olarak setleyelim.
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
3. Dataguard veritabanımızı kapatalım.
SQL> shutdown immediate
4. Her ihtimale karşı önce taşımak istediğimiz datafile’ı yeni dizine kopyalayalım. Başarılı şekilde kopyalandıktan sonra silebiliriz. Burada direk mv ile taşıma yapmamakta fayda var.
$ cp /u01/app/oracle/oradata/orcl/temp01.dbf /u03/oradata/orcl/temp01.dbf$ cp /u01/app/oracle/oradata/orcl/temp1_03.dbf /u03/oradata/orcl/temp1_02.dbf
5. Taşıdığımız datafile’ların eski dizinindeki ismini değiştirelim
$ mv /u01/app/oracle/oradata/orcl/temp01.dbf /u01/app/oracle/oradata/orcl/temp01.dbf_org$ mv /u01/app/oracle/oradata/orcl/temp1_02.dbf /u01/app/oracle/oradata/orcl/temp1_02.dbf_org
6. Veitabanımızı mount modda açalım
SQL> startup mount;
7. Taşıma işlemi tamamlandıktan sonra sqlplus ile bağlanıp datafileyi rename etmemiz gerekmekte.
SQL> alter database rename file '/u01/app/oracle/oradata/orcl/temp1_03.dbf' to '/u03/oradata/orcl/temp1_03.dbf';SQL> alter database rename file '/u01/app/oracle/oradata/orcl/temp01.dbf' to '/u03/oradata/orcl/temp01.dbf';
8. STANDBY_FILE_MANAGEMENT parametremizi “AUTO” olarak setleyelim.
SQL> alter system set standby_file_management=AUTO;
9. Dataguard veritabanımızda apply başlatalım
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
10. Aşağıdaki sorgu ile prod ve dataguard verittabanı sync mi kontrol edelim
SQL> select name,value,time_computed from v$dataguard_stats;
11. Sync oldugunda eski dizindeki datafile’larımızı artık silebiliriz.
[root@dbyedek orcl]# rm -rf *.dbf_org
Eveet dataguard veritabanımızdaki temp datafile’larımızı başarılı şekilde taşımış olduk. Diğer yazılarımda görüşmek üzere..