Sabtu, 26 Agustus 2006

Learn For Oracle DataBase Administrator 2

Dear all.... saya mau berbagi pengalaman aja nih soal Oracle, kasusnya adalah saya membuat otomatic archived log...tersimpan pada folder default.

Perhari log transaksi saya sebesar 5 - 10 GB, dan saya sudah mengalokasikan space sebesar 100 GB pada folder archived log (saya menggunakan Oracle 10g dan linux RHELAS3).

Permasalahannya adalah saat saya menghapus file archived log secara fisik di harddisk, tetapi pada oraclenya sendiri sizenya tidak berubah…

Sehingga saat space sudah tidak mencukupi akan terjadi error redolog dan saya mengatasi permasalahan tersebut dengan menambah size space
pada folder archived log, dan ini sangat mengganggu karena file tersebut akan terus membesar. Yang berikutnya adalah berhubung saya menggunakan OEM 10g berbasis web maka semua komputer dalam satu jaringan dapat mengakses OEM (walaupun ada user/IP yang boleh mengakses server database tetapi tidak boleh mengakses databasenya)

pertanyaannya adalah :

1. Bagaimana mensinkronkan ukuran size secara fisik di hardisk dengan size dioraclenya?
2. Apa yang menjadi kriteria dalam pengahapusan archived log file(usia kadaluarsa)?
3. Bagaimana membuat agar penghapusan archived log file dilakukan secara otomatis secara fisik?
4. Bagaimana membatasi IP mana saja yang boleh mengakses database?

Setelah mencari-cari jawaban lewat milis dan situs Oraclenya sendiri, ditemukan penyelesainnya....OK!!langsung saja.

1. Bagaimana mensinkronkan ukuran size secara fisik di hardisk dengan size dioraclenya?

Apabila file archivelog dihapus langsung tanpa menggunakan rman, maka informasi archivelog tsb masih tersimpan di controlfile.

Untuk mengsinkronkan informasi tsb, dari rman:

export ORACLE_SID=mysid
rman target /
crosscheck archivelog all;
delete expired archivelog all;

Sebaiknya menghapus archivelog dilakukan dari rman.
Misalkan utk menghapus archivelog yg lebih tua dari 1hari di disk:

delete archivelog all completed before ‘sysdate-1’;

Atau utk menghapus archivelog yg sequencenya <= 1000.

delete archivelog until sequence 1000;

2. Apa yang menjadi kriteria dalam pengahapusan archived log file(usia kadaluarsa)?

Archivelog akan di-keep di disk selama diperlukan.
Untuk itu Anda mesti mengecek retention policy untuk backup. Dari rman:

show retention policy;

kalau tidak pernah diubah, maka hasilnya akan seperti ini:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

yg artinya Oracle akan meng-keep satu versi full backup, yg meliputi full database backup + semua archivelog setelah full backup tsb dilakukan.

Coba cek website ini utk detail bagaimana cara Oracle me-maintain FRA.

http://download-east.oracle.com/docs/cd/B19306_01/
backup.102/b14192/setup005.htm

Intinya adalah:
- Oracle akan meng-keep file2 yg ada di FRA selama FRA size masih dibawah nilai DB_RECOVERY_FILE_DEST_SIZE.
- Kalau sudah penuh, Oracle akan mencari file2 mana yg obsolete berdasarkan retention policy-nya, dan akan otomatis dihapus.

3. Bagaimana membuat agar penghapusan archived log file dilakukan secara otomatis secara fisik?

Untuk pertanyaan ini solusinya adalah menghapus dengan mengunakan rman/jangan menghapus langsung dari sisi OS, buat scheduller untuk menjalankan rman (sesuai dengan jawaban no.1).

4. Bagaimana membatasi IP mana saja yang boleh mengakses database?

Coba masuk ke Server Oracle, pilih Oracle Net Manager (terletak di folder Configuration and Migration Tools), kemudian pilih Profile, lalu pilih tab Access Rights.
Disitu bisa diatur IP mana saja yang boleh dan tidak boleh mengakses database.

Learn For Oracle DataBase Administrator

Setelah sekian lama gw ngga muncul2...maklumlah lagi sibuk banget nih. Buat para
admin dan moderator forum lainnya gw minta maaf yah.

OK...langsung aja deh, gw ingin berbagi pengalaman gw sendiri nih mengenai
administrasi database oracle selain SQL Server2000(gw bingung mo yang mana yang
diduluin nih)

spek :
Sun Solaris Server (SPARC)
Oracle 10G DataBase

pada tulisan ini Pengenalan Dulu deh -->

--> Oracle Enterprise Manager 10g
pada oracle 10g OEm telah berupa aplikasi berbasis web, sehingga DBAdmin dapat
melakukan semua aktifitas pengaturan database melalui web browser.
Ada 2 tipe OEM :
1. Oracle Enterprise Manager Database Control yang dapat diinstal pada setiap database.
2. Oracle Enterprise Manager Grid control yang dapat diinstall terpisah.

Jika menggunakan OEM release 1, maka secara default akan terinstall dengan menggunakan
port 5500 sehingga dapat diakses dengan alamat http://[nama_host]:5500/em.

--> Manajemen dengan Target Home Pages
halaman ini digunakan oleh para DBAdmin untuk mengetahui kinerja database, informasi
yang ditampilkan meliputi :
* General status
* aktifitas pemakaian CPU
* availabilitas
* pemakaian media penyimpan
* Informasi bantuan dari ADDM
* informasi job
* alert

--> OEM untuk administrasi
pada menu ini dapat dapat dilakukan pengaturan control files, tablespaces dan datafiles,
undo segments, redo log groups, instance memori, dsb. DBA juga dapat membuat job
scheduler dalam bentuk grafik.

--> OEM untuk Performance Tuning
Kinerja dari aktifitas database dapat dipantau dalam bentuk grafik sehingga akan segera
diketahui apabila terjadi penurunan terhadap kinerja database.

Ok!! itu sekilas pengenalan tentang Oracle 10g, dah pada bosan yah....lanjut deh!!!!!

PERFORMANCE TUNING
oracle 10g memiliki fitur yang disebut AWR (automatic workload repository) yang berfungsi
melakukan capture informasi-informasi yang berhubungan dengan aktifitas kinerja database
dan menyimpannya dalam bentuk repository sehingga dengan informasi ini terdeteksi
permasalahan yang menghambat kinerja database.
AWR mengumpulkan data2 statistik, seperti:
* lama waktu pada setiap aktifitas database
* Objek2 yang diakses pada database
* statistik tertentu yang diambil dari V$SYSSTAT dan V$SESSSTAT
* Query yang menghambat kinerja database
* satistik dari OS

untuk melihat komponen2 statistik yang dikumpulkan oleh AWR dapat digunakan view
V$STATISTICS_LEVEL

SQL> select statistics_name, activation_level
2 from v$statistics_level;

STATISTICS_NAME ACTIVAT
-------------------------------------- -------
Buffer Cache Advice TYPICAL
MTTR Advice TYPICAL
Timed Statistics TYPICAL
Timed OS Statistics ALL
Segment Level Statistics TYPICAL
PGA Advice TYPICAL
Plan Execution Statistics ALL
Shared Pool Advice TYPICAL
Modification Monitoring TYPICAL
Longops Statistics TYPICAL
Bind Data Capture TYPICAL
Ultrafast Latch Statistics TYPICAL
Threshold-based Alerts TYPICAL
Global Cache Statistics TYPICAL
Cache Stats Monitor TYPICAL
Active Session History TYPICAL
Undo Advisor, Alerts and Fast Ramp up TYPICAL

17 rows selected

SQL>

Data tersebut dikumpulkan AWR untuk digunakan Automatic Database Diagnostic
Monitor(ADDM) untuk dianalisa.

AWR REPORT
untuk menampilkan report kita gunakan script awrrpt.sql dan awrrpti.sql yang
dapat diakses pada direktori $ORACLE_HOME dbmsadmin

SQL> conn sys/oracle as sysdba
Connected.

SQL> @? dbmsadminawrrpt.sql
Snap
Instance DB Name Snap Id Snap Started Level
----------- ----------- --------------- ------------------ -------
orcl ORCL 1 01 Oct 2006 21:08 1
2 01 Oct 2006 21:15 1

--- 8 01 Oct 2006 22:09 1
9 01 Oct 2006 22:17 1

pilih batas awal dan akhir Snap Id untuk dilakukan analisa, misal 8 dan 9

Specify the Begin and End Snapshot Ids
--------------------------------------
Enter value for begin_snap : 8
Begin Snapshot Id specified: 8

Enter value for end_snap : 9
End Snapshot Id specified: 9

Buat nama file analisa, misal analisa.html

Specify the Report Name
-----------------------
The default report file name is awrrpt_1_8_9.html. To use
this name,
press to continue, otherwise enter an alternative.

Enter value for report_name: /dbase/mccdbase/analisa.html

Sepertinya...sampai sini dulu deh, sebenarnya masih banyak sih yang pengen gw
share but kayanya ngga mungkin deh. So...jadi tulisan ini cuma sekedar untuk
ngebuka wawasan kita-kita aja, siapa tahu ada yang tertarik dengan dunia
database

Karena banyak ilmu yang menarik man...jujur aja ilmu ini hampir ngga kita dapatkan
dari kampus, seperti ->

Administrasi Database
Data Mining &
Pemrograman Database

Apaan tuh datamining.... wah lain kali deh gw kasih tahu yah...!!
but yang paling banyak dipake tentu aja SQL yang advance alias ngga cuma select,
insert, update dan delete smile

Dunia database itu luas man!!!! berminat...?????

Instalasi Oracle10g di Linux RHELAS3

Langsung aja ya...cos gw nga suka basa basi, sebenarnya artikel ini gw buat berdasarkan pengalaman gw saat melakukan instalasi oracle10g di server baru.
Dan juga tadinya buat xcode magazine 4, tapi kayanya telat deh...jadi baru sekarang bisa gw kirim.

Semoga artikel ini bisa menjadi referensi yang baik, karena jujur aja ... artikel yang menjelaskan instalasi oracle10g dilinux jarang banget yang berbahasa Indonesia, sekalipun ada nga menyeluruh.
Btw...tetep gw jadiin referensi, selain dari situs oracle-nya sendiri.

Ok, pertama DL dulu oracle10g for linux dari situs oraclenya di
http://otn.oracle.com/software/products ... index.html

file --> ship.db.lnx32.cpio.gz

gunzip ship.db.lnx32.cpio.gz

* unpack file ship.db.lnx32_10103.cpio
--> # cd /app
# cpio -idmv < ship.db.lnx32_10103.cpio atau jika sudah ditulis dalam cdrom :
--> # cd /app
# cpio -idmv < /mnt/cdrom/ship.db.lnx32_10103.cpio

pemeriksaan memory dan swap

# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo

jika swap kurang dari 1 ghz

# dd if=/def/zero of=tmpswap bs=1k count=700000
# chmod 600 tmpswap
# mkswap tmpswap
# swapon tmpswap

pemeriksaan kapasitas direktori /tmp

# df /tmp

memperbaharui parameter kernel

# /etc/sysctl.conf
--> # Kernel Parameters for oracle 10.1.0 #
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
setelah selesai jalankan # sysctl -p

mengatur limit maximum file dan proses

# /etc/security/limits.conf
--> # To increase the shell limits for oracle 10.1.0 #
* soft nproc 2047
* hard nproc 16384
* soft nofile 4096
* hard nofile 63536

# /etc/profile
--> if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 63536
else
ulimit -u 16384 -n 63536
fi
fi
export ORACLE_BASE=/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/10.0.1;
export ORACLE_SID=ora10g;

setelah disimpan berikan perintah # source /etc/profile

membuat group, user, dan direktori

# mkdir -p /app/oracle/product/10.0.1
# mkdir -p /var/app/oracle
# groupadd dba {memiliki hak akses SYSDBA}
# groupadd oinstall {pemilik software}
# useradd -c “Oracle Software Owner” -g oinstall -G dba oracle -d /app/oracle

owner dan hak akses direktori

# chown -R oracle:oinstall /app/oracle
# chown oracle:dba /var/app/oracle
# chmod 755 /app/oracle
# chmod 755 /var/app/oracle

INSTALASI

dari terminal root
# xhost +

dari terminal lain
# su - oracle
$ cd /app/Disk1
$ ./runInstaller

pada saat proses instalasi anda diminta menjalankan file /app/oracle/oraInventory/orainstRoot.sh
melalui user root

dari terminal root
# cd /app/oracle/oraInventory
# ./orainstRoot.sh

setelah proses instalasi selesai, sebelum klik tombol OK..jalankan file root.sh melalui user root

dari terminal root
# cd /app/oracle/product/10.1.0
# ./root.sh

Sampai sini proses instalasi oracle10g sudah selesai.

nb : Saat Linux direstart maka oracle tidak berjalan secara otomatis, kita harus membuat script otomasi untuk menjalankan database dan mengaktifkan oracle enterprise manager

dari terminal root
#ubah konfigurasi listener
#vi /app/oracle/product/10.1.0/network/admin/listener.ora

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /app/oracle/product/10.1.0)
(PROGRAM = extproc)
)
)

dengan

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /app/oracle/product/10.1.0)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ora10g)
(ORACLE_HOME = /app/oracle/product/10.1.0)
(SID_NAME = ora10g)
)
)

edit setting di file /etc/oratab file dengan “Y”:
# vi /etc/oratab
ora10g:/u01/app/oracle/product/10.1.0:Y

Buat script pada file /etc/init.d/dbora
# vi /etc/init.d/dbora
:
#!bin/sh
#chkconfig: - 20 80
#description: Oracle autostart-stop script
#
#coding by gugun gunawan
#
#set ORA_HOME to be equivalent to the $ORACLE_HOME
#from which you execute dbstart
#/etc/init.d/dbora

ORACLE_HOME=/app/oracle/product/10.1.0;
ORACLE_OWNER=oracle;

#Start oracle database
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbstart
su - $ORACLE_OWNER -c $ORACLE_HOME/bin/lsnrctl start

#Untuk menjalankan oracle enterprise manager control
su - $ORACLE_OWNER $ORACLE_HOME/bin/emctl start dbconsole

------eof-----

edit file /app/oracle/product/10.1.0/bin/dbstart
# vi /app/oracle/product/10.1.0/bin/dbstart
ORATAB=/app/opt/oracle/oratab
dengan
ORATAB=/etc/oratab

edit/tambahkan file /etc/rc.local
# vi /etc/rc.local
/etc/init.d/dbora

=================================================================
notes :
script dibuat berdasarkan percobaan yang sudah dilakukan penulis dan berjalan dengan baik, script dibuat untuk lebih memudahkan
=================================================================

referensi :
Administrasi Oracle 10g, Evara Samsyiar
InfoLinux 02/2005 dan 03/2005 (instalasi oracle 9i pada RH9)
http://www.oracle.com/technology/pub/ar ... stall.html
Oracle Database Concepts : http://dba.ipbhost.com/lofiversion/index.php/t879.html