Saturday, January 23, 2010

Oracle Standby Database

Kemarin baru saja praktek buat StandBy Database Oracle. Alhamdulillah, dengan bimbingan mas Ilham dan mbak Dini serta mbah google, akhirnya aku berhasil membuat StandBy Database. Disini aku mau share scriptnya.

Langkah-langkahnya adalah sebagai berikut:

  1. Data-data percobaan

- database server = Oracle 9.2 Linux

- oracle sid = navpr

- database prod server = 192.168.1.40

- database standby = 192.168.1.151

- $ORACLE_HOME sisi prod server = /opt/oracle/product/9.2.0

- $ORACLE_HOME sisi standby server = /home/oracle/product/9.2.0

  1. Memastikan Oracle SID sudah sesuai

Pada database prod cek dengan perintah echo $ORACLE_SID

$ echo $ORACLE_SID

dan pastikan jawabannya navpr

kalau bukan, maka

$ ORACLE_SID=navpr

$ echo $ORACLE_SID

pasti jawabnya navpr

  1. Memastikan bahwa Database production sudah berjalan di mode Archivelog

$ sqlplus "/ as sysdba"

SQL> archive log list

Pastikan bahwa

Kalau masih belum dalam mode Archive, modify file init$ORACLE_SID.ora

Shutdown dulu server oracle

SQL>shutdown immediate;

lalu tambahkan bagian berikut ini:

---------------------

log_archive_format = NAVPR%T_%S.ARC

log_archive_start =true

log_archive_dest_1 = "location=/u2/oradata/navpr/archivelog"

log_archive_dest_state_1 = enable

---------------------

Lalu start kembali server

SQL>startup mount

SQL>alter database archivelog;

SQL>alter database open;

  1. Shutdown oracle prod dan copy datafile dan init$ORACLE_SID.ora ke lokasi standby

$ sqlplus "/ as sysdba"

Untuk mengetahui letak datafile bisa mengunakan query dari database

SQL>select name from v$datafile;

Kemudian shutdown database

SQL>shutdown immediate;

Disini dicontohkan, proses copy menggunakan scp

scp /u1/oradata/navpr/*.dbf oracle@192.168.1.151:/u1/oradata/navpr/

scp $ORACLE_HOME/dbs/initnavpr.ora oracle@192.168.1.151:/home/oracle/product/9.2.0/dbs/

  1. Membuat Control File untuk Standby database

Start kembali database.. lalu buat control File untuk Standby database

SQL>startup

SQL>alter database create standby controlfile as '/home/oracle/temp/sbycontrol01.ctl'

$ scp /home/oracle/temp/*.ctl oracle@192.168.1.151:/u1/oradata/navpr/

Lalu pada server standby, file sbycontrol01.ctl di copy sebanyak 2 kali hingga membentuk file

sbycontrol02.ctl dan sbycontrol03.ctl

  1. Menambah konfigurasi di tnsnames.ora disisi prod dan standby

navpr_master =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.40)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = navpr)

)

)

navpr_standby1 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.151)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = navpr)

)

)

  1. Membuat password database

Membuat password database di sisi prod dan standby agar keduanya bisa berkomunikasi.

Password harus sama

$orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=yourpassword

  1. Modify file init$ORACLE_SID.ora di kedua sisi

Sisi Prod, tambahkan script berikut ini

------------------------------------------------------------------

log_archive_dest_2 = 'SERVICE=navpr_standby1 OPTIONAL LGWR REOPEN=60 MAX_FAILURE=1440 SYNC NOAFFIRM'

log_archive_dest_state_2 = ENABLE

remote_archive_enable = SEND

log_archive_trace = 15

optimizer_mode = choose

------------------------------------------------------------------

Sisi StandBy, tambahkan script berikut ini

------------------------------------------------------------------

log_archive_format = NAVPR%T_%S.ARC

log_archive_start = true

log_archive_dest_1 = "location=/u2/oradata/navpr/archivelog"

log_archive_dest_state_1 = enable

log_archive_trace = 15

standby_archive_dest = '/u2/oradata/navpr/archivelog'

standby_file_management = AUTO

remote_archive_enable = RECEIVE

fal_server = navpr_master.world

fal_client = navpr_standby1.world

optimizer_mode = choose

------------------------------------------------------------------

  1. Startup standby Database

SQL>create spfile from pfile='/home/oracle/product/9.2.0/dbs/initnavpr.ora'

SQL> startup nomount

SQL> alter database mount standby database;

  1. Menjalankan mode database

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Untuk melihat hasil standby benar atau tidak, kita masuk folder bdump dan cek di file alert_meter.log di kedua sisi

Atau dengan cara membuat database menjadi open readonly

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SQL> ALTER DATABASE OPEN READ ONLY;

Sekian.. semoga rekan-rekan semua berhasil membuatnya :)

2 Comments:

neng said...

nice and complicate ^^, good job dear.... lanjutkan!!!

surya said...

thanks neng.. ^^

 

Copyright(r) by wongkentir