Skip to content

Dataguard 10g: Membuat Physical Standby DB (2)

Setelah persiapan di mesin primary dan standby selesai, selanjutnya tinggal membuat standby database. Berikut ini langkah-langkah (step-step) nya:

  1. Di primary database, buat standby control file
    SQL> alter database create standby controlfile
    as '/oradata/oracle/ts/controltsstandby.ctl';
  2. Di primary database, lakukan backup full database.
    Bisa secara online ataupun offline. Dalam contoh ini saya menggunakan metode online (hot) backup biar database production tidak perlu mati.List daftar tablespace yang bukan TEMPORARYSQL> select TABLESPACE_NAME from dba_tablespaces where CONTENTS <>'TEMPORARY';
    NAME
    ------------------------------
    SYSTEM
    UNDOTBS1
    SYSAUX
    USERS

    Jalankan perintah BEGIN BACKUP
    SQL> alter tablespace SYSTEM begin backup;
    SQL> alter tablespace UNDOTBS1 begin backup;
    SQL> alter tablespace SYSAUX begin backup;
    SQL> alter tablespace USERS begin backup;
    Lihat semua file yang perlu dibackup (datafile, tempfile, dan logfile):
    SQL> select name as file_name from
    (select name from v$tempfile union
    select name from v$datafile union
    select member as name from v$logfile)
    order by file_name;
    FILE_NAME
    ---------------------------------------------------
    /oradata/oracle/ts/redo04.log
    /oradata/oracle/ts/redo05.log
    /oradata/oracle/ts/redo06.log
    /oradata/oracle/ts/sysaux01.dbf
    /oradata/oracle/ts/system01.dbf
    /oradata/oracle/ts/temp01.dbf2
    /oradata/oracle/ts/undotbs01.dbf
    /oradata/oracle/ts/users01.dbf2
    File-file tersebut bisa dibackup di TAPE, directory temporary, ataupun langsung ditaruh (ftp) di mesin standby.
    Setelah file-file dibackup, Jalankan perintah END BACKUP
    alter tablespace SYSTEM end backup;
    alter tablespace UNDOTBS1 end backup;
    alter tablespace SYSAUX end backup;
    alter tablespace USERS end backup;
  3. Restore semua file ke mesin standby, taruh di directory yang sama
    Dalam contoh ini lokasi semua file adalah sama, yaitu /oradata/oracle/ts/
    ls -la /oradata/oracle/ts/
    controltsstandby.ctl
    redo04.log
    redo05.log
    redo06.log
    sysaux01.dbf
    system01.dbf
    temp01.dbf2
    undotbs01.dbf
    users01.dbf2
  4. Di mesian standby, siapkan control file. Copy control file hasil dari “alter database create standby controlfile” ke directory control file (sebagimana yang ditunjuk dalam file init)
    cd /oradata/oracle/ts/
    cp -rp controltsstandby.ctl control01.ctl
    cp -rp controltsstandby.ctl control02.ctl
    cp -rp controltsstandby.ctl control03.ctl
  5. Naikkan database standby
    SQL> startup mount;
  6. Jalankan recovery di standby database untuk meng-apply arhived log
    SQL> alter database recover managed standby database disconnect;

Akhirnya standby database selesai di-create. Untuk melihat archived log yang telah di-apply di standby database gunakan command ini
SQL> set pages 100
SQL> col name for a50
SQL> select name,to_char(FIRST_TIME,'dd-mon-yy hh24:mi:ss') TIME ,SEQUENCE#,APPLIED from v$archived_log;

Pastikan colomn APPLIED bernilai YES.

Bersambung ke …
Dataguard 10g: Administrasi Physical Standby Database

Referensi:
Oracle® Data Guard Concepts and Administration, 10g Release 2 (10.2)



Silahkan baca yang berikut ini juga :

10 Comments

  1. devor

    Pak Rohmad, untuk server nya apakah harus memiliki konfigurasi hardware yang sama. Contoh, jika primary nya memiliki memory 2GB, apakah standby juga harus memiliki memory 2 GB?

    Posted on 09-Jun-08 at 10:15 am | Permalink
  2. rohmadne

    Tidak harus sama. Bahkan standby biasanya resource (cpu & memory) nya lebih kecil.

    Posted on 10-Jun-08 at 1:08 am | Permalink
  3. devor

    ok pak, satu lagi.. kalau OS nya harus sama gak pak? misal windows, apakah service pack nya harus sama?

    Posted on 10-Jun-08 at 4:56 am | Permalink
  4. devor

    satu lagi, saya belum mengucapkan terima kasih atas tutorialnya selama ini. sangat membantu sekali, mungkin banyak orang yang lebih pintar dari bapak, tapi hanya sedikit yang mau berbagi ilmu seperti bapak.

    mudah2an amal baik bapak akan di balas dengan kebaikan yang berlipat - lipat…..

    Posted on 10-Jun-08 at 4:58 am | Permalink
  5. abip

    mau coba jawab pertanyaan mas devor nih,

    os nya harus sama mas, tapi release boleh beda…

    mas rohmad, cmiiw yah,

    makasih

    Posted on 25-Jun-08 at 3:15 am | Permalink
  6. rohmadne

    Iya, OS harus sama. Kadang-kadang release dan service pack harus sama, gak selalu. Lihat saja di dokumentasi Oracle. Kalau mau yakin, langsung coba saja :)

    Posted on 25-Jun-08 at 7:19 am | Permalink
  7. Anthon

    Salam kenal mas Rohmad!!
    Mau tanya dikit yah … maap kalo sdh pernah ada yg menanyakan ..
    Kalau kita sudah punya existing Primary DB dan Standby DB replicated via ODG (oracle 10g), trus saya berencana membuat Standby DB ke 2 katakanlah Standby DB2 (server beda) tanpa mengubah konfigurasi Primary-standby yg sudah ada. Memungkinkah jika saya membuat standby DB2 dari hasil cloning (copy) standby DB, kemudian mengaktifkan standby DB2 tsb sbg standby active dg mengakses archive log yg sama yg dikirim dari Primary DB? katakanlah saya share arch log di standby DB dan DB2 secara OS misal nfs.
    Trims buat atensinya ya

    Cheers,
    Anthon

    Posted on 12-Aug-08 at 10:21 am | Permalink
  8. rohmadne

    Yang pernah saya lakukan.
    1. Copy semua datafile dari stdb1 ke stdb2
    2. Create standby control file dari primary

    Sama sekali tidak mengubah konfigurasi eksisting primary dan stdb1, kecuali beberapa hal berikut ini:

    1. Tambahkan stdby2 ke konfigurasi, misalkan:
    konfigurasi sebelumnya:
    log_archive_config=DG_CONFIG=(tsprimary,stdb1)
    menjadi:
    log_archive_config=DG_CONFIG=(tsprimary,stdb1,stdb2)

    2. Tambahkan archived log destination ke stdb2, misalnya:
    log_archive_dest_1 –> archived log primary
    log_archive_dest_2 –> archived log stdb1
    log_archive_dest_3 –> archived log stdb2

    log_archive_dest_state_1 –> state archived log primary
    log_archive_dest_state_2 –> state archived log stdb1
    log_archive_dest_state_3 –> state archived log stdb2

    Mau share archived log untuk stdb1 dan stdb2? Secara teori sih bisa. Caranya:
    1. Disable parameter log_archive_dest_state_3, untuk menghentikan pengiriman archived log ke stdb2, contoh:
    log_archive_dest_state_3 = reset
    2. Share archived log di stdb1 agar bisa diakses oleh stdb2
    3. Nah ini dia, anda harus me-register archived log secara MANUAL ke stdb2.
    4. Recover stdb2

    Posted on 13-Aug-08 at 1:47 am | Permalink
  9. Anthon

    Wah thanks a lot Mas Rohmad !
    Cukup mencerahkan …
    Kalau saya pilih metoda ke 2, dimana stdb2 mengakses arch log yg sama dari stdb1 (share secara OS), tandanya saya tdk usah merubah parameter di primary dan stdb1 ya ? sip deh
    btw utk step 3, register manual archive log dg syntax :
    alter database register logfile ‘/some_direcotry/some_file.arc’; ya mas?
    terpaksa mesti bikin script kecil buat nge-list arch file trus di translate ke sql statement nih supaya bisa semi automatic :)
    thanks banget

    cheers

    Posted on 15-Aug-08 at 1:53 am | Permalink
  10. rohmadne

    Iya, register pakai
    SQL> alter database register logfile ‘/some_direcotry/some_file.arc’;

    Bener, biar enak, sebaiknya bikin script aja.

    Posted on 15-Aug-08 at 4:03 am | Permalink

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*