Wednesday, April 14, 2010

Start Oracle 10g di Linux Secara Otomatis

Oleh Achmad Faisol

Di CD Installer Oracle for Linux sudah tersedia petunjuk bagaimana cara install Oracle 10g di sistem operasi tersebut. Namun, bagaimana caranya agar selesai instalasi, oracle bisa start secara otomatis pada saat Server Linux dihidupkan lagi?

Kelebihan Oracle for Microsoft Windows adalah adanya service yang dibuatkan setelah instalasi dengan status "Started Automatic". Dengan demikian, ketika Windows restart, otomatis Oracle juga di-start. Hal ini belum berlaku untuk Oracle for Linux.

Penulis pernah mengajar peserta dari sebuah perusahaan yang melakukan startup Oracle secara manual setelah Linux boot. Tentu hal ini cukup merepotkan bagi seorang DBA (Database Administrator).

Oleh karena itu, penulis akan membahas langkah-langkah yang harus dilakukan agar Oracle 10g for Linux bisa start secara otomatis setelah OS dihidupkan.

Untuk instalasi Oracle 10g for Linux, penulis melakukan setting sebagai berikut :
• Nama PC Linux : oracle1
# cat /etc/hosts
. . .
10.1.1.1 oracle1.net oracle1

• Global Database Name : oracle1
• System Identifier (SID) : oracle1

Adapun di CD Installer Oracle, petunjuk konfigurasi sebagai berikut :
• Global Database Name : orcl.oracle.com
• System Identifier (SID) : orcl

Sengaja penulis gunakan SID dan Global Database Name sama dengan nama PC karena di kelas digunakan beberapa PC Linux. Dengan demikian, SID akan berbeda untuk masing-masing PC. Adapun nama user Linux yang melakukan instalasi software Oracle 10g sama seperti manual, yaitu oracle.

1. Yang perlu diperhatikan sebelum instalasi

a. Paket-paket di bawah ini (versi boleh lebih tinggi) harus terinstall walaupun di petunjuk instalasi untuk Red Hat Enterprise tidak perlu, tapi ternyata bila tidak ada akibatnya instalasi gagal.

libaio-0.3.98-18
libaio-devel-0.3.98-18

b. Profile user oracle diedit sehingga tampak sebagai berikut :

$ id
uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)

$ cat .bash_profile
. . .
. . .
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORACLE_SID=oracle1
PATH=$PATH:$HOME/bin:$ORACLE_HOME:$ORACLE_HOME/bin

export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID

2. Apa yang harus dilakukan setelah instalasi?

a. Edit file /etc/oratab, rubah huruf N di akhir baris menjadi Y. Dengan perubahan ini, maka oracle dapat di-start dengan menjalankan script $ORACLE_HOME/bin/dbstart dan di-shutdown dengan menjalankan script $ORACLE_HOME/bin/dbshut

# vi /etc/oratab
. . .
. . .
oracle1:/u01/app/oracle/product/10.2.0/db_1:Y

b. Buat script untuk menjalankan oracle secara otomatis

# vi /root/oracle.sh
case $1 in
start)
su – oracle –c "isqlplusctl start"
su – oracle –c "emctl start dbconsole"
su – oracle –c "lsnrctl start"
su – oracle –c "dbstart"
echo "oracle start";;
stop)
su – oracle –c "isqlplusctl stop"
su – oracle –c "emctl stop dbconsole"
su – oracle –c "lsnrctl stop"
su – oracle –c "dbshut"
echo "oracle shutdown";;
esac

# chmod +x /root/oracle.sh

Penjelasan script :
• isqlplusctl start : start iSQL Plus, bisa diakses via browser dengan URL http://oracle1:5560/isqlplus
• emctl start dbconsole : start Oracle Enterprise Manager, bisa diakses via browser dengan URL http://oracle1:1158/em
• lsnrctl start : start listener Oracle, bisa dites dengan perintah :
$ tnsping oracle1
status OK
• dbstart : start Oracle Database, bisa dites dengan perintah :
$ sqlplus scott/tiger
(login user, misal scott harus sukses karena database open)

c. Buat link ke rc0.d, rc3.d dan rc5.d

# ln /root/oracle.sh /etc/rc0.d/K9999Oracle
# ln /root/oracle.sh /etc/rc3.d/S9999Oracle
# ln /root/oracle.sh /etc/rc5.d/S9999Oracle

d. Restart Linux untuk melihat hasil
# init 6


Catatan :

Terkadang terjadi kegagalan, yaitu listener tidak start. Bila hal ini terjadi, edit file listener.ora, tambahkan secara manual SID Oracle yang diinstall karena secara default tidak ada.

$ vi $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = oracle1)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)
. . .
. . .

Baris dengan font yang tercetak tebal dan miring adalah tambahan yang harus ditulis. Lihat juga file tnsnames.ora, apakah instance yang terinstall sudah ada/belum.

$ cat $ORACLE_HOME/network/admin/tnsnames.ora

ORACLE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle1.net)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle1)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
Baris dengan font yang tercetak tebal dan miring harus ada. Bila belum ada, tambahkan.

1 comment: