arm架構 麒麟系統,linux環(huán)境安裝Oracle Instant Client
$ wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basic-linux-arm64.zip $ unzip instantclient-basic-linux-arm64.zip $ wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-sqlplus-linux-arm64.zip $ unzip instantclient-sqlplus-linux-arm64.zip
wget https://download.oracle.com/otn_software/linux/instantclient/1922000/instantclient-sdk-linux.arm64-19.22.0.0.0dbru.zip unzip instantclient-sdk-linux.arm64-19.22.0.0.0dbru.zip $ export LD_LIBRARY_PATH=$(pwd)/instantclient_19_10
/opt/oracle
上面的export改成實際的路徑,下面是例子
# .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi #/opt/oracle/instantclient_19_22 export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_22
最后兩行是我添加的。
執(zhí)行命令source ~/.bashrc 。然后在后面的文件夾里面運行sqlplus -v 你就可以看到信息了。
cp sqlplus /usr/local/bin/ 這樣所有的文件夾都可以訪問了
因為我的是7.4版本,所以選擇最后一個。
The OCI8 extension lets you access Oracle Database. Use 'pecl install oci8' to install for PHP 8.2. Use 'pecl install oci8-3.2.1' to install for PHP 8.1. Use 'pecl install oci8-3.0.1' to install for PHP 8.0. Use 'pecl install oci8-2.2.0' to install for PHP 7.
報錯
configure: error: Cannot find php-config. Please use --with-php-config=PATH ERROR: `/tmp/pear/temp/oci8/configure --with-php-config=/usr/local/php/bin/php-config --with-oci8=./configure --with-php-config=/usr/bin/php-config7.4 --with-oci8=instantclient,/opt/oracle/instantclient_19_22' failed
確認 PHP 開發(fā)包是否已安裝:
yum list installed | grep php-devel
如果未安裝,您可以使用相應的命令來安裝它。
sudo yum install php-devel
which php-config
上面的報錯,只有我安裝了sdk才解決。
重新運行
pecl install oci8-2.2.0
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] : instantclient,/opt/oracle/instantclient_19_22
顯示安裝成功。
Build process completed successfully Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/oci8.so' install ok: channel://pecl.php.net/oci8-2.2.0 Extension oci8 enabled in php.ini
訪問這個鏈接受到啟發(fā)https://ubuntuforums.org/archive/index.php/t-92528.html
后面 安裝pdo_oci
composer require topthink/think-oracle=v2.1
配置php.ini擴展
vim /usr/local/php/etc/php.ini
extension=pdo_oci.so
官網已停用,改裝別的
https://gitee.com/jianswu/think-oracle?_from=gitee_search#%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95
# think-oracle 用于 thinkphp6 框架上的基于 OCI 的 Oracle 數據庫驅動。 由于官方很久沒有對 PDO_OCI 更新了,其驅動源碼默認不支持 Oracle 11g 及以上版本的數據庫,當然也可在編譯前修改 config.m4 文件使之支持。但安裝之后,PDO_OCI 使用中卻存在問題,如果數據庫中存儲中文,查詢后會出現字符截斷,無法得到預期的結果。 本庫使用基于 OCI API 封裝的 PDO 接口數據庫驅動 [misuoka\ocipdo](https://github.com/misuoka/ocipdo),用來對 Oracle 數據庫進行操作。 根據 Oracle 數據庫的特性,對 thinkphp6 的數據庫訪問層進行稍作修改,使之適用于 Oracle 數據庫,以便在 thinkphp6 框架中以其原有方式完美操作 Oracle 數據庫。如果你使用的是 thinkphp5.1 框架,請安裝 1.x.x 版本。 > 有關 PDO_OCI 字符截斷問題的鏈接:https://my.oschina.net/startphp/blog/195333 ## 使用方法 使用 composer 進行安裝 `composer require misuoka/think-oracle` 安裝完成后,在 thinkphp6 的數據庫配置文件 database.php 中,進行如下配置: ```php $config = [ // 數據庫連接配置信息 'connections' => [ 'oracle' => [ // 數據庫類型 'type' => '\misuoka\think\Oracle', // 服務器地址 'hostname' => '', // 填寫數據庫 IP 地址 // 數據庫名 'database' => '', // 數據庫實例 SID 名稱,如 ORCL // 用戶名 'username' => '', // 用戶名 // 密碼 'password' => '', // 密碼 // 端口 'hostport' => '', // 端口號,如 1521 // 數據庫連接參數 'params' => [], // 數據庫編碼默認采用utf8 'charset' => 'utf8', // 數據庫表前綴 'prefix' => '', // 自增序列名前綴(新增的,針對 Oracle 特有的),除前綴外,名稱與表名一致。如果不是,請在新增數據時使用 sequence 方法設置序列 'prefix_sequence' => '', ], ], ]; ``` 配置完成后,即可在PHP業(yè)務代碼中,按 thinkphp6 官方開發(fā)手冊的方法使用。 ## 變更之處 - 由官方的 PDO 驅動連接變更為 [misuoka\ocipdo](https://github.com/misuoka/ocipdo) 驅動連接 - 更改對 Oracle 存儲過程調用的判斷 - 獲取 LastInserID 的修改 - 增加了序列名的自動獲取,如果用戶配置了序列前綴,則根據規(guī)則(序列前綴 + 去掉表前綴的表名)自動獲取序列名稱,如果存在則返回序列名 - 如果用戶查詢設置了返回自增ID,但又不顯示填寫序列名并且自動獲取序列名失敗,則結果返回 -1 - 去掉 REPLACE 功能,Oracle 沒有該用法 - 修改 insertAll 方法,使之適用于 Oracle 的批量插入 - 對數據表及字段都轉大寫后加`"`,避免遇到系統關鍵字,導致 SQL 處理錯誤。如:用戶ID為UID,如果刪除時(`DELETE TB_USER WHERE UID < 100`)UID不加上雙引號,這會導致全部數據被刪除,經過處理后的語句(`DELETE "TB_USER" WHERE "UID" < 100`)只會刪除 UID 小于100的數據。 ## thinkphp5.1 上安裝方式 使用 composer 進行安裝 `composer require misuoka/think-oracle 1.x` 提示沒有json
查看當前擴展,確認是否是缺少json擴展,執(zhí)行
php -m
查看當前擴展,發(fā)現的真的沒有json擴展,于是先安裝缺失擴展,再下載composer.phar
yum install php-json
安裝完成后,在 thinkphp6 的數據庫配置文件 database.php 中,進行如下配置: ```php $config = [ // 數據庫類型 'type' => '\misuoka\think\Oracle', // Query類 'query' => '\misuoka\think\Query', // 如果是在 database.php 中配置,不需要填寫此項,但如果是這種用法 Db::connect($config),請?zhí)顚懘隧?// 服務器地址 'hostname' => '', // 填寫數據庫 IP 地址 // 數據庫名 'database' => '', // 數據庫實例名稱,如 ORCL // 用戶名 'username' => '', // 用戶名 // 密碼 'password' => '', // 密碼 // 端口 'hostport' => '', // 端口號,如 1521 // 連接dsn 'dsn' => '', // 不填寫,如果填寫,則數據庫連接將以此為連接串,將忽略除賬號密碼外的參數 // 數據庫連接參數 'params' => [], // 數據庫編碼默認采用utf8 'charset' => 'utf8', // 數據庫表前綴 'prefix' => '', // 自增序列名前綴(新增的,針對 Oracle 特有的),除前綴外,名稱與表名一致。如果不是,請在新增數據時使用 sequence 設置序列 'prefix_sequence' => '', ]; ``` 配置完成后,即可在PHP業(yè)務代碼中,按 thinkphp5.1 官方開發(fā)手冊的方法使用。
安裝完以后要lnmp 重啟下。

浙公網安備 33010602011771號