Vote for this blog. Thank you

agungprasetyo blog's

It's about technology and life experience

Koneksi Ke Oracle Menggunakan OCI8 di XAMPP Windows

UPDATE (7 April 2016) : Instalasi Oracle Basic Instant Client di Windows 7 – 64bit

<!– #### start:update #### –>

Update ini saya berikan karena OS yang saya gunakan adalah Windows 7 64bit. Secara prinsip prosesnya hampir sama, hanya saja installer yang saya gunakan adalah versi 12C. Ternyata, meski OS yang saya pakai adalah 64bit, belum tentu installer yg berbasis 64bit cocok untuk diinstall. Setelah mencoba berulang-ulang dan hampir membuat saya terjun bebas stress, akhirnya saya menemukan bahwa kita bisa menggunakan installer yang diperuntukkan untuk sistem 32bit.

Saya menggunakan versi terbaru yaitu instantclient-basic-nt-12.1.0.2.0.zip. Proses lainnya hampir sama. Jika ada kesulitan dengan oci8.dll, bisa didownload di sini, dan karena versi PHP saya menggunakan 5.4, saya download file versi 5.4 Thread Safe (TS) x86. Jika sudah, ekstrak file .dll ke direktori D:\xampp\php\ext.

Untuk lebih jelasnya silahkan bandingkan screenshot dibawah ini dengan screenshot yang lama. Ada perbedaan di versi oci dan instantclientnya.

2016-04-07_165959<!– #### stop:update #### –>

Mengkoneksikan PHP ke database Oracle di Windows memang memerlukan berapa proses, karena secara default XAMPP for Windows tidak secara otomatis mengaktifkan koneksi ini. Hal ini juga berlaku di distro Linux semisal Ubuntu yang apabila kita ingin mengkoneksikan aplikasi web ke database Oracle, prosesnya harus dilakukan secara manual dan bisa dibilang memakan waktu.

Kali ini, saya ingin berbagi pengalaman koneksi Oracle dengan PHP menggunakan XAMPP for Windows. Sebagai simulasi, anggap saja saya sudah mempunyai server database Oracle dengan deskripsi seperti dibawah ini.

Server Oracle
IP Address : 192.168.1.1
Port : 1521
Service Name : Y2K
User : percobaan
Pass : passcoba

Client Windows XP
Aplikasi : XAMPP for Windows
Direktori : D:\xampp

Berikut adalah proses yang saya lakukan agar PHP bisa terkoneksi ke server database Oracle menggunakan OCI8.

  1. Buka file php.ini pada direktori instalasi XAMPP for Windows
  2. Cari kata ;extension=php_oci8.dll. Buang tanda semikolon (;) pada awal baris untuk mengaktifkan modul tersebut.
  3. Simpan file php.ini.
  4. Download Instant Client Package – Basic for Microsoft Windows (32bit) di OTN Instant Client.
  5. Ekstrak file yang sudah di download di C:\oracleinstantclient_12_1.
  6. Rubah konfigurasi PATH dan tambahkan C:\oracleinstantclient_12_1. Caranya, klik Start > Control Panel > System > Advanced > Environment Variables dan klik Edit pada  Path.
    img_PATH
  7. Restart service Apache dari XAMPP Control Panel.
  8. Untuk memastikan bahwa koneksi ke Oracle sudah berhasil atau tidak, buka phpinfo dari http://localhost/xampp. Jika berhasil, maka tampilannya seperti berikut :
    img_OCI
  9. Proses selesai.

Langkah selanjutnya, adalah melakukan testing apakah server Oracle sudah benar-benar terkoneksi. Pada awalnya, saya menggunakan skrip berikut.

<?php
//$conn = oci_connect('USERNAME', 'PASSWORD', 'IP:PORT/SERVICENAME');
$conn = oci_connect('percobaan', 'passcoba', '192.168.1.1:1521/Y2K');
if (!$conn){
$e = oci_error();
print htmlentities($e['message']);
exit;
}
else{
echo 'Koneksi Sukses!!.'; 
echo "<br />";
}

Ketika skrip diatas dijalankan, muncul error yang menyatakan kalau TNS tidak terhubung.

img_ERROR_CONNECT1

Setelah melakukan pencarian di Google, akhirnya saya menemukan blog dari Alison Oracle. Akhirnya skrip untuk testing koneksi saya update dengan menyertakan koneksi string secara lengkap pada oci_connect. Skripnya bisa dilihat dibawah ini.

<?php
$conn = oci_connect('percobaan', 'passcoba', '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)) (CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME = Y2K)))');
if (!$conn){
$e = oci_error();
print htmlentities($e['message']);
exit;
}
else{
echo 'Koneksi Sukses!!.'; 
echo "<br />";
}

Untuk mengecek juga apakah proses query terhadap suatu tabel berhasil dilakukan atau belum, saya menambahkan sedikit skrip. Contohnya bisa dilihat dibawah ini.

<?php
$conn = oci_connect('percobaan', 'passcoba', '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)) (CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME = Y2K)))');
if (!$conn){
$e = oci_error();
print htmlentities($e['message']);
exit;
}
else{
echo 'Koneksi Sukses!!.';
echo "<br /><br />";

/* Skrip tambahan */
/* Untuk field dan tabel sesuaikan dengan database yg Anda miliki */
$sql = "select nama from anggota where id = '1'";

$stid = oci_parse($conn, $sql);
oci_execute($stid, OCI_DEFAULT);
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
foreach ($row as $item) {
echo $item." | ";
}
echo "
\n";
}
oci_free_statement($stid);
oci_close($conn);
}

Hasilnya dari skrip diatas bisa dilihat pada gambar berikut :

img_CONNECT_QUERY

Semoga bermanfaat

Previous

Aktivasi Windows 8 Error, Muncul Pesan “Windows couldn’t be activated, Error 0x8007007B – The file name, directory name, or volume label syntax is incorrect”

Next

Membuat ENG S-OFF Pada HTC Desire HD Anda

6 Comments

  1. Hidsan

    Terima Kasih pak agung atas penjelasannya..

    saya sudah mengikuti step by step langkah pak agung…

    tapi saya dapet notif sepeerti ini:

    PHP Warning: PHP Startup: Unable to load dynamic library ‘C:\xampp\php\ext\php_oci8.dll’ – The specified module could not be found.

    Lalu saya googling. akhirnya saya memutuskan untuk mengganti versi lain oracle clientnnya. saya menggunakan instantclient-basic-nt-11.2.0.4.0.zip dan extract filenya di C:\instantclient_11_2

    saya ikuti langkah di atas kembali,replace url PATH environmentnya dan restart xamppnya… dan hasilnya… masih tetep dapat notif di atas.

    Lalu saya googling lagi dan saya copy oci.dll dari folder C:\instantclient_11_2 ke C:\xampp\apache\bin

    dan…. berhasil ! muncul oci8 di phpinfo()

    • Wah..terima kasih banyak sdh ngasih alternatif dari cara diatas. Karena terkadang perlu cara lain agar proses itu berhasil. (Y)

      • Kifli

        Trims pencerahannya. Sy da coba tp tdk bisa mungkin perbedaan versi xampp dan phpnya, setelah mengikuti langka diatas dan coba2 baru sukses.
        Saya pake xammp 3.2.1 php 5.6.8 Saya da coba coba beberapa kali tp oci8 nga bisa2.
        Ternyata di php.ini terdapat extension =php_oci8.dll dan extension=php_oci8_11g.dll sedangkan pada folder xampp/php/ext terdapat file php_oci8_12c.dll na inilah yg jd masalah tdk samanya nama extension pada php.ini. solusinya adalah
        1. Pada php.ini extension = php_oci8_12c.dll (sesuaikan nama extension dengan nama file php_oci8_12c.dll
        2. Copy file php_oci8_12c.dll ke folder apache/bin
        3. Copy file oci.dll dr instantclient ke folder apache/bin
        Jadi kesimpulannya nama extension di php.ini harus sama dengan nama php_oci8…dllsemoga bermanfaat

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Powered by Lovecraft & Theme by Anders Norén

Policy Privacy | Disclaimer

Verified by MonsterInsights