Linux安装宝塔,OCI8,连接ORACLE数据库
https://www.cnblogs.com/YALSI/p/16677974.html
基础环境
- centos7
安装BT宝塔
网址:https://www.bt.cn/download/linux.html
安装ORACLE客户端
下载地址:
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
安装包:
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
PS: 前两个都必须安装,devel版本就是SDK
安装命令:
rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
参考命令:
rpm -qa | grep oracle // 查看oracle是否安装
rpm -qa // 查看所有已安装的人rpm包
rpm -e oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm // 卸载已安装的rpm包
rpm -ivh --force oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm // 强制安装rpm包
添加环境变量:
vi /etc/profile
# 加入以下几行
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64:$LD_LIBRARY_PATH
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
# 命令行输入以下语句使环境配置立即生效
source /etc/profile
建立软连接:
64位系统需要创建32位的软链接(这里可能是一个遗留bug,不然后面编译会出问题)
ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client
# 防止(pdo_oci可能不支持oracle11g,需要做个软链接成作为oracle10版本才能编译过去):
ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1
ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1
安装php 的 oci8扩展
扩展地址:
https://pecl.php.net/package/oci8
根据PHP版本安装相应的oci8版本
点击 “Version” 版本,进去详情页:
使用 “pecl” 命令进行安装:
pecl install oci8-2.2.0
安装过程中添加参数:instantclient,/usr/lib/oracle/11.2/client/lib
注意事项:
使用安装php扩展包pecl命令是出现ERROR: failed to run `phpize‘
问题原因:php配置文件 php.ini 中将“popen”函数禁用了
解决方法:打开 php.ini 文件,将禁用函数“popen”删除。
错误:
1)、 ORA-12541: TNS: 没有监听器
服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:
$ lsnrctl start
2)、 ORA-12154: TNS: 无法处理服务名
检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Windows下如D:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)里每项服务的首 行服务名称前不能有空格。
3)、 ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的SERVICE_NAME
打开Net Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。同时检查sqlnet.ora,例如如果想要采用简便连接方式连接就需要在NAMES.DIRECTORY_PATH参数中添加EZCONNECT。
4)、Ora-12514:TNS:监听程序当前无法识别链接描述符中请求的服务
该问题是由于缺少监听器的SID_LIST描述项引起的,采用netca进行配置的时候经常不会生成SID_LIST,导致连接出现问题
5)、ORA-12170: TNS:Connect timeout occurred :超时
是否开启白名单 是:把请求端IP加入; 否:服务端防火墙端口是否已开启