Prequisites

- Installed Oracle Database ( we used 19c version )

- Installed XAMPP with PHP version 7.4  or lower

- Download Oracle OCI8 is pre-installed in XAMPP here

- Download Oracle Instant Client Basic Package here


Langkah Penginstalan

- Pastikan kita telah menginstall XAMPP dan Oracle Database 19c




- Selanjutnya kita akan mendownload package OCI8 pada link diatas atau pecl.php.net dengan menyesuaikan architecture, versi PHP yang digunakan dan Thread Safety atau Non Thread Safety pada info.php berikut. jadi disini versi php_oci8 yang saya download yaitu php_oci8-2.2.0-7.4-ts-vc15-x64 (package oci8 for PHP 7.4 thread safe) 



- Setelah kita download copy atau pindahkan semua isi file tersebut ke folder extension PHP pada XAMPP, example C:\xampp\php\ext , maka terdapat 6 file php_oci8 yang akan ada pada direktori tersebut.

- Setelah itu kita aktifkan extension tersebut pada file php.ini yaitu biasanya terletak pada C:\xampp\php\php.ini , Edit kemudian uncomment pada bagian

- Kemudian download and extract Oracle Instant Client Basic Package here ini merupakan tools agar aplikasi bisa terkoneksi dengan oracle database , sesuaikan dengan versi database yang dimiliki disini saya mendownload dengan versi package Instant Client 19.17.  

- Setelah kita download dan extract pada sebuah folder set PATH pada environment variable windows



- setelah kita set pada environment variable, test apakah extension sudah berhasil di jalankan dengan command " php --ri oci8 " atau cek info.php kembali apakah extension oci8 sudah aktif dan pada bagian Oracle Run-time Client Library Version sama dengan versi oracle Instant Client  Basic Package yang telah kita download tadi. 

- jika php telah berhasil terkoneksi dengan oracle databse, selanjutnya yaitu melakukan config database pada Codeigniter 3 dan melakukan test query. berikut config database

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
	'dsn'	=> '',
    'hostname' => '192.168.170.136:1521/orcl1', //Using ServiceName OR Below
    // 'hostname' => '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.170.136)(PORT=1521))(CONNECT_DATA=(SID=orcl1)))', //Using SID
	'username' => 'books_admin',
	'password' => 'buku123',
	'database' => '',
	'dbdriver' => 'oci8',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

- Selanjutnya Test Query pada Controller Codeigniter, maka data akan berhasil ditampilkan sesuai dengan saat kita menjalankan query pada server Oracle Database.

Test Query melalui CLI



Test Query pada Controller Codeigniter

<?php
	defined('BASEPATH') OR exit('No direct script access allowed');

	class Adminorates extends CI_Controller {

		public function __construct()
		{
			parent::__construct();
		}
		public function index()
		{
			$persons = $this->db->query('SELECT  * FROM persons')->result_array();
			echo "<pre>";
			print_r($persons);
			echo "</pre>"; 
		}
    }