Dataguard 10g: Switchover Physical Standby DB

Tulisan ini merupakan lanjutan dari serial Dataguard 10g. Tulisan terdahulu telah membahas tentang persiapannya, cara membuatnya, me-manage-nya, dan ada juga contoh kasus kalau kita kehilangan archived log. Sekarang saya akan membahas switchover (role transition) physical standby database.

Role transition, perubahan fungsi dari PRIMARY ke STANDBY dan sebaliknya, ada dua macam yaitu:

  1. Switchover
    Sesuai dengan istilahnya, ini adalah men-switch (mengubah) peran dari database STANDBY menjadi PRIMARY dan database PRIMARY menjadi STANDBY. Biasanya dilakukan kalau kita ingin melakukan maintenance pada mesin PRIMARY, misalnya menambah memory atau CPU yang memerlukan downtime.
  2. Failover
    Bila karena suatu hal tiba-tiba database PRIMARY mati, maka kita tidak bisa melakukan switchover karena database PRIMARY keburu mati duluan. Yang bisa kita lakukan adalah ‘memaksa’ database STANDBY untuk menjadi PRIMARY. Istilah ‘memaksa’ inilah yang kira-kira lebih pas untuk menjelaskan fail over.

Langkah-langkah melakukan Switch Over pada Physical Standby DB

Dalam contoh ini, database PRIMARY ada di MESIN A dan database STANDBY ada di MESIN B. Berikut ini persiapan yang mesti dilakukan:

  1. Di database PRIMARY, close semua transaksi dan user session
  2. Database PRIMARY harus dalam keadaan OPEN
    SQL> select DATABASE_ROLE from v$database;
    
    DATABASE_ROLE
    ----------------
    PRIMARY
    
    SQL> select open_mode from v$database;
    
    OPEN_MODE
    ----------
    READ WRITE

    Database STANDBY harus dalam keadaan MOUNT

    SQL> select DATABASE_ROLE from v$database;
    
    DATABASE_ROLE
    ----------------
    PHYSICAL STANDBY
    
    SQL> select open_mode from v$database;
    
    OPEN_MODE
    ----------
    MOUNTED
  3. Verify bahwa switch over siap dilakukan. Jalankan query ini di kedua database PRIMARY dan STANDBY
    SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

    Kondisi paling bagus (paling siap dilakukan switchover) adalah kalau kolom SWITCHOVER_STATUS di database PRIMARY nilainya “TO STANDBY” dan di database STANDBY nilainya “TO PRIMARY”

    Namun lebih sering kolom SWITCHOVER_STATUS nilainya “SESSIONS ACTIVE”. Inipun gak masalah, switchover bisa dilanjutkan.

    Lebih detail tentang kolom SWITCHOVER_STATUS di view V$DATABASE, silahkan lihat di sini Oracle┬« Database Reference – 10g Release 2 (10.2) – V$DATABASE

Sekarang kita menuju step utamanya

  1. Di database PRIMARY (MESIN A)
    Lakukan switchover dengan perintah berikut

    ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

    Kalau masih ada user yang aktif, akan muncul error berikut

    ORA-01093: ALTER DATABASE CLOSE only permitted
    with no sessions connected

    Solusinya adalah: close (kill) semua user session atau tambahkan parameter WITH SESSION SHUTDOWN sehingga command-nya menjadi:

    ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

    Setelah itu shutdown dan startup mount.

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;

    Sekarang verifikasi bahwa database PRIMARY telah beralih menjadi STANDBY

    SQL> select DATABASE_ROLE from v$database;
    
    DATABASE_ROLE
    ----------------
    PHYSICAL STANDBY
  2. Di database STANDBY (MESIN B)
    Sekarang, database STANDBY kita switchover menjadi PRIMARY. Jalankan command berikut:

    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

    Mungkin kita akan menjumpai error seperti ini:

    ORA-16139: media recovery required
    

    Kalau menjumpai error tersebut, jalankan “recover managed standby database” kemudian jalankan switchover:

    SQL> recover managed standby database;
    Media recovery complete.
    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
    

    Setelah switchover berhasil, kemudian open database:

    SQL> alter database open;
    ORA-01507: database not mounted

    Oo… Error. Ternyata tadinya STANDBY database (sejak last startup) pernah saya “OPEN READ ONLY”, jadinya error kayak gitu. Kalau tidak pernah di-“OPEN READ ONLY” harusnya tidak error. OK, kalo gitu, solusinya: restart database.

    SQL> SHUTDOWN IMMEDIATE;
    SQL> startup

    Dah berhasil. Sekarang verify bahwa STANDBY database telah menjadi PRIMARY

    SQL> select DATABASE_ROLE from v$database;
    
    DATABASE_ROLE
    ----------------
    PRIMARY

Referensi

Oracle┬« Data Guard Concepts and Administration – 10g Release 2 (10.2)
Role Transitions

This entry was posted in Dataguard and tagged , , , , , . Bookmark the permalink.

5 Responses to Dataguard 10g: Switchover Physical Standby DB

  1. johanes says:

    Bagaimana caranya agar switchover itu otomatis dijalankan ?

  2. rohmadne says:

    Switch over tidak bisa otomatis, harus dijalankan manual. Keputusan untuk melakukan switch over khan dari kita sendiri.

  3. Adoer says:

    Lalu kalau Failover bagaimana settingnya?

  4. rahman says:

    Bang Rohmad, Postingan ini yang paling gw suka ni…mangstap gan

  5. bimbims says:

    Setelah melakukan switchover, lalu bagaimana archive lognya di database standby? apakah dikirim juga ke database Mesin A (standby) dengan MRP proses? maksud saya pengiriman datanya kebalikannya begitu? Trm kasih

Leave a Reply

Your email address will not be published. Required fields are marked *