PL/SQL Developer 是操作 Oracle 数据库相当方便好用的工具,不过在当前64位系统普及的情况下,这个软件不支持64位,刚上手的话还有点小麻烦,网上搜了很多,有进入软件配置的,还有改什么注册表、写命令行的,估计大都是高手在说,都在授人以鱼,没人授人以渔,刚上手看起来有点乱,就稍微整理了下。
下载安装 Oracle 数据库和 PL/SQL Developer 就不说了,Oracle 个人使用推荐 Express Edition 快捷版,文件小,安起来方便,PL/SQL Developer 有中文语言包和中文说明书。
一、不支持64位客户端的问题
如果安装64位的数据库,带的客户端也是64位的,第一次运行 PL/SQL Developer 不会出 Connect as 并且会提示。
Make sure you have the 32 bits Oracle Client installed. 你确认已经安装了32位 Oracle Client 了吗?
原因是 PL/SQL Developer 通过 Oracle 客户端来操作数据库,但不支持64位客户端,和服务端版本没关系,解决方法是下载32位 Instant Client 即时客户端解压,比如解压到 D 盘改名叫 OracleClient,在 PL/SQL Developer 安装目录下的 params.ini 中添加下面这一行问题就解决了。
instantclient=D:\OracleClient
二、ORA-12560: TNS:protocol adapter error
重新登录可能出这个错误,好像都翻译成协议适配器错误,不过在这里其实就是没有找到服务器的连接信息。
原因是配置上一条后 PL/SQL Developer 就只会在那个文件夹及 network、network\admin 子目录中找 tnsnames.ora。
如果服务器在本机,解决方法是找到 tnsnames.ora 所在文件夹在 params.ini 添加类似下面这一行。
tns_admin=D:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN
如果是连接远程服务器,找到服务器的 tnsnames.ora,复制到 D:\OracleClient,参考下面这样修改就解决问题了,如果是局域网应该可以不用改。
(ADDRESS = (PROTOCOL = TCP)(HOST = 电脑名改成IP地址)(PORT = 1521))
三、中文导入导出查询乱码问题
乱码的原因无非就是源文件字符集和用来显示的字符集不一样,解决方法是通过
select userenv('language') from dual;
查询服务器数据库字符集,然后在params.ini中添加nls_lang,比如:
nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
但经过测试,这个方法可以解决大部分问题,但有些问题就纯靠人品了,比如我的 Express Edition 服务端是 AMERICAN_AMERICA.AL32UTF8,注册表中是 SIMPLIFIED CHINESE_CHINA.ZHS16GBK,需要导入的 CSV 文件编码是 UTF-8 有签名,不管怎么改都只有预览的100条数据是正确的,其它全是乱码,我找到的解决的方法是把 CSV 文件改成 GBK 编码。
四、总结一下
params.ini 是 PL/SQL Developer 的配置文件,所有配置在中文手册里面都有说明,此文件中的参数优先级低于命令行。
instantclient 定义客户端位置,有了这个就不需要 oraclehome 这类的参数了,因为是且仅是通过客户端来与服务端通信,定义这个也同时定义了 tnsnames.ora 位置。
tns_admin 定义保存服务器连接信息的 tnsnames.ora 的位置。
nls_lang 定义程序使用的语言、地区和字符集,我还没怎么搞懂怎么转换字符集的。
如果是本机,软件会自动读取 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 中的信息,只有64位需要按需配置。
如果是远端服务器,就配置客户端位置和服务器连接信息。如果连不上,那90%是防火墙的问题,检查方法是先关闭防火墙,ping 服务器,telnet 服务器ip 1521,如果可以就开放1521端口,如果不行再看服务器有没有监听,本机能不能连,监听需要需要重新配置之类。
Oracle Express Edition:http://www.oracle.com/technetwork/cn/database/database-technologies/express-edition/downloads/index.html
PL/SQL Developer:http://www.allroundautomations.com/plsqldev.html
Oracle Instant Client:http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html
说两句