我的机器环境是 win7 64位。正常情况下,只需要安装plsql 和 oracle client,配置好 tnsname.ora 就能正常访问数据库。实际上遇到了几个问题。
1. 在tnsnames.ora 已经配好的前提下,打开 plsql,在登录界面的数据库选择中,下拉框中为空。仔细检查后排除 tnsnames.ora 配置的问题。在数据库选择框直接输入数据库名称,点击ok后报错,错误消息类似于无法加载 oci.dll,请安装 32 位的客户端。再次确认,安装的oracle 客户端版本是 32 位的。
是不是缺少某些系统库呢?于是用 depends 工具查看oci.dll,果然报缺少 msvcr71.dll. 到 system32 目录下查看,目前有 msvcr100.dll 和 110, 但没有 71 这个版本。然后又从网上搜了 msvcr71.dll 这个库,有人说需要安装 visual c++ 2005 redistributable 补丁包。于是下载安装,仍不见此文件。从网上直接这个 dll ,解压后放到 system32 下面。这下打开 plsql 都报错了。无奈仍删除它,然后把 dll 放到与 oci.dll 同目录下。这会没有问题了,下拉框见到了久违的数据库信息。
2. 点击 ok 再次报错。TNS: could not resolve the connect identifier specified. 根据网上提供的多种解决方式,都不可行。后来只设置了 TNS_ADMIN 环境变量就解决问题了。