最近接手了一个项目,服务器端数据库是oracle 11g 64位。由于主要工作不是开发,也不想在自己的电脑上安装庞大的oracle数据库,因此寻思着只通过数据库管理工具连接数据库进行一些常用的查询操作。

运行环境

服务器:windows server 2008 64位

服务器oracle版本:oracle 11g R2 64位,字符集是ZHS16GBK。

本机:windows 7 64位

需要准备的软件

1、Instant Client 12.1.0.2.0 32位和64位

Instant Client 是Oracle 公司推出的精简版客户端,官网下载地址

最新版本是12.1.0.2.0,本文分别下载了32位和64位的Basic版本。Basic版本包含了运行 OCI、OCCI 和 JDBC-OCI 应用程序所需的所有文件。

至于为什么会分别下载32位和64位的Basic版本的Instant Client,后面会详细介绍。

2、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位版本。

3、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的开发管理更强大。因此选择两个软件都安装。

安装配置

1、解压Instant Client

将32位和64位的Instant Client分别解压并重命名,本机解压及重命名路径如下:

32位:D:\Databases\Oracle\instantclient_12_1_x32

64位:D:\Databases\Oracle\instantclient_12_1_x64

2、配置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,然后重启生效。

3、在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、用户名及密码,点击确定即可连接数据库。

4、配置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

5、在PL\SQL Developer配置数据库连接

PL\SQL Developer中同样可以用Basic和TNS连接模式来进行配置。

两者的主要区别在于数据库输入项,Basic模式需要输入“主机名或IP/服务名”格式的数据连接字符串,TNS模式则可以在下拉框中选择配置好的数据库。

跟Navicat一样,推荐使用更简洁Basic模式,同时设置PL\SQL Developer保留登录历史,会方便很多。

6、解决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数据库的安装配置过程已经完结了,最后以一张图来概括整个安装配置过程。

吐槽

事实上,安装配置过程并没有想象的那么轻松,但是我们要抱着“没事儿不惹事儿,事儿来了也不怕事儿”态度挨个解决遇到的问题。主要吐槽的问题有以下几个:

问题1:Navicat报ORA-12737:Instant Client Light:unsupported server character set ZHS

16GBK

该问题是直接使用Navicat自带的instantclient_10_2造成的。

自带的采用的是Basic Lite版本的instantclient。

Basic Lite: Basic 的精简版本,其中仅带有英文错误消息和 Unicode、ASCII 以及西欧字符集支持

Basic: 运行 OCI、OCCI 和 JDBC-OCI 应用程序所需的所有文件,包含中文字符集。

解决办法就是换个Basic版本的instantclient。

问题2:Navicat报Cannot load OCI DLL, 193

可以点击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连接数据库,因此我一直怀疑自己解压错了,反复的试错,浪费了不少时间才醒悟过来。

参考文章

  1. http://jingyan.baidu.com/article/a3aad71aa9bfefb1fa00964d.html
  2. http://1249479040qq.iteye.com/blog/1991367
  3. http://www.cnblogs.com/xwdreamer/p/3649993.html
  4. http://www.educity.cn/wenda/583545.html
  5. http://blog.csdn.net/jbgtwang/article/details/7702897
  6. http://wiki.navicat.com/zh-chs/index.php/%E9%9C%80%E8%A6%81_Instant_client

在64位Win7中使用Navicat Premium 和PL\SQL Developer连接Oracle数据库备忘的更多相关文章

  1. 使用Navicat Premium 和PL\SQL Developer连接Oracl

    在64位Win7中使用Navicat Premium 和PL\SQL Developer连接Oracle数据库备忘   最近接手了一个项目,服务器端数据库是oracle 11g 64位.由于主要工作不 ...

  2. PL/SQL Developer连接Oracle 11g在Win8 64位系统下乱码

    PL/SQL Developer在64位系统上连接Oracle,需要安装32位Oracle client客户端,使用后,发现操作数据库出现乱码的情况.经过查找资料,解决此问题,方法如下: 需要在系统的 ...

  3. win8系统中PL/SQL Developer连接Oracle出现的问题

    注意:所有软件最后不要安装在program files (x86)下  PL/SQL Developer显示Not logged on 以管理员的身份打开PL/SQL Developer 2.   t ...

  4. 解决PL/SQL Developer 连接oracle 11g 64位中的问题

    1.错误1:Initialization error could not initialize 电脑上原本就装有oracle 11g 64位,但是PL/SQL却怎么也连接不上,报出" Ini ...

  5. 64位win7中使用vs2013为python3.4安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat异常解决方式

    问题描写叙述: 64位win7中使用vs2013为python3.4.2安装pycrypto-2.6.1插件报Unable to find vcvarsall.bat. 问题分析: 1.源代码分析,查 ...

  6. PL/SQL Developer连接本地Oracle 11g 64位数据库和快捷键设置

    1.登录PL/SQL Developer 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...

  7. PL/SQL Developer连接本地Oracle 11g 64位数据库

    转摘:http://www.cnblogs.com/ymj126/p/3712727.html 用于学习,笔记,以备后用. 1.登录PL/SQL Developer 这里省略Oracle数据库和PL/ ...

  8. pl/sql developer 连接本地ORACLE 11g 64位数据库

    1.登录PL/SQL Developer 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program Files ...

  9. PL/SQL Developer连接本地64位Oracle数据库

    1.安装oracle Clinet 首先到Oracle官网上去下载一个Oracle 11g Client(我的是11g的oracle),不过需要先申请一个Oracle 帐号,才能下载. 目前下载地址: ...

随机推荐

  1. Lambert漫反射.BLinnPhong及Phong模型 Unity自带的在Lighting.cginc里

    1.漫反射 此模型属于经验模型,主要用来简单模拟粗糙物体表面的光照现象 此模型假设物体表面为理想漫反射体(也就是只产生漫反射现象,也成为Lambert反射体),同时,场景中存在两种光,一种为环境光,一 ...

  2. django-crontab定时任务

    django-crontab实现定时任务 1 django-crontab安装 django-crontab安装: django-crontab加入:只需要将INSTALLED_APPS即可.如下代码 ...

  3. hdu 5029 Relief grain(树链剖分+线段树)

    题目链接:hdu 5029 Relief grain 题目大意:给定一棵树,然后每次操作在uv路径上为每一个节点加入一个数w,最后输出每一个节点个数最多的那个数. 解题思路:由于是在树的路径上做操作, ...

  4. xcode6 升级到xcode7 产生的问题

    当初作为第一个吃螃蟹的人,第一天就把xcode升级到了xcode7,结果报了一堆错,网上也没有解决方案,于是果断退到xcode6.这两天看时机成熟,升到了xcode7,在升级后,会有许多问题,在此罗列 ...

  5. javascript高级编程笔记03(正则表达式)

    引用类型 检测数组 注:我们实际开发中经常遇到要把数组转化成以逗号隔开,我以前都是join来实现,其实又更简单的方法可以用toString方法,它会自动用逗号隔开转换成字符串,其实toString内部 ...

  6. Java的native关键字---JAVA下调用其他语言的关键词

    今天研究Java基础类库,Object类的时候,发现了一个关键字:native 咦?这是个什么东东?它认识我,我可不认识它! 嘿嘿,没关系,baidu一下. java native关键字 一. 什么是 ...

  7. <context-param>与<init-param>的区别与作用(转)

    <context-param>的作用:web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件we ...

  8. Java数据类型及运算

    (一),Java基本类型及运算 注释:可以用于生成API: 命令如:javadoc -d apidoc windowtitle hhh -doctitle aaa  -header bbbb -ver ...

  9. CLR 简介

    (一)CLR介绍 CLR是一个可以由多编程语言使用的运行时,CLR的核心功能:内存管理,程序集加载,安全性,异常处理,线程同步等等.可以被很多属于微软系列的开发语言使用. 事实上,在运行时,CLR根本 ...

  10. HashTable和HashMap

    参考自: http://blog.csdn.net/tgxblue/article/details/8479147 HashMap和HashTable的异同: 1 HashMap是非线程安全的,Has ...