系統環境需求
PHP環境最好是 PHP 7,系統最好是紅帽系。
操作步驟
安裝Oracle Instant Client
在Oracle官網頁面中找到系統對應的客戶端下載安裝,比如Y CHEUNG選擇的就是 Instant Client Downloads for Linux x86-64 ,Fedora可以下載RPM包直接安裝,非RedHat系統的可能需要先編譯,用make install
的方式安裝。
主要是安裝basic包,比如YCHEUNG安裝的就是 oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm 。值得注意的是,下載前必須要註冊oracle用戶(免費)。
安裝 PHP Oci8擴展
用PERL安裝OCI8擴展。如果是PHP7以上的版本使用 perl install oci8
就好了,如果是低於PHP 7的版本環境的話則在perl安裝的時候要指定版本。
(最好是先裝oracle客戶端再裝PHP的oci8擴展,這樣在安裝oci8擴展的時候系統會自動找到客戶端的位置,就不需要再手動指定位置了。)
安裝 drupal Oci8 模組
Oracle integration Module : https://www.drupal.org/project/oci8
YCHUENG和同事稍微改了一下這個模組,以解決中文編碼和寫入數據庫的問題: GITHUB
配置數據庫
在 drupal 的 settings.php
裡增加數據庫信息:
1/**
2 * Database connection settings for the oci8 module. These settings
3 * mimic Drupal's main $databases variable.
4 */
5$conf['oci8'] = array(
6 'databases' => array(
7 'default' => array(
8 'default' => array(
9 'database' => 'DATABASE_NAME',
10 'username' => 'DATABASE_USER_NAME',
11 'password' => 'DATABASE_PASSWORD',
12 'hosts' => array('HOST_A', 'HOST_B'),
13 'port' => 'PORT_NUMBER',
14 'character_set' => 'CHARACTER_SET',
15 ),
16 ),
17 ),
18);
數據庫查詢
1oci8_db_query("select * from basictable")->fetchAll();
數據庫更新/修改
1$connect = new OCI8DatabaseConnection($GLOBALS['conf']['oci8']['databases']['default']['default']);
2
3$resource = $connect->getResource();
4
5$query = oci_parse($resource, "INSERT INTO MID_BD_PSNDOC VALUES (:id,:psncode,null,'TEST FIELD')");
6
7oci_bind_by_name($query, ':id', 234);
8oci_bind_by_name($query, ':psncode', 'psncode');
9
10$result = oci_execute($query);
11
12if (!$result) {
13 $error = oci_error($query);
14 watchdog('Oci8', '寫入數據庫失敗。' . $error['message'], WATCHDOG_ERROR);
15}