最近接手了一个项目,服务器端数据库是oracle 11g 64位。因为主要工做不是开发,也不想在本身的电脑上安装庞大的oracle数据库,所以寻思着只经过数据库管理工具链接数据库进行一些经常使用的查询操做。php
服务器:windows server 2008 64位html
服务器oracle版本:oracle 11g R2 64位,字符集是ZHS16GBK。 sql
本机:windows 7 64位数据库
一、Instant Client 12.1.0.2.0 32位和64位windows
Instant Client 是Oracle 公司推出的精简版客户端,官网下载地址。服务器
最新版本是12.1.0.2.0,本文分别下载了32位和64位的Basic版本。Basic版本包含了运行 OCI、OCCI 和 JDBC-OCI 应用程序所需的全部文件。网络
至于为何会分别下载32位和64位的Basic版本的Instant Client,后面会详细介绍。oracle
二、Navicat Premium 11.1.10 64位函数
Navicat Premium 是一套数据库管理工具,能够以单一程序同時链接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库,很是方便。工具
官方网址是:http://www.navicat.com.cn/products/navicat-premium。
因为本机是64位操做系统,所以下载最新的11.1.10 64位版本。
三、PL\SQL Developer 10.0.5.1710
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程当中的主要优点。官方网站是http://www.allroundautomations.com/plsqldev.html,本文下载的版本是10.0.5.1710,官方还提供了简体中文语言包。
给个人感受是Navicat Premium更方便,同时数据库;PL\SQL Developer更专业,oracle的开发管理更强大。所以选择两个软件都安装。
一、解压Instant Client
将32位和64位的Instant Client分别解压并重命名,本机解压及重命名路径以下:
32位:D:\Databases\Oracle\instantclient_12_1_x32
64位:D:\Databases\Oracle\instantclient_12_1_x64
二、配置Navicat Premium的OCI
其实Navicat Premium默认自带了instantclient_10_2,可是其是base lite版本的(Basic Lite: Basic 的精简版本,其中仅带有英文错误消息和 Unicode、ASCII 以及西欧字符集支持),不支持中文字符集,而本文中的服务器端oracle刚好是中文字符集,instantclient_10_2不适合,所以须要下载base版本。
将Navicat Premium中的OCI library设置为D:\Databases\Oracle\instantclient_12_1_x64\oci.dll,而后重启生效。
三、在Navicat Premium配置数据库链接
Navicat Premium中oracle有两种链接类型:Basic和TNS。
Basic
在 Basic 模式中,经过 Oracle Call Interface (OCI) 链接 Oracle。OCI 是一个应用程序界面,让程序开发人员使用第三代语言原有进程或函数呼叫来访问 Oracle 数据库及控制所有 SQL 语句运行的阶段。OCI 是一个标准数据库访问的库和动态连接库形式检索函数。
Basic模式须要输入主机名或IP地址、端口及服务名或SID。
TNS
在 TNS 模式中,须要使用在 tnsnames.ora 文件中的别名项目经过 Oracle Call Interface (OCI) 链接 Oracle 服务器。
TNS模式只须要选择网络服务名,可是以前须要新建tnsnames.ora,并配置数据库服务。
推荐使用更简洁Basic模式,能够省去复杂的tnsnames配置。本文采用的就是Basic模式。
在下图“新建链接”界面,输入链接名、链接类型、主机名或IP地址、端口、服务名或SID、用户名及密码,点击肯定便可链接数据库。
四、配置PL\SQL Developer的OCI
“首选项-Oracle-链接”界面中,配置Oracle主目录名和OCI库。
Oracle主目录名:D:\Databases\Oracle\instantclient_12_1_x32
OCI库:D:\Databases\Oracle\instantclient_12_1_x32\oci.dll
五、在PL\SQL Developer配置数据库链接
PL\SQL Developer中一样能够用Basic和TNS链接模式来进行配置。
二者的主要区别在于数据库输入项,Basic模式须要输入“主机名或IP/服务名”格式的数据链接字符串,TNS模式则能够在下拉框中选择配置好的数据库。
跟Navicat同样,推荐使用更简洁Basic模式,同时设置PL\SQL Developer保留登陆历史,会方便不少。
六、解决PL\SQL Developer查询中文表出现问号乱码问题
在PL\SQL Developer中,查询包含中文字符的表,中文会变成一段段问号,主要缘由是server与client的字符集不相同。
执行如下SQL语句查看服务器数据库字符集:
SELECT * FROM v$nls_parameters
结果以下:
主要参数为:
NLS_LAGUAGE:SIMPLIFIED CHINESE
NLS_TERRITORY : CHINA
NLS_CHARACTERSET : ZHS16GBK
所以在本机中咱们须要配置如下环境,保证服务器和本机字符集的一致。
变量名:NLS_LANG
变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
再次查询中文表,咱们会发现中文又正常了。
至此,使用客户端Navicat Premium和PL\SQL Developer经过Instant client链接服务器oralce数据库的安装配置过程已经完结了,最后以一张图来归纳整个安装配置过程。
事实上,安装配置过程并无想象的那么轻松,可是咱们要抱着“没事儿不惹事儿,事儿来了也不怕事儿”态度挨个解决遇到的问题。主要吐槽的问题有如下几个:
该问题是直接使用Navicat自带的instantclient_10_2形成的。
自带的采用的是Basic Lite版本的instantclient。
Basic Lite: Basic 的精简版本,其中仅带有英文错误消息和 Unicode、ASCII 以及西欧字符集支持
Basic: 运行 OCI、OCCI 和 JDBC-OCI 应用程序所需的全部文件,包含中文字符集。
解决办法就是换个Basic版本的instantclient。
能够点击http://wiki.navicat.com/wiki/index.php/Instant_client_required查看官方的解决办法。
可是正式查看了官方的解决办法,使得我绕了好大的弯弯才正常链接上数据库。
注意红色部分:
提醒咱们Navicat 版本 10 或如下,Navicat 只支持 32-bit instant client。
而我忽略的第一句话,理解成了Navicat 只支持 32-bit instant client,下载了32-bit instant client,可是Navicat 版本 11,注意咱们用的Navicat 版本 11,Navicat 版本 11 64位版本不支持32-bit instant client,只支持64-bit instant client,而网上的文章大部分都是Navicat 版本 10使用32-bit instant client链接数据库,所以我一直怀疑本身解压错了,反复的试错,浪费了很多时间才醒悟过来。