Skip to content

Lowongan: Database Oracle Specialist

11-Jun-09

Kemarin ( 10 Juni 2009) ada yang nulis lowongan di bagian komentar artikel Gaji DBA Oracle di Indonesia. Siapa tahu anda cocok, silahkan hubungi contact person-nya. Berikut ini isinya:

Dear All…

Saat ini kami sedang membutuhkan :
Database Oracle Specialist
Persyaratan :
- Pendidikan min. S1 Teknik Komputer/Informatika/ Manajemen Informatika
- Pengalaman minimal 2 tahun di bidang Oracle
- Memiliki kemampuan untuk melakukan instalasi Oracle & performance tuning
- Menguasai pemrograman dengan menggunakan database : PL/SQL,Oracle, Access
- Mampu bekerja secara mandiri dengan sedikit pengawasan
- Mampu bekerja dalam suatu team work

Bila berminat silahkan kirimkan CV anda ke: recruitment@artajasa.co.id
Tulis subjectnya : DBA

Tks

Oracle Flashback Technology (Recycle bin)

05-Jun-09

Salah satu feature Oracle 10g (ke atas) yang jadi andalan saya adalah Oracle Flashback Technology. Dengan Oracle Flashback, kita bisa me-restore (recovery) data dengan sangat mudah.

Sebagai contoh, ketika kita secara tidak sengaja menghapus sebagian record di file Excel, untuk mengembalikannya, kita cukup klik tombol UNDO. Kita klik UNDO sekian kali untuk kembali ke kondisi data yang kita inginkan. Ketika kita tidak sengaka menghapus (drop/delete) file, untuk mengembalikan file tersebut kita cukup me-restore-nya dari recycle bin.

Nah, sederhanya, Oracle Flashback Technology menyediakan feature seperi UNDO dan RECYCLE BIN di Windows. Enak, bukan?

Macam-macam Oracle flashback:

1. Oracle Flashback Query.
Berguna untuk melihat (query) isi tabel di masa lalu. Misalkan siang ini kita baru saja men-delete atau update record. Karena terkanjur commit, kita tidak bisa melakukan rollback. Dengan Oracle Flashback Query, kita bisa melihat record (isi tabel) tadi pagi sebelum kita delete atau update. Berikut ini contoh command-nya (Catatan: nama tabel yang saya pakai untuk contoh di artikel ini adalah TB):

SQL> SELECT * FROM TB AS OF TIMESTAMP
     TO_TIMESTAMP('2009-06-03 06:08:03', 'yyyy-mm-dd hh24:mi:ss');
SQL> SELECT * FROM TB AS OF TIMESTAMP
     TO_TIMESTAMP('2009-06-03 06:08:03', 'yyyy-mm-dd hh24:mi:ss') where nomor=3;

Keterbatasan:

  1. Karena feature ini memanfaatkan UNDO segment di UNDO tablespace, maka size dari UNDO tablespace sangat mempengaruhi sampai berapa lama masa lalu yang bisa dikembalikan lagi. Semakin besar UNDO tablespace maka semakin besar (lama) masa lalu yang bisa dikembalikan.Bila data yang diquery sudah tidak ada lagi di UNDO tablespace maka akan muncul error berikut:
    ORA-08180: no snapshot found based on specified time
  2. Batas yang bisa query adalah setelah operasi DDL (data definition language) terakhir. Contoh DDL adalah mengubah definisi tabel (alter table, add column, alter column, truncate, dll). Bila data yang di-query ada pada waktu sebelum DDL terakhir (last DDL) maka akan muncul error berikut:
    ORA-01466: unable to read data - table definition has changed

More…

Download Gratis Buku Panduan DBA Oracle

19-Dec-08

Sudah lebih dua bulan saya tidak menulis di blog ini. Tulisan terakhir adalah 17 Oktober 2008. Selama itu pula saya tidak menjawab pertanyaan teman-teman pembaca sekalian; baik yang bertanya lewat komentar di tiap tulisan, forum tanya jawab, ataupun lewat email. Saya mohon maaf yang sebesar-besarnya bila para penanya menunggu-nunggu jawaban dari saya.

Untuk mengobati kekurangpuasan rekan-rekan pembaca, saya telah mengkompilasi tulisan-tulisan di blog ini ke dalam e-book. Silahkan download di Buku Pegangan Oracle DBA.pdf, gratis … tis… tis… Namun anda mesti register dulu di milis indo-oracle.

Saya membuka lebar-lebar pertanyaan, kritik, saran, atau pun complaint terhadap e-book ini. Bahkan sayapun membuka kesempatan bagi yang mau memberikan donasinya. Silahkan transfer ke Rek BCA no 7610329271 atas nama Rohmad :)

Salam,
Rohmad

Mengetahui konfigurasi database

17-Oct-08

Berikut ini cara mengetahui informasi seputar konfigurasi database Oracle yang kita maintain. Informasi ini sangat penting diketahui, terutama bagi DBA yang databasenya di-install/create/configure oleh orang (DBA) lain.

Informasi tentang environment Operating System (OS)
Salah satu informasi yang paling penting adalah ORACLE_HOME, yaitu directory di mana instalasi Oracle ditaruh. Lihat environment OS di sini:

  1. Di Windows, lihat di registry My Computer --> HKEY_LOCAL_MACHINE --> SOFTWARE --> ORACLE
  2. Di Unix, lihat di user profile dari database owner. Untuk shell sh/ksh/bash, user profile ada di file .profile. Untuk shell csh/tcsh, user profile ada di file .login

Informasi parameter Instance (init file)
Lokasinya ada di $ORACLE_HOME/dbs untuk OS Unix, atau %ORACLE_HOME%\database untuk Windows. Lebih detail silahkan lihat Teori dan Administrasi init file (pfile dan spfile).

Parameter instance, kalau tidak di-specify di init file, maka Oracle akan memberi nilai default. Ketika instance up, kita bisa melihat parameter-parameter instance melalui view v$parameter. Contoh:

SQL> select NAME,VALUE,ISDEFAULT from v$parameter order by name;

Kolom NAME adalah nama parameter. Kolom VALUE adalah nilai dari parameter tersebut. Kolom ISDEFAULT, kalau bernilai YES berarti nilai tersebut masih merupakan nilai default atau belum di-specify.

More…

Gather statistic untuk Performance

23-Sep-08

Cost based optimizer (CBO) menggunakan statistic untuk menentukan execution plan yang paling optimal. Saya pernah membahas sekilas tentang CBO ini di artikel Tuning Query dengan Explain Plan.

DI versi 9i ke bawah, gather statistic dilakukan secara manual dengan package DBMS_STATS. By default di database Oracle 10g, gather statistic ini dilakukan oleh Oracle secara otomatis; selanjutnya kitapun bisa memilih cara melakukan gather statistic ini, apakah secara otomatis atau manual.

Agar Database melakukan gather statistic secara manual, jalankan command berikut di SQL:

conn system
BEGIN
  DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
END;
/

Untuk mengembalikan gather statistic berjalan otomatic, jalankan command berikut di SQL:

BEGIN
  DBMS_SCHEDULER.ENABLE('GATHER_STATS_JOB');
END;
/

Untuk mempermudah pekerjaan, saya menyarankan untuk menjalankan gather statistic secara otomatis. Untuk database versi 9i, mau tidak mau kita harus melakukan secara manual karena di 9i belum ada feature gather statistic otomatis. Walaupun manual, kita bisa mensiasatinya dengan menjalankan DBMS_STATS lewat DBMS_JOB.

More…

Mengenal Teknologi Grid

22-Sep-08

Oracle 10g, g adalah singkatan dari grid. Berikut ini pembahasan mengenai Grid yang saya kutip dari Wikipedia.

Komputasi Grid (grid computing) adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar.

Latar belakang grid

Perkembangan kecepatan prosesor berkembang sesuai dengan Hukum Moore, meskipun demikian bandwidth jaringan komputer berkembang jauh lebih pesat. Semakin cepatnya jalur komunikasi ini membuka peluang untuk menggabungkan kekuatan komputasi dari sumber-sumber komputasi yang terpisah. Perkembangan ini memungkinkan skala komputasi terdistribusi ditingkatkan lebih jauh lagi secara geografis, melintasi batas-batas domain administrasi yang sudah ada.

Pesatnya perkembangan teknologi komputer di negara-negara maju, membuat para penelitinya semakin haus akan tenaga komputasi yang dapat menjawab tantangan dan permasalahan yang mereka hadapi. Walaupun sudah memiliki supercomputer dengan kapasitas yang sangat tinggi , apa yang sudah ada ini pun dirasa tetap kurang, karena mereka berusaha memecahkan permasalahan yang lebih besar lagi. Setelah semua komputer yg dimiliki seorang “peneliti haus tenaga komputasi” dipergunakan habis-habisan untuk memecahkan masalahnya, setelah berbagai cara untuk memecahkan masalah dicoba, dan dipilih yang paling efisien, tapi tetap masalahnya belum bisa dipecahkan juga, apa yang harus dia lakukan? Komputasi grid adalah salah satu jawaban dari pertanyaan ini.

Definisi grid

Menurut tulisan singkat [1] oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :
More…

Memindahkan atau Me-rename Datafile

17-Sep-08

Kadang kita perlu memindahkan datafile dari satu tempat (disk/file system/directory/drive) ke tempat yang lainnya. Atau kadang juga kita perlu me-rename datafile karena ada salah ketik waktu membuatnya. Baik memindahkan file dari satu tempat ke tempat lain, maupun merename datafile di tempat yang sama, intinya adalah sama saja.

Misalkan kita ingin memindahkan/me-rename datafile dari ‘/oradata/oracle/ts/users01.dbf’ ke ‘/oradata/oracle/ts/users02.dbf’

Pada database yang NOARCHIVELOG:

  1. Shutdown database
    SQL> shutdown immediate
    
  2. Pindahkan/move/rename datafile. Di Windows bisa pakai Windows explorer. Di unix gunakan command ini:
    mv /oradata/oracle/ts/users01.dbf /oradata/oracle/ts/users02.dbf
    
  3. Startup mount database
    SQL> startup mount
    
  4. Rename datafile di level database
    SQL> alter database rename file '/oradata/oracle/ts/users01.dbf'
    to '/oradata/oracle/ts/users02.dbf';
    
  5. Setelah itu, open database
    SQL> alter database open;
    

More…

Partitioning Table: Informasi Segment & Tablespace

14-Sep-08

Kadang kita bingung, ketika query TABLESPACE_NAME di view DBA_TABLES, kok nilai TABLESPACE_NAME ada yang NULL (blank/kosong).

SQL> select distinct TABLESPACE_NAME from dba_tables;
TABLESPACE_NAME
------------------------------
SYSTEM
                                            <--- Kosong/blank/NULL
USERS
SYSAUX

Tidak perlu bingung, itu tandanya ada tabel berpartisi di database tersebut. Pada tabel yang berpartisi, data disimpan di dalam partisinya. Contoh, lihat tabel berpartisi PENJUALAN_RANGE yang pernah dibahas di Partitioning Table: Definisi dan Contoh.

CREATE TABLE penjualan_range
( no_invoice  NUMBER,
tgl_jual    DATE NOT NULL,
area varchar2(10))
PARTITION BY RANGE (tgl_jual)
(
PARTITION jual_kw1 VALUES LESS THAN (TO_DATE('01-APR-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw2 VALUES LESS THAN (TO_DATE('01-JUL-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw3 VALUES LESS THAN (TO_DATE('01-OCT-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw4 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY')) TABLESPACE users
);

More…

Dasar-dasar Tuning

04-Sep-08

Berikut ini pertanyaan-pertanyaan seputar tuning:

  1. Bagian mana yang perlu dituning. Siapa yang melakukan?
  2. Dari sisi aplikasi, apanya yang perlu dituning?
  3. Bagian database yang mana yang perlu dituning?
  4. Darimana kita bisa belajar banyak tentang tuning?

Bagian mana yang perlu dituning? Oleh siapa?

  1. Aplikasi, oleh application designer dan developer
  2. Database, oleh database administrator (DBA)
  3. System Operasi (OS), oleh system administrator (sysadmin)

Tuning Aplikasi

Tuning aplikasi memberikan kontribusi tersebar terhadap performa sistem secara keseluruhan. Termasuk bagian-bagian tuning aplikasi adalah:

  1. Normalisasi yang tepat
  2. Pemakaian index
  3. Pemakaian hint dalam query SQL atau PL/SQL
  4. Pemanfaatan sharing cursor
  5. dan lain-lain

Bagian database yang mana yang perlu dituning?

  1. Memory -> PGA dan SGA SGA (shared pool, large pool, buffer cache, redo log buffer, sort area size)
  2. I/O -> distributing I/O, striping, multiple DBWn processes, DBWn I/O slaves.
  3. CPU -> CPU utilization.
  4. Network
  5. Space management -> extent allocation dan Oracle block efficiency.
  6. Redo log dan checkpoint -> redo log file configuration, redo entries, dan checkpoint.
  7. Rollback segment -> sizing rollback segments. Mulai versi 9i, banyakbagian yang dibuat automatic
  8. dan lain-lain

Darimana kita bisa belajar banyak tentang tuning?

More…

Security database: Administrasi Profile

22-Aug-08

Untuk alasan keamanan, pemakaian resource oleh user database perlu dibatasi. Selain itu, otorisasi (password) user juga perlu diperketat. Di database Oracle, pembatasan itu dilakukan oleh profile.

Berikut ini informasi profile (beserta parameter-patameternya) yang ada di database:

SQL> conn system
SQL> SELECT * FROM DBA_PROFILES ORDER BY PROFILE,RESOURCE_TYPE;
PROFILE    RESOURCE_NAME                    RESOURCE LIMIT
---------- -------------------------------- -------- ----------
DEFAULT    COMPOSITE_LIMIT                  KERNEL   UNLIMITED
DEFAULT    SESSIONS_PER_USER                KERNEL   UNLIMITED
DEFAULT    PRIVATE_SGA                      KERNEL   UNLIMITED
DEFAULT    CONNECT_TIME                     KERNEL   UNLIMITED
DEFAULT    IDLE_TIME                        KERNEL   UNLIMITED
DEFAULT    LOGICAL_READS_PER_CALL           KERNEL   UNLIMITED
DEFAULT    LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITED
DEFAULT    CPU_PER_CALL                     KERNEL   UNLIMITED
DEFAULT    CPU_PER_SESSION                  KERNEL   UNLIMITED
DEFAULT    PASSWORD_VERIFY_FUNCTION         PASSWORD NULL
DEFAULT    PASSWORD_REUSE_MAX               PASSWORD UNLIMITED
DEFAULT    PASSWORD_REUSE_TIME              PASSWORD UNLIMITED
DEFAULT    PASSWORD_LIFE_TIME               PASSWORD UNLIMITED
DEFAULT    FAILED_LOGIN_ATTEMPTS            PASSWORD 10
DEFAULT    PASSWORD_LOCK_TIME               PASSWORD UNLIMITED
DEFAULT    PASSWORD_GRACE_TIME              PASSWORD UNLIMITED

Ketika kita membuat database, by default Oracle membuat profile dengan nama DEFAULT. Ketika kita membuat user tanpa menyebutkan profile-nya, maka user tersebut akan di-assign ke profile DEFAULT.

Membuat profile

Gambar diambil dari Oracle Documentation.

More…