Linux

Membuat Koneksi Database Oracle XE Dengan PHP dan OCI8

PHP merupakan salah satu bahasa pemrograman yang paling banyak digunakan untuk website, kemudian Oracle Database adalah RDBMS yang paling banyak dipilih dan dipakai oleh perusahaan-perusahaan besar karena memiliki tingkat skalabilitas yang tinggi. Nah untuk menghubungkan PHP dengan Database Oracle bukanlah hal yang tidak mungkin, karena PHP memiliki extension OCI8 yang bisa kita gunakan untuk mengkoneksikan ke Database Oracle 12c, 11g, dll.

Kemudian bagaimana cara menghubungkan web yang kita miliki dengan Database Oracle? berikut ini langkah-langkahnya :

Baca Juga : Membuat Koneksi Database MySQL dengan PHP dan MySQLi

Note : Kebetulan disini saya menggunakan Database Oracle XE 11G

Install Extension 

Extension ini kita install pada web server, disini saya menggunakan sistem operasi Ubuntu dan Web Server Nginx, tapi secara prinsip jika menggunakan sistem operasi lain seperti CentOS ataupun web servernya menggunakan Apache, proses nya tidak berbeda, paling hanya lokasi path saja yang berbeda

1. Download instantclient-basic-linux.zip dan instantclient-sdk-linux.zip pada link berikut

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

Silakan sesuaikan dengan versi Database Oracle yang digunakan, jika sudah didownload, silakan extract kedua file zip tersebut

2. Buat folder bernama /opt/oracle, selanjutnya pindahkan folder hasil extract kedua file diatas ke dalam folder /opt/oracle/

mv instantclient_11_2 /opt/oracle/instantclient
mv instantclient_11_2/sdk /opt/oracle/instantclient/

3. Install dependensi tambahan seperti php-pear, build-essential dan libaio1

apt install php-pear build-essential libaio1 -y

4. Buat symlink terhadap file libclntsh.so.11.1 dan libocci.so.11.1, lalu ubah owner folder tersebut

ln -s /opt/oracle/instantclient/libclntsh.so.11.1 /opt/oracle/instantclient/libclntsh.so
ln -s /opt/oracle/instantclient/libocci.so.11.1 /opt/oracle/instantclient/libocci.so
chown root:www-data /opt/oracle/ -R

5. Generate shared library baru untuk instantclient supaya mudah digunakan oleh PHP nya

echo /opt/oracle/instantclient > /etc/ld.so.conf.d/oracle-instantclient.conf
ldconfig

6. Selanjutnya kita install OCI8 menggunakan pecl

pecl install oci8

7. Kemudian jalankan command berikut untuk mengaktifkan oci8 pada file php.ini pada folder fpm dan cli PHP untuk mengaktifkan extension oci8

echo "extension = oci8.so" >> /etc/php/7.2/fpm/php.ini
echo "extension = oci8.so" >> /etc/php/7.2/cli/php.ini

8. Selanjutnya jalankan command berikut agar library instantclient auto generate ke foder yang semestinya ketika reboot

echo "LD_LIBRARY_PATH=\"/opt/oracle/instantclient\"" >> /etc/environment
echo "ORACLE_HOME=\"/opt/oracle/instantclient\"" >> /etc/environment

9. Restart service php7.2-fpm dan nginx nya untuk apply extension oci8 nya

service php7.2-fpm restart
service nginx restart

10. Saat ini semestinya extension oci8 sudah aktif, untuk memastikan silakan jalankan command berikut, dan pastikan muncul tulisan oci8

php -m | grep oci8

 

Koneksi ke Database Oracle dan Menggunakan Fungsi Extension OCI8

1. Buat sebuah file bernama koneksi.php, dan isi sintax berikut

<?php 
   $username = "rizky"; 
   $password = "passworduserschema"; 
   $host = "localhost"; 
   $port = "1521"; 
   $db = "(DESCRIPTION=(ADDRESS = (PROTOCOL = TCP)(HOST = ".$host.")(PORT = ".$port."))(CONNECT_DATA=(SID=xe)))"; 
   $connect = oci_connect($username, $password, $db); 
   if (!$connect) { 
      echo "Koneksi ke server database gagal dilakukan"; 
   } 
   else { 
      echo "Koneksi ke Database Oracle Berhasil"; 
   } 
?>

Dari script diatas, saya membuat beberapa variable seperti $username, $password, $host, $port, $db.

$username silakan isi username/schema yang ada pada Oracle, $password isikan password user/schema, $host isikan alamat host oracle, kalau berada pada sistem itu juga, isikan localhost, jika beda server, isikan alamat IP nya, $port isikan port Oracle, defaultnya 1521, jika custom, silakan disesuaikan.

kemudian karena pada Database Oracle, structur nya berbeda dengan MySQL, pada Oracle menggunakan user/schema dengan banyak table didalamnya, jadi pada variable $db bukan berisi nama Database nya, melainkan berisi informasi Host, Port, serta koneksi data nya yang biasa menggunakan SID=xe.

Untuk test apakah koneksi berhasil atau tidak, silakan akses file koneksi.php tersebut menggunakan browser, jika konfigurasi benar, akan muncul seperti berikut.

Selanjutnya coba kita ubah value pada $password, lalu refresh, pasti akan menampilan pesan koneksi ke database gagal seperti berikut

Proses pembuatan file koneksi ke Oracle pada PHP sudah selesai, nantinya file koneksi.php tersebut bisa diincludekan ke file-file PHP lainnya yang membutuhkan koneksi ke Database Oracle juga

Cukup mudah bukan? mungkin cukup sekian, semoga bermanfaat

Share
Published by
Rizky Pratama

Recent Posts

Tips Zimbra : Mengatasi Service Cbpolicyd Starting Failed Setelah Migrasi ke Rocky Linux 8

Beberapa waktu lalu, Excellent mendapatkan project migrasi Zimbra dari versi Open Source Ke Zimbra Network…

4 weeks ago

Mengatasi Error “no matching host key type found. Their offer: ssh-rsa,ssh-dss” Setelah Upgrade MacOS Ventura Saat Melakukan SSH

Bulan Oktober 2022 lalu, Apple resmi release MacOS terbaru mereka, yaitu MacOS Ventura. Beberapa fitur…

1 year ago

Cara Memindahkan Saham ke Sekuritas Lain

Tidak terasa sudah cukup lama saya tidak update tulisan pada blog ini lagi, akhirnya kali…

2 years ago

Tahun Baru, Markas Baru, Tulisan Baru

Tahun baru 2022 telah tiba, tidak terasa waktu berjalan begitu cepat, banyak cerita dan kenangan…

2 years ago

Mengatasi “Error while performing update: Input/output error (5)” Saat Update Tuxera pada MacOS

Kembali lagi bersama saya, setelah beberapa lama tidak update tulisan pada blog ini :D kali…

2 years ago

Konfigurasi PPTP Client pada Container Docker CLI

PPTP adalah kependekan dari Point-toPoint Tunneling Protocol yang merupakan bahasa yang membuat komputer dapat berkomunikasi…

3 years ago