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 🙂