Ubuntu18.04下使用PHP7.2的连接Oracle11数据库

一、简介

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。

Oracle数据库广泛适用于银行,证券等需要高安全性的行业,10年前基本占据国内95%以上的市场份额,只是在近几年国产数据库崛起和去IOE的浪潮下,份额才慢慢缩减,但是仍然是目前市面上占有率最高的数据库产品。

PHP5开始支持oracle数据库,不过最初的版本不是很稳定,我们建议安装PHP5.3+以上版本,PHP官方扩展支持Oracle连接

二、安装

2.1:安装准备
  • Oracle Instant Client 
  • php_oci8
  • php_pdo_oci

Oracle Instant Client是Oracle提供的一套开发和运行时访问Oracle数据库的工具,无论是什么语言连接Oracle数据库都需要通过Oracle Instant Client,PHP也不例外,所以要确保已经安装并配置了Oracle Instant Client。

2.2:安装Oracle Instant Client 
2.2.1:下载客户端程序(ubuntu x64为例)

官方下载地址:

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.htmlicon-default.png?t=N7T8https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

站内下载地址:oracle-instantclient11.2-11.2.0.4.0-1.x86-64资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/ma_jian_ping/88375861

Oracle客户端解压后是三个rpm安装程序:

  • oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
  • oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
  • oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

三个程序通常对应不同的使用场景

basic:提供基础访问驱动 (必须安装)

devel:提供开发依赖 (建议安装)

sqlplus:提供一个Oracle DBMS命令行工具 (非必要不需安装)

2.2.2:安装rpm客户端程序:
sudo apt-get install alien    //安装工具alien来转换或安装rpm文件
sudo apt-get install libaio1  //安装 libaio.so.1 依赖

alien -i oracle-instantclient-basic*.rpm    //安装基础驱动
alien -i oracle-instantclient-devel*.rpm    //安装开发依赖

客户端默认安装路径为:/usr/lib/oracle/11.2/client64

2.2.3:测试客户端
alien -i oracle-instantclient-sqlplus*.rpm  //安装sqlplus测试客户端
/**添加测试连接配置**/
mkdir -p /usr/lib/oracle/11.2/client64/network/admin  //创建目录
chown -R root:root /usr/lib/oracle/11.2/client64/network/admin //目录授权

vim  /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora //创建配置文件
...
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.169.80.18)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
/**配置环境变量**/
export  ORACLE_HOME=/usr/lib/oracle/11.2/client64
export  TNS_ADMIN=$ORACLE_HOME/network/admin
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib
export  PATH=$ORACLE_HOME/bin:$PATH



. /etc/profile   //使配置生效
/**连接数据库测试**/
sqlplus 用户名/密码@ORCL
2.3:安装php扩展

php扩展有两个需要安装:oci8 和pdo_oci,这两个扩展都是官方源码自带,请通过对应版本的PHP源码进行编译安装,编译PHP扩展的过程不再详细介绍,有需要的可以参考我的另一篇文章:

Ubuntu18.04下源码编译php7.2扩展程序_泪痕哥哥的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/ma_jian_ping/article/details/133077742

三、PHP使用

3.1:连接到数据库
使用PHP的oci_connect函数来连接到Oracle数据库。以下是一个简单的示例:
<?php
// 定义数据库连接参数
$user = 'your_username';
$password = 'your_password';
$database = 'your_database';

// 连接到Oracle数据库
$connection = oci_connect($user, $password, $database);

// 检查连接是否成功
if (!$connection) {
 $error = oci_error();
 die(&quot;无法连接到Oracle数据库: &quot; . $error['message']);
} else {
 echo &quot;成功连接到Oracle数据库&quot;;
}

// 关闭数据库连接
oci_close($connection);
?>
3.2:执行SQL查询
一旦成功连接到Oracle数据库,我们就可以执行SQL查询来检索数据。以下是一个示例:
<?php
// 定义数据库连接参数
$user = 'your_username';
$password = 'your_password';
$database = 'your_database';

// 连接到Oracle数据库
$connection = oci_connect($user, $password, $database);

// 检查连接是否成功
if (!$connection) {
 $error = oci_error();
 die(&quot;无法连接到Oracle数据库: &quot; . $error['message']);
}

// 执行查询
$query = &quot;SELECT * FROM your_table&quot;;
$statement = oci_parse($connection, $query);
oci_execute($statement);

// 获取查询结果
while ($row = oci_fetch_array($statement, OCI_ASSOC+OCI_RETURN_NULLS)) {
 echo $row['COLUMN1'] . ', ' . $row['COLUMN2'] . '&lt;br&gt;';
}

// 关闭查询和数据库连接
oci_free_statement($statement);
oci_close($connection);
?>
3.3:插入和更新数据
除了查询数据之外,我们还可以使用PHP来插入和更新数据。以下是一个示例:
<?php
// 定义数据库连接参数
$user = 'your_username';
$password = 'your_password';
$database = 'your_database';

// 连接到Oracle数据库
$connection = oci_connect($user, $password, $database);

// 检查连接是否成功
if (!$connection) {
 $error = oci_error();
 die(&quot;无法连接到Oracle数据库: &quot; . $error['message']);
}

// 插入数据
$query = &quot;INSERT INTO your_table (COLUMN1, COLUMN2) VALUES ('Value 1', 'Value 2')&quot;;
$statement = oci_parse($connection, $query);
oci_execute($statement);

// 更新数据
$query = &quot;UPDATE your_table SET COLUMN1 = 'New Value' WHERE COLUMN2 = 'Value 2'&quot;;
$statement = oci_parse($connection, $query);
oci_execute($statement);

// 关闭查询和数据库连接
oci_free_statement($statement);
oci_close($connection);
?>

四、注意事项

  • Oracle Instant Client 官网下载非常慢,建议直接走站内资源下载。
  • rpm包安装工具alien可能会无法下载,最好换阿里云的源地址。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1)rpm格式包安装配置 1.1 下载以rpm后缀名的包,以11.2.0.4.0 版本为例,其中基础包basic、sql*plus、devel包建议默认下载,其他包视情况而定: oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm --基础包,为了运行OCI、OCCI、JDBC-OCI 这几个应用程序; oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm --补充包/文件,是为了运行sql*plus的即时客户端; oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm --补充包/文件,为运行ODBC环境附加库; oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm --补充JDBC下的XA、国际标准、行集操作; oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm --包含头文件和示例文件,为开发Oracle应用程序的即时客户端; 1.2 使用rpm -ivh [包名] 进行安装, 如:rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 安装的文件默认放在两个位置: 头文件:/usr/include/oracle/11.2/client64/ 下,如果在使用时报错找不到头文件,记得看路径是否是这个。 包文件:/usr/lib/oracle/11.2/client64/ 下,包含{bin、lib}两个文件夹; 1.3 创建文件夹: #mkdir -p /usr/lib/oracle/11.2/client64/network/admin/ 1.4 创建监听文件,并添加内容 #vim /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = *IP*)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = *SID*) ) ) 1.5 配置环境变量 #vim ~/.bashrc --根目录下为全局使用,为限制用户权限,可只修改某一用户的环境变量 export ORACLE_HOME=/usr/lib/oracle/11.2/client64 export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG='simplified chinese_china'.ZHS16GBK export LD_LIBRARY_PATH=$ORACLE_HOME/lib export PATH=$ORACLE_HOME/bin:$PATH 1.6 使配置完的环境变量生效 #source ~/.bashrc 1.7 连接数据库测试 #sqlplus /nolog SQL>conn scott/tiger@orcl 2)zip格式包安装配置(只以basic包做为示例) 2.1 下载包:oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.zip 2.2 将包文件解压到指定目录下: #unzip oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.zip 解压后的文件存放路径可以自行设定,但是与后面环境变量设定有关,本文设定/home/orcl/ 下。 头文件目录:/home/orcl/sdk/include/ 库文件目录:/home/orcl/instantclient_11_2/ 2.3 创建 network/admin/ 目录:mkdir -p /home/orcl/instantclient_11_2/network/admin/ 2.4 创建监听文件 tnsnames.ora #vim /home/orcl/instantclient_11_2/network/admin/tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.232.131)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) 2.5 配置环境变量 #vim ~/.bashrc export ORACLE_HOME=/home/orcl/instantclient_11_2 export TNS_ADMIN=$ORACLE_HOME/network/adminexport export NLS_LANG='simplified chinese_china'.ZHS16GBKexport export LD_LIBRARY_PATH=$ORACLE_HOME export PATH=$ORACLE_HOME:$PATH 2.6 配置完成后,将环境变量生效 #source ~/.bashrc 2.7 测试连接

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泪痕哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值