众所周知,在使用PHP(针对5.2及后续版本)和PLSQL操作oracle数据库前需要先安装客户端来部署环境,然而事实上在连接过程中仅仅只需要客户端中的几个文件罢了。完整版客户端对于我们这些数据库不在本地,仅仅需要远程操作数据库的人来说过于庞大了。
所以我们没有必要去安装动辄几百兆大的完整版客户端,仅仅只需要客户端里面的几个文件罢了。幸运的是,官方提供了客户端的basic版本,30M左右,只提供了连接所必须的文件。悲剧的是,该版本并不是完美的,使用PHP时没什么问题,但是使用PLSQL时缺少一个重要的文件,使得PLSQL无法连接远程数据库,而且该版本是没有安装程序的,所以我们还需要对其进行一些设置后才可以使用。
basic版客户端下载:
版本的选择原则上跟你远程数据库版本的大版本号一致即可,然后将下载下来的客户端解压到一个固定的位置,以后不要移动它,除非你同步它的环境变量(后面说)。右键我的电脑>属性>高级>环境变量,在系统变量的“Path变量”里,按照格式将客户端的路径添加进去即可,如“E:instantclient10;”。此时PHP已经可以正确连接远程数据库了,但对于PLSQL来说还不够,我们还需要进行一些设置。注意:系统环境变量的修改需要重启后才能生效,每次修改后需要重启一次才可以看到效果。
将以下内容保存为“tnsnames.ora”,IP地址修改成你的远程数据库的IP地址。
ORCL_192.168.10.110 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.110)(PORT =
1521))
)
(CONNECT_DATA =
(SID = orcl)
(SERVER = DEDICATED)
)
)
然后将“tnsnames.ora”放到客户端的目录里即可,接着在系统变量里添加一个新变量,变量名为“TNS_ADMIN”,变量值为你的客户端路径,如“E:instantclient10”。然后打开PLSQL,不要登录选择取消进入主界面,在工具>首选项>Oracle>连接里将Oracle主目录指向你客户端的目录,将OCI库指向你客户端下的“oci.dll”文件,保存后重启,PQSQL即可成功连接远程数据库。
如果出现乱码说明客户端的编码与远程数据库的编码不一致,此时还需要在系统变量里添加一个新变量,变量名为“NLS_LANG”,变量值为“SIMPLIFIED
CHINESE_CHINA.AL32UTF8”,我的编码是UTF8,请根据实际情况自行修改。系统变量生效后乱码问题圆满解决~