PHP merupakan salah satu scripting language yang paling banyak digunakan untuk website. Banyak website-website ternama seperti Facebook, WordPress, dan Digg yang menggunakan PHP dalam pengembangannya. Sedangkan Oracle Database adalah RDBMS komersial yang banyak dipilih perusahaan-perusahaan besar karena memiliki tingkat skalabilitas tinggi.

Menghubungkan koneksi antara PHP dan Oracle

Mengkombinasikan PHP dan Oracle bukanlah hal yang tidak mungkin untuk dilakukan. PHP memiliki extension OCI8 yang dapat kita gunakan untuk mengkoneksikan Database Oracle 12c, 11g,10g, 9i ataupun 8i dengan aplikasi web yang dibuat menggunakan PHP. Extension PHP untuk database oracle sudah ada didalam file instalasi PHP5 tapi bisa juga diunduh secara terpisah.

Baca Juga :
Oracle Database Vault 11g

Dalam extension ini terdapat fitur-fitur seperti connection caching(pooling), privileged connection, statement caching dan row pre-fetching yang dapat digunakan.

Lalu bagaimana cara untuk menggunakan extension OCI8 untuk menghubungkan aplikasi web kita dengan database Oracle? Berikut langkah-langkahnya:

Install extension OCI8

  1. Install webserver (misalkan: Apache, NGINX) terlebih dahulu
  2. Jalankan web server
  3. Buka file php.ini pada direktori webserver anda
  4. Cari keyword extension=php_oci8_11g.dll
  5. Jika keyword tidak bisa ditemukan, unduh file zip PHP Extension untuk Oracle php_oci8-2.0.6-5.5-ts-vc11-x64.zip dari https://pecl.php.net/package/oci8/2.0.6/windows. Ekstrak kemudian salin file dll ke folder c:/…/php/ext.
  6. Hilangkan tanda titik koma “;” yang ada di depan extension=php_oci8_11g.dllBerikut tampilan dari phpindo jika OCI8 sudah terinstall dengan baik:
    Install extension

Koneksi database dan menggunakan fungsi pada extension

  1. Tentukan variable $username, $password, dan $db untuk database Oracle
  2. Tentukan variable $db sebagai SID database pada <Oracle11g>/NETWORK/ADMIN/tnsnames.ora 
    $username=’OE’;
    $password=’OE’;
    $db='(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = XE)
    )
    )’;

    Jika HOST, PORT or SERVICE_NAME database Oracle anda berbeda dengan script diatas, gantilah sesuai dengan konfigurasi yang anda buat.

  3. Koneksi dengan oci_connect() method:
    $connection = oci_connect($username, $password, $db);
  4. JIka ada error terjadi pada waktu koneksi dengan database Oracle, maka retrieve pesan errornya menggunakan fungsi oci_error() dan tampilkan pesannya:
    if (!$connection) {
    $e = oci_error();
    echo htmlentities($e[‘message’]);
    }
  5. Prepare statement oracle dengan menggunakan fungsi oci_prepare() :
    $stmt = oci_parse($connection, “CREATE TABLE OE.WLSLOG(time_stamp VARCHAR2(255) PRIMARY KEY,category VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255), code VARCHAR2(255),msg VARCHAR2(255))”);
  6. Eksekusi SQL statement menggunakan fungsi oci_execute() :
    $r = oci_execute($stmt);
  7. Jalankan webserver dan buka script PHP yang sudah dibuat menggunakan browser.
    Berikut ini contoh script PHP createTable.php,  lengkap yang biasa anda gunakan untuk membuat table pada database Oracle :

    <?php
    $username=’OE’;
    $password=’OE’;
    $db='(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = XE)
    )
    )’;$connection = oci_connect($username, $password, $db);
    if (!$connection) {
    $e = oci_error();
    echo htmlentities($e[‘message’]);
    }$stmt = oci_parse($connection, “CREATE TABLE OE.WLSLOG(time_stamp VARCHAR2(255) PRIMARY KEY,category VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255), code VARCHAR2(255),msg VARCHAR2(255))”);if (!$stmt) {
    $e = oci_error($connection);
    echo htmlentities($e[‘message’]);
    }

    $r = oci_execute($stmt);

    if (!$r) {
    $e = oci_error($stmt);
    echo htmlentities($e[‘message’]);
    }else{
    echo ” Created table\n\n”;
    }

    $sql = “INSERT INTO OE.WLSLOG(time_stamp,category,type,servername,code,msg) VALUES(‘Apr-8-2014-7:06:16-PM-PDT’,’Notice’,’WebLogicServer’,’AdminServer’,’BEA-000365′,’Server state changed to STANDBY’)”;

    $stmt = oci_parse($connection, $sql);

    if (!$stmt) {
    $e = oci_error($connection);
    echo htmlentities($e[‘message’]);
    }

    $r = oci_execute($stmt);

    if (!$r) {
    $e = oci_error($stmt);
    echo htmlentities($e[‘message’]);
    }else{
    echo ” Added a row\n\n”;
    }

    $sql = “INSERT INTO OE.WLSLOG(time_stamp,category,type,servername,code,msg) VALUES(‘Apr-8-2014-7:06:17-PM-PDT’,’Notice’,’WebLogicServer’,’AdminServer’,’BEA-000365′,’Server state changed to STARTING’)”;

    $stmt = oci_parse($connection, $sql);

    if (!$stmt) {
    $e = oci_error($connection);
    echo htmlentities($e[‘message’]);
    }

    $r = oci_execute($stmt);

    if (!$r) {
    $e = oci_error($stmt);
    echo htmlentities($e[‘message’]);
    }else{
    echo ” Added a row\n\n”;
    }

    $sql = “INSERT INTO OE.WLSLOG(time_stamp,category,type,servername,code,msg) VALUES(‘Apr-8-2014-7:06:22-PM-PDT’,’Notice’,’WebLogicServer’,’AdminServer’,’BEA-000360′,’Server started in RUNNING mode’)”;

    $stmt = oci_parse($connection, $sql);

    if (!$stmt) {
    $e = oci_error($connection);
    echo htmlentities($e[‘message’]);
    }

    $r = oci_execute($stmt);

    if (!$r) {
    $e = oci_error($stmt);
    echo htmlentities($e[‘message’]);
    }else{
    echo ” Added a row\n\n”;
    }

    ?>

Baca Juga :
Pastikan Code Aplikasi Berkualitas dengan Sonarqube

Berikut tampilan script pada web browser.

Install extension 2

Sebagai sebuah sistem database yang populer, Oracle sudah hadir sejak lama dan banyak digunakan oleh perusahaan yang memiliki database besar dan kompleks karena sifatnya yang Scalable dan High Availability.

Untuk kebutuhan manajemen database berskala besar tentunya butuh sumber daya dengan kompetensi yang sesuai. i3 hadir dengan tim yang kompeten dan siap membantu kebutuhan manajemen database perusahaan Anda.

Untuk kebutuhan manajemen data perusahaan Anda, Anda bisa dapat melihat informasi selengkapnya melalui halaman Solusi Data Management kami, atau kontak langsung tim sales kami untuk info lebih lanjut.