1、Ubuntu14.04安装Oracle Instant Client
1.1安装环境
本文介绍在ubuntu14.04系统(X64)上安装Oracle Instant Client,安装版本为11.2.0.4.0(读者需要按照自己安装版本修改相应的版本号)
1.2安装RPM文件
-
在Oracle官网地址 http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 下载以下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
-
使用alien转换PRM文件到DEB文件并安装(
sudo apt-get install alien
) -
安装alien后,执行下面的命令安装Oracle客户端:
sudo alien -i oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
sudo alien -i oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
sudo alien -i oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
1.3配置Oracle环境
-
安装以下步骤新增tnsnames.ora文件:
cd /usr/lib/oracle/11.2/client64
sudo mkdir -p network/admin
sudo vi tnsnames.ora
-
填写如下内容,或者直接从oracle服务器端将相同目录下的这个文件拷贝过来。
# tnsnames.ora Network Configuration File
ZBUDCDB_STDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.126.174)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = zbudcdb_stdby)
)
)
-
链接Oracle的库文件到Oracle目录:
sudo ln -s /usr/include/oracle/11.2/client64 /usr/lib/oracle/11.2/client64/include
1.4配置环境变量
在登录用户的profile中增加以下内容:
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG="AMERICAN_AMERICA.UTF8"
测试:
sqlplus 'name/password@10.100.126.174:1521/ZBUDCDB_STDBY'
如果报错:
sqlplus: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory,运行以下命令安装
libaiosudo apt-get install libaio1 libaio-dev
2、PHP5.6编译安装oci8拓展
准备oci8源码 oci.zip、安装php5.6
2.1 安装编译工具(phpize)
sudo apt install php5.6-dev
2.2 在ubuntu中创建源文件目录,解压源码
mkdir oci8
mv oci8.zip oci8
cd oci8
unzip oci8.zip
2.3编译安装oci8
phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib --with-php-config=/usr/bin/php-config
make
make test #这边我出现了很多fail和bug,我没有管它继续安装了,最后oci8还是成功安装了
make install
2.4重启php和nginx服务
sudo service php5.6-fpm restart
sudo service nginx restart
2.5查看phpinfo中是否有oci8扩展
2.6 php测试代码
$connection = oci_connect(self::ORACLE_DB_USER,self::ORACLE_DB_PWD,self::ORACLE_DB_CONNECT_STR,self::ORACLE_DB_CHARSER);
if(!$connection){
return genInfoTip(CODE_FAIL, '数据库连接失败');
}
$handel_remain = oci_parse($connection,$sql); //编译sql语句
oci_execute($handel_remain,OCI_DEFAULT); //执行
$info = array();
while ($row = oci_fetch_array($handel_remain,OCI_ASSOC+OCI_RETURN_NULLS)) {
$info[] = $row;
}
ocilogoff($connection);
if (empty($info)) {
return genInfoTip(CODE_FAIL, '未找到记录['.$sql.']');
}
return genInfoTip(CODE_OK, $info);