一、简介
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为例)
官方下载地址:
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扩展的过程不再详细介绍,有需要的可以参考我的另一篇文章:
三、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("无法连接到Oracle数据库: " . $error['message']);
} else {
echo "成功连接到Oracle数据库";
}
// 关闭数据库连接
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("无法连接到Oracle数据库: " . $error['message']);
}
// 执行查询
$query = "SELECT * FROM your_table";
$statement = oci_parse($connection, $query);
oci_execute($statement);
// 获取查询结果
while ($row = oci_fetch_array($statement, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo $row['COLUMN1'] . ', ' . $row['COLUMN2'] . '<br>';
}
// 关闭查询和数据库连接
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("无法连接到Oracle数据库: " . $error['message']);
}
// 插入数据
$query = "INSERT INTO your_table (COLUMN1, COLUMN2) VALUES ('Value 1', 'Value 2')";
$statement = oci_parse($connection, $query);
oci_execute($statement);
// 更新数据
$query = "UPDATE your_table SET COLUMN1 = 'New Value' WHERE COLUMN2 = 'Value 2'";
$statement = oci_parse($connection, $query);
oci_execute($statement);
// 关闭查询和数据库连接
oci_free_statement($statement);
oci_close($connection);
?>
四、注意事项
- Oracle Instant Client 官网下载非常慢,建议直接走站内资源下载。
- rpm包安装工具alien可能会无法下载,最好换阿里云的源地址。