Membuat Koneksi Database Oracle XE Dengan PHP dan OCI8

Posted by

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

Nanti akan ditanyakan lokasi instantclient nya

Please provide the path to the ORACLE_HOME directory. 
Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :

Tulis seperti berikut kemudian enter untuk melanjutkan

instantclient,/opt/oracle/instantclient

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

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *

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