网上已经有很多配置PL\SQL Developer的教程了,但是很多是比较早的教程了,并且软件版本也计较旧了。今天我来讲一下安装最新版本的过程和遇到的一些问题。
首先,我的环境如下:
个人PC OS:Win 7 64位
ORACLE 版本:
12.1.0.2.0 64位的版本
在这里插入图片描述

  1. 在PL\SQL Developer官网,下载最新的64位版本,我下载的是13的版本。
    在这里插入图片描述
  2. 在ORACLE 官网,下载 instant client文件。
    官网地址如下:https://www.oracle.com/database/technologies/instant-client/downloads.html
    官网里有很多版本的instant client, 这里,一定要下载与你的ORALCE数据库版本一致的。
    官网提供两种,basic和light两个包,light是轻量级的,我没有测试过。这里我们下载basic的。
    我下载的是instantclient-basic-windows.x64-12.1.0.2.0.zip 这个文件。
    在这里插入图片描述
  3. 解压下载的instantclient文件,然后在文件夹内建立一个network文件夹,然后在network内再建立一个admin文件夹,然后将 tnsnames.ora文件拷贝到这个目录。其目录结构为:instantclient_12_1\network\admin\tnsnames.ora
    tnsnames.ora文件,可以直接从ORACLE安装的服务器上拷,其在我的DB服务器的路径为:/u01/app/oracle/product/12.1.0/dbhome_1/network/admin
    大家可以参考。
    tnsname.ora文件内容如下,也可以手动配置。
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
  1. 打开PL\SQL Developer软件,不用登陆,然后点开配置页面,配置ORACLE HOME和OCI library两个选项。
    1)ORACLE HOME配置为之前下载的instance client路径,我的为 C:\Software\instantclient_12_1
    2) OCI library配置为instance client路径+ oci.dll,我的为C:\Software\instantclient_12_1\oci.dll
    在这里插入图片描述
  2. 最后保存,重启PL\SQL Developer软件,在登录界面,如果Database下拉框里能出来你的数据库名字,则说明tnsnames.ora文件被成功读取到了。下面的Connect as下拉框里能出来,则说明instant client被读取到了。
    输入密码,看是否能登录。登录之前,请使用lsnrctl status命令,查看数据库listener的状态,确保已打开。如果没有打开,可以使用lsnrctl start 命令打开
    在这里插入图片描述
  3. 登录成功后,执行一个查询,正常输出,大功告成。
    在这里插入图片描述

最后,说明一个我遇到的问题。
我之前安装完PL\SQL Developer后,instant client路径也配置了,可以正常登录PL\SQL Developer,但是查询的时候,没有数据输出。当时效果如下:
在这里插入图片描述
遇到这个问题之后,找遍了全网,也没发现有人遇到和我一样的问题,最后自己研究了好久,才发现了问题的关键:instant client版本和数据库不匹配
我之前装的instant client版本是19.3,而我数据库版本是 12.1的,高于了数据库的版本,所以在我的win 7 电脑上就出现了奇葩问题。
但是,在我公司的PC上,系统是win server 2012, 安装19.3版本的instant client,却可以正常连接使用,不知道是什么原因,可能跟系统版本有关系吧。
所以,我之前的教程才强调,instant client版本和ORACLE 版本请尽量一致,避免出现莫名其妙的问题
这也是我写这篇教程的原因,希望有人再遇到没有输出的问题,知道怎么解决。

另外,如果遇到中文乱码,where条件传中文值无匹配条目的情况,都属于客户端字符集与数据库字符集不一致的问题。
解决方法:
先查询数据库的字符集:
SELECT USERENV(‘LANGUAGE’) FROM DUAL;
在这里插入图片描述
然后配置环境变量NLS_LANG的值与数据库字符集一致
在这里插入图片描述

有的教程里还提到,要配置好多环境变量,比如 TNS_ADMIN、path之类的。不过,经过我的测试,其实是不需要的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐