Query untuk paging pada Database Oracle

Pada tulisan sebelumnya telah disebutkan tentang perintah query untuk paging pada database mysql maka berikut ini akan disebutkan perintah query untuk paging pada database oracle.

Berbeda dengan MySQL yang memiliki perintah “limit”, pada database oracle tidak ada perintah langsung (yang saya tau :D) untuk memanggil dan membatasi baris tertentu saja. Ada perintah rownum tetapi perintah ini hanya membatasi jumlah row yng ditampilkan saja dan tidak bisa digunakan untuk membatasi baris sekian hingga sekian.

Untuk itu, perlu ada perintah untuk mendifinisikan suatu informasi tentang baris-baris yang sedang dipanggil, yaitu dengan menggunakan perintah row_num().

Contoh sebagai berikut:

select * from 
(select row_number() over (order by nama asc) baris, a.*
from pegawai order by nama asc)
where baris between 1 and 50

artinya, kita menambahkan satu field atau kolom bernama “baris” yang berisi nomor urut data yang sedang dipanggil baru kemudian kita pilih antara baris ke 1 sampai dengan baris ke 50.

Contoh kedua:

select * from 
(select row_number() over (order by nama asc) baris, a.*
from pegawai order by nama asc)
where baris between 51 and 100

artinya, kita mengambil baris ke 51 sampai dengan baris ke 100, dan begitu seterusnya.

Demikian, Semoga Bermanfaat.

Fungsi MD5 di Oracle

Pada DBMS Oracle ternyata belum ada fungsi md5 seperti pada mysql. sehingga ketika kita memasukkan data password isinya berupa string yang bisa dilihat oleh setiap orang yang memiliki hak akses databases. Oleh karena itu perlu adanya suatu fungsi yang akan mengenkrip string tersebut agar privasi password setiap user benar-benar terjamin.

Untuk membuat fungsi md5, kita perlu menggunakan fitur DBMS_OBFUSCATION_TOOLKIT.MD5(‘string’). Tetapi output dari fungsi tersebut bukanlah hexadecimal dengan panjang karakter 32, tetapi merupakan raw yang panjangnya 16 karakter. sehingga hasil dari DBMS_OBFUSCATION_TOOLKIT.MD5() perlu di convert ke bentuk hexadecimal.

Ok, to the point aja…. untuk membuat fungsi md5 buatlah script seperti berikut :

create or replace function “GET_HASH” (p_password in VARCHAR2)
return VARCHAR2 is
begin
RETURN DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => UPPER(p_password));
end;

untuk mengimplementasikan fungsi diatas, jalankan script berikut :

select RAWTOHEX(GET_HASH(‘admin’)) FROM DUAL;

jika semuanya berjalan lancar, berikut hasil dari script diatas..

RAWTOHEX(GET_HASH(‘ADMIN’))
——————————————————————————–
73ACD9A5972130B75066C82595A1FAE3

Sumber : http://aristhu03.wordpress.com/2008/08/08/md5-di-oracle/

Perintah-perintah Query dengan klausa “NULL” di Oracle

NULL bisa berarti hilang, tidak diketahui , atau tidak adanya data.
NULL juga tidak memiliki tipe data, NULL bukanlah angka, karakter atau tipe data yang lain.
NULL tidak bisa diartikan juga sebagai nilai nol.

Berikut contoh-contoh perintah query yang mengandung kata NULL.

NOT NULL Constraint
Suatu kolom pada suatu tabel bisa ditentukan agar selalu diisi, artinya, akan ada error ketika kolom tersebut tidak diisi. Contoh perintahnya :

CREATE TABLE t1 (c1 NUMBER PRIMARY KEY, c2 DATE NOT NULL);

Perintah Perbandingan
Mengambil data dari suatu tabel yang memiliki kolom yang bernilai NULL:

SELECT * FROM emp WHERE comm IS NULL;

Mengambil data dari suatu tabel yang memiliki kolom yang tidak bernilai NULL:

SELECT * FROM emp WHERE comm IS NOT NULL;

Merubah nilai suatu kolom menjadi NULL:

UPDATE emp SET comm = NULL WHERE deptno = 20;

Perintah Pengurutan (Sorting)
Ketika melakukan sorting pada data yang ada nilai null-nya, maka nilai null akan muncul pertama jika diurutkan secara ascending (kecil ke besar), dan nilai null akan muncul terakhir jika diurutkan secara descending. Namun, kadang kita ingin menampilkan data dengan urutan terbesar terlebih dahulu dan nilai null ditampilkan paling akhir. Untuk melakukan hal itu berikut contoh penggunaannya:

select * from emp order by sal desc NULLS FIRST;

atau

select * from emp order by sal desc NULLS LAST;

Demikian, Semoga bermanfaat.

Referensi : http://www.orafaq.com/wiki/NULL

 

Impor database 11g ke 10g

Mungkin Anda pernah mengalami masalah ketika akan meng-impor database oracle dari oracle versi 11g ke oracle versi 10g. Ketika di berikan perintah impor pada file DMP dari oracle 11g ke oracle 10g biasanya kan mucul pesan error bla bla bla data file header not known bla bla bla.. Nah untuk mengatasinya cukup mudah, ketika expor database 11g ke file dmp gunakan oracle client 10g, maksudnya, perintah expor dieksekusi pada komputer client yang terinstall oracle client 10g. Selanjutnya, setelah selesai proses expor, imporlah file dmp yang terbentuk ke databse oracle 10 target seperti biasa. Sesuai pengalaman yang saya lakkan hal ini bisa berhasil.

Demikian, Semoga bermanfaat.

Enable/Disable option database pada 11gr2

Oracle database 11gR2 menyediakan satu tools yang sangat mudah digunakan untuk mengaktifkan (enable) atau menonaktifkan (disable) fitur (option) yang terdapat pada database seperti : Oracle Database Vault, Real Application Testing, Oracle Label Security. Tools tersebut yaitu : chopt, penggunaannya sendiri yaitu :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[oracle@11gR2 ~]$ chopt

usage:

chopt <enable|disable> <option>

options:
                  dm = Oracle DATA Mining RDBMS Files
                  dv = Oracle DATABASE Vault OPTION
                lbac = Oracle Label Security
                olap = Oracle OLAP
        partitioning = Oracle Partitioning
                 rat = Oracle REAL Application Testing

e.g. chopt enable rat

Sample :

1
2
3
4
5
6
7
SQL> SELECT * FROM v$option WHERE parameter='Oracle Database Vault';

PARAMETER                                VALUE
---------------------------------------- --------------------
Oracle DATABASE Vault                    FALSE

1 ROWS selected.

Sebelum menggunakan fitur chopt tersebut, pastikan bahwa database harus dalam keadaan offline (mati).

1
2
3
4
5
[oracle@11gR2 lib]$ chopt enable dv

Writing TO /u03/app/oracle/product/11.2.0/db_1/install/enable_dv.log...
%s_unixOSDMakePath% -f /u03/app/oracle/product/11.2.0/db_1/rdbms/lib/ins_rdbms.mk dv_on
%s_unixOSDMakePath% -f /u03/app/oracle/product/11.2.0/db_1/rdbms/lib/ins_rdbms.mk ioracle

Lalu cek kembali apakah fitur Database Vault sudah enable.

1
2
3
4
5
6
7
SQL> SELECT * FROM v$option WHERE parameter='Oracle Database Vault';

PARAMETER                                VALUE
---------------------------------------- --------------------
Oracle DATABASE Vault                    TRUE

1 ROWS selected.

Sumber : http://bengkel-oracle.net/2011/12/enabledisable-feature-database-pada-11gr2/

 

Enable Oci8 di xampp

Untuk bisa bermain-main bersama PHP dengan database Oracle, Anda bisa memanfaatkan ekstensi oci8 pada xampp. Tapi ekstensi ini tidak secara otomatis di-enable pada instalasi pertama xampp. Berikut cara untuk meng-enable oci8 di xampp :

  • Install xampp, jika belum ada, bisa diunduh disini.
  • Setelah terinstal xampp, misal di drive C,  masuk ke folder C:xamppphp
  • Buka file php.ini, cari baris berikut:
;extension=php_oracle.dll
;extension=php_oci8.dll
  • Kemudian hilangkan tanda ‘;‘ menjadi :
;extension=php_oracle.dll
extension=php_oci8.dll
  • Kemudian simpan file tersebut.
  • Setelah itu install Oracle client
  • Kemudian jalankan apache melalui xampp control
  • Masuk ke phpinfo di http://localhost/xampp 
  • Cari (Ctrl+F) ‘oci8’
  • Pastikan muncul tampilan seperti gambar berikut :

oci8

Jika belum ada, cobalah resrtart komputer Anda.
Demikian, Semoga Bermanfaat.

Tipe data pada oracle 10g

  1. Varchar2(size) : string yang memiliki panjang karakter vaiable dengan panjang maximal sebesar size. Tipe data ini memperbolehkan penyimpanan semua karakter yang dapat dimasukkan melalui keyboad. Maksimum size yang dapat disimpan sebesar 4000 bytes (karakter). Tipe data ini juga memungkinkan untuk mneyimpan data numerik. Biasanya space akan langsung dieliminasi jika menggunakan tipe ini.
  2. Char(size): string dengan panjang karakter tetap sebesar ukuran size. Tipe data ini mempunyai kemampuan yang hampir sama yakni menyimpan karakter, hanya saja maksimum size yang disimpan hanya sebesar 2000 bytes.
  3. Number(p,s) : tipe data number memiliki presisi p dan s digit dibelakan koma jika kita abaikan p dan s berarti dianggap sebagai tipe number floating point. Tipe data ini menyimpan bilangan interger sampai maksimum dari digit integer tersebut. misal untuk spesifikasi (5,2) berarti 5 digit sebelum koma dan 2 digit dibelakang koma.
  4. Long : data karakter dengan ukuran panjang bervariasi, hingga mencapai 2 GB.(tipe data seperti ini tidak dapat digunakan sebagai primary key).
  5. Raw(size) : tipe data berupa binary data dengan ukuran maksimal 255 bytes
  6. Long Raw : Tipe data berupa binary data dengan ukuran maksimal 2 GigaBytes tidak dikonversi oleh oracle (data mentah apa adanya, spasi dihitung 1 karakter).
  7. Date : Tipe data ini menyimpan waktu dan tanggal dari sebuah informasi, dengan komponen waktu yang dibulatkan ke detik terdekat. Untuk menampilkannya dalam teks harus menggunakan fungsi to_char.
  8. Timestamp : tipe ini mirip dengan date. Di dalam tipe ini terdapat komponen waktu yang dapat langsung ditampilkan tanpa harus mengubahnya terlebih dahulu dengan fungsi to_char.
  9. Clob : Tipe data ini memperbolehkan penyimpanan objek dengan ukuran yang sangat besar sekitar 4 GB. Clob mirip sekali dengan varchar2 hanya saja tipe data ini mempunyai kapasitas maksimum yang lebih besar.
  10. Blob : tipe ini memperbolehkan penyimpanan objek bbinary yang besar dan tidak terstruktur. Contoh dari tipe data blob adalah suara dan video.
Sumber : http://teknologiforever.wordpress.com dengan sedikit penyesuaian.