Transparent Application Failover Oracle Dataguard

Oracle Dataguard adalah salah satu fitur dari oracle yang memungkinkan konsep DRC dapat terimplementasikan dalam sebuah system. Dalam Oracle Dataguard ada 2 buah database, yaitu database primary dan database standby. Pada dasarnya client akan mengakses ke database primary dan database primary akan mengirimkan archive log file ke database standby. Namun ketika terjadi perpindahan role baik melalui switchover atau failover, client harus disetting agar dapat tetap mengakses database primary yang benar.

Transparent Application Failover atau sering disingkat sebagai TAF merupakan suatu fitur yang memungkinkan client untuk tetap mengakses database yang benar.

Untuk dapat mengaplikasikan TAF pada Oracle Dataguard, lakukan hal berikut:
1. Tambahkan baris berikut pada tnsnames.ora client

orcl =
 (DESCRIPTION =
 (ADDRESS_LIST =
 (ADDRESS = (PROTOCOL = TCP)(HOST = HostA)(PORT = 1521))
 (ADDRESS = (PROTOCOL = TCP)(HOST = HostB)(PORT = 1521))
 )
 (CONNECT_DATA =
 (SERVICE_NAME = orcl)
 )
 )

 

2. Jalankan perintah berikut pada server primary

begin
 dbms_service.create_service('orcl','orcl');
end;
/
begin
 DBMS_SERVICE.START_SERVICE('orcl');
end;
/

 

3. Buat trigger untuk memastikan service dinyalakan jika database memiliki role primary. Trigger dijalankan ketika database sedang dinyalakan

create trigger myapptrigg after startup on database
declare
 v_role varchar(30);
begin
 select database_role into v_role from v$database;
 if v_role = 'PRIMARY' then
 DBMS_SERVICE.START_SERVICE('orcl');
 else
 DBMS_SERVICE.STOP_SERVICE('orcl');
 end if;
end;
/

 

4. Jalankan perintah berikut pada server primary:

begin
 dbms_service.modify_service
 ('orcl',
 FAILOVER_METHOD => 'BASIC',
 FAILOVER_TYPE => 'SELECT',
 FAILOVER_RETRIES => 200,
 FAILOVER_DELAY => 1);
end;
/

 

5. Lakukan uji coba dengan melakukan select pada table dengan jumlah baris 10000. Kemudian pada saat select, kita lakukan failover. Proses select akan tampak terhenti sejenak,kemudian berlanjut pada server kedua sehingga proses failover tidak tampak oleh client 🙂