如何不用安装Oracle客户端也能使用p/l sql
前言
总觉得使用p/l sql 必须得安装Oracle客户端有些繁琐,于是就网上学习了一下如何在不安装Oracle客户端就能使用p/l sql,结合了几篇文章才实现,我这里做一下详细归纳。
实操
其实安装Oracle客户端只是帮忙做了一些必要的配置,我们手动配置就可以实现了不安装Oracle直接使用p/l sql了:
- 下载Instant Client ,虽然不用oracle客户端,但是也要用到一个工具包–instant client,可以到oracle官网下载(https://www.oracle.com/database/technologies/instant-client/downloads.html);根据你用的p/l sql是32位还是64位下载对应的Instant Client,我下载的是Name为Basic Package的11.2的版本,根据自己需要去选择,各版本有啥区别我也不太明白,还有SQL*Plus版的,个人猜测是支持sql plus命令行控制台;
- 将下载好的压缩包解压到特定的目录,我是解压到E:Oracle\路径下的,所以我解压后的路径是:E:Oracle\instantclient_11_2,然后在此路径下新建文件夹 network ,在 network 下再新建一个文件夹 admin ,在此 admin 文件夹下新建文件 tnsnames.ora 文件 ,文件中的内容如下:自己修改SERVICENAME 还有IP和DBname
SERVICENAME=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT= 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = DBname)
)
);
如果有tnsnames.ora直接粘贴到admin即可,
我是将以前安装的Oracle客户端下此文件直接粘贴过来使用的;
- 设置环境变量 ,右键我的电脑-》属性-》高级(win7和win8为高级系统设置)-》环境变量-》新建系统变量
变量名:NLS_LANG
变量值:AMERICAN_AMERICA.ZHS16GBK
该变量值我设置的是:SIMPLIFIED CHINESE_CHINA.ZHS16GBK;也有人设置的是:AMERICAN_AMERICA.AL32UTF8;说是依照实际情况确定变量值,应该是跟数据库设置的字符集有关系;如果连接上数据库后查询出来的汉字不是乱码说明设置的应该就是对的了;
再新建变量
变量名:TNS_ADMIN
变量值: E:\Oracle\instantclient_11_2\network\admin
-
安装p/l sql(如果先安装好的就直接打开),然后打开,然后找到首选项-》连接,如下图设置Oracle主目录名:就是上面创建admin文件夹的目录,以及设置OCI库: E:\Oracle\instantclient_11_2\oci.dll;
-
重新打开p/l sql,此时数据库可以选到了,如下图
上图中数据库 NX_AP 就是第2步设置的SERVICENAME
可能会遇到的问题
Initialization error不能初始化
如果上面设置完成后,打开p/l sql连接数据库弹出报错Initialization error不能初始化 "E:\Oracle\instantclient_11_2\oci.dll"你确认已经安装了64位Oracle Client吗?
。
这个是因为你的p/l sql是64的软件,而你下载的Instant Client压缩包是32位的;要么你改用32位p/l sql,要么就重新下载64位的Instant Client;
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
在连接数据库的时候报这个错有可能你连接的是一个关闭了的数据库,所以导致连接不上;