Senin, 26 Desember 2011

Oracle Database Online Backup

Beberapa keuntungan metode online backup adalah :

  1. Waktu backup, database tidak perlu dimatikan sehingga tidak ada downtime
  2. Bisa melakukan backup per tablespace, bahkan per datafile
  3. Bisa merestore data sampai terakhir sebelum masalah. Bahkan bisa merestore data sampai waktu yang ditentukan. Berbeda dengan restore hasil offline backup di mana yang bisa direstore hanya data terakhir melakukan backup saja.

Seperti yang sudah pernah dibahas, syarat online backup adalah database harus dalam mode archivelog..

Berikut ini step-step online backup.

  1. Backup control file

SQL> alter database backup controlfile to '/backupdir/backupcontrol_22042008.bak';

  1. Lihat Tablespace yang berisi data

SQL> select TABLESPACE_NAME from dba_tablespaces where CONTENTS <>'TEMPORARY';
TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
Temporary tablespace tidak perlu dibackup, karena bukan berisi data

  1. Ubah mode tablespace menjadi backup mode

SQL> alter tablespace SYSTEM begin backup;

SQL> alter tablespace UNDOTBS1 begin backup;

SQL> alter tablespace SYSAUX begin backup;

SQL> alter tablespace USERS begin backup;

  1. Lihat semua datafile yang perlu dibackup (selain file dari temporary tablespace)

SQL> select name from v$datafile;

NAME
---------------------------------------
/oradata/oracle/ts/system01.dbf
/oradata/oracle/ts/undotbs01.dbf
/oradata/oracle/ts/sysaux01.dbf
/oradata/oracle/ts/users01.dbf

  1. Backup datafile

$ cp /oradata/oracle/ts/system01.dbf /backupdir/...

$ cp /oradata/oracle/ts/undotbs01.dbf /backupdir/..

$ cp /oradata/oracle/ts/sysaux01.dbf /backupdir/...

$ cp /oradata/oracle/ts/users01.dbf /backupdir/..

  1. Ubah mode database kembali ke normal

SQL> alter tablespace SYSTEM end backup;

SQL> alter tablespace UNDOTBS1 end backup;

SQL> alter tablespace SYSAUX end backup;

SQL> alter tablespace USERS end backup;

  1. Archive current log

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

  1. Jangan lupa, backup juga archived log-nya. Archived log ini nanti kita butuhkan untuk recovery. Archive log yang masih dipakai adalah archived log sejak terakhir online (hot) backup. Archive log sebelum hot backup sudah tidak dipakai lagi.

Kesimpulannya, yang dibackup adalah:

1. Control file

2. Datafile

3. Archived log file

Setting Database Archivelog Mode

Di database Oracle, semua transaksi di-record (disimpan) di dalam log file. Dalam 1 instance, minimal ada 2 group logfile. Mekanisme kerjanya adalah sirkular. Bila logfile penuh, maka transaksi disimpan di log berikutnya. Setelah semua log terisi, maka log yang terlama akan ditulis ulang (rewrite), tentu saja dengan menghapus content (isi) sebelumnya. Tentu saja, hal ini akan membuat kehilangan jejak transaksi yang ada di logfile tersebut.

Dalam database dengan mode archivelog, sebelum logfile ditulis ulang, content-nya dicopy (backup) dulu ke archived log. Oleh karena itu jejak transaksi yang disimpan di log yang ditulis ulang dan tidak akan hilang.

Archived log digunakan untuk recovery database. Bila dilakukan proses restore dari hasil offline backup, maka data yang bisa diambil adalah data ketika off line backup dilakukan. Jadi, seandainya full backup dilakukan sebulan yang lalu, maka data yang bisa diselamatkan (diambil) adalah data sebulan yang lalu tersebut.

Berbeda dengan jika me-restore dari hasil online backup. Setelah file backup di-restore, kemudian archived log yang terbentuk setelah online backup (yang berisi rekaman transaksi itu) di-apply kembali (istilahnya recovery). Sehingga bisa mendapatkan data sampai archived log terakhir, atau sesaat sebelum terjadi bencana (kerusakan database).

Untuk melihat apakah database sudah dalam mode archivelog atau tidak
SQL> archive log list
Database log mode No Archive Mode Automatic archival Disabled Archive destination /oradata/oracle/ts/arc

Oldest online log sequence 56 Next log sequence to archive 58 Current log sequence 58

Dalam contoh di atas, mode database masih belum archivelog. Untuk mengaktifkan mode archivelog, jalankan command berikut:

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> alter database open;

Lihat, sekarang mode database sudah archivelog

SQL> archive log list

Database log mode Archive Mode Automatic archival Enabled Archive destination /oradata/oracle/ts/arc

Oldest online log sequence 56 Next log sequence to archive 58 Current log sequence 58

Catatan:

Perintah “alter database archivelog” adalah untuk membuat mode database menjadi ARCHIVELOG. Untuk meng-archive log file dilakukan dua cara:

1. Manual

2. otomatis

Pilihan manual adalah jarang terjadi, kecuali untuk tujuan tertentu, misalnya belajar. Semua database production selalu memilih yang otomatis.

Untuk mengotomatiskan pekerjaan archive, init parameter log_archive_start harus TRUE. Jadi harus mengaktifkan parameter tersebut di file init.

Saya menggunakan database 10g release 2 (10.2.0). Parameter log_archive_start tidak perlu saya setting, alias bernilai false, tapi archive jalan otomatis. Kayaknya di versi 10g parameter ini dah gak dibutuhkan lagi, saya belum explore lebih jauh.

Yang pasti, database 10g saya archive-nya jalan otomatis tanpa mensetting parameter log_archive_start.