使用Navicat Premium 和PL\SQL Developer连接Oracl
在64位Win7中使用Navicat Premium 和PL\SQL Developer连接Oracle数据库备忘
最近接手了一个项目,服务器端数据库是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连接数据库,因此我一直怀疑自己解压错了,反复的试错,浪费了不少时间才醒悟过来。
参考文章
- http://jingyan.baidu.com/article/a3aad71aa9bfefb1fa00964d.html
- http://1249479040qq.iteye.com/blog/1991367
- http://www.cnblogs.com/xwdreamer/p/3649993.html
- http://www.educity.cn/wenda/583545.html
- http://blog.csdn.net/jbgtwang/article/details/7702897
- http://wiki.navicat.com/zh-chs/index.php/%E9%9C%80%E8%A6%81_Instant_client
使用Navicat Premium 和PL\SQL Developer连接Oracl的更多相关文章
- 在64位Win7中使用Navicat Premium 和PL\SQL Developer连接Oracle数据库备忘
最近接手了一个项目,服务器端数据库是oracle 11g 64位.由于主要工作不是开发,也不想在自己的电脑上安装庞大的oracle数据库,因此寻思着只通过数据库管理工具连接数据库进行一些常用的查询操作 ...
- 【转】Win7 64bit Oracle 11g 使用PL/SQL Developer 连接时提示“SQL*Net not properly installed”
转载:http://www.cnblogs.com/xihuaodc/p/3189257.html 因为之前的Oracle不能用了,所以重新安装了64位的Oracle,安装一路正常 完了之后安装了P ...
- PL/SQL Developer连接远程Oracle数据库
转自:http://zhengdu.net/archives/152 一.首先看远程端oracle服务是否启动 如果没有启动,请启动oracle服务 ps:创建或者删除oracle监听 二.远程端or ...
- pl/sql developer连接远程数据库
本地不安装oracle client程序,直接使用pl/sql developer连接远程数据库 考虑到机子本身资源有限,一个client会占用很多资源,尝试使用不安装客户端的方式进行远程连接. 需要 ...
- PL/SQL Developer 连接Oracle数据库详细配置方法
PL/SQL Developer 连接Oracle数据库详细配置方法 近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server).本文现对监听配置作一简单介绍,给出 ...
- 使用PL/SQL Developer连接远程数据
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据 1.先到Oracle网站下载Instant Client : http://www.oracle.com/technet ...
- 配置PL/SQL Developer连接server数据库
配置PL/SQL Developer连接server数据库 远程应用server上安装client客户端软件,可在oracle官网上下载. 举例: 环境 应用server操作系统 WIN 7 本地地址 ...
- 未安装Oracle数据库,使用PL\SQL Developer连接远程数据库解决方案
使用PL/SQL远程连接Oracle服务器 背景:本地未安装oracle数据库服务器,希望远程连接Oracle服务器 1.下载oracle数据库客户端 下载64位windows的instantclie ...
- PL/SQL Developer连接Oracle 11g在Win8 64位系统下乱码
PL/SQL Developer在64位系统上连接Oracle,需要安装32位Oracle client客户端,使用后,发现操作数据库出现乱码的情况.经过查找资料,解决此问题,方法如下: 需要在系统的 ...
随机推荐
- SNMP WINDOWS系统的命令行工具下载
SNMP windows系统的命令行工具snmputil.exe下载链接:请点击
- HDU 4391 Paint The Wall 段树(水
意甲冠军: 特定n多头排列.m操作 以下是各点的颜色 以下m一种操纵: 1 l r col 染色 2 l r col 问间隔col色点 == 通的操作+区间内最大最小颜色数的优化,感觉非常不科学... ...
- V离MWare至Openstack至FDIO
离VMWare至Openstack 至FDIO --软件虚拟化和硬件虚拟化相结合 作者:廖恒 以VMWare为代表的软件虚拟化技术在企业IT中已是耳熟能详的不争现实.据在HPISS任职的好友告知,V ...
- 一个可以跑的Hadoop的WordCount程序
搭个新环境时总要折腾一下,于是干脆记下来. 程序: package com.my; import java.io.IOException; import java.util.Iterator; imp ...
- C# - Dictionary join keys or join Values
using System; using System.Collections.Generic; using System.Linq; using System.Text; public class P ...
- 使用API创建AR 贷项通知单
DECLARE --8000000063 l_dummy varchar2(240); l_customer_trx_id ra_customer_trx.customer_trx_id%type; ...
- 二元最近的共同祖先问题(O(n) time 而且,只有一次遍历,O(1) Space (它不考虑函数调用栈空间))
问题: 找到两个节点的二叉树的最近的共同祖先. 首先可以参考这个博客http://blog.csdn.net/cxllyg/article/details/7635992 ,写的比較具体,包含了节点包 ...
- 13 于C#如何获得在IP住址
首先,需要加入一个命名空间 using System.Net.NetworkInformation; using System.Net.Sockets; 以下是具体代码 GetPrivateIP(); ...
- T-SQL问题解决集锦——数据加解密(2)
原文:T-SQL问题解决集锦--数据加解密(2) 问题三.如何让指定用户可以对数据表进行Truncate操作? Truncate在对大表全删除操作时,会明显比Delete语句更快更有效,但是因为它不需 ...
- 刷牙LeetCode思考
时间已经到了不自觉地,3在五月中旬.今天正式LeetCode自由181刷牙的问题.感觉,以提高他们的算法非常有帮助. 第一个主要的深搜索,广泛搜索,DP他已经掌握7788.也有自己写的代码格公式,使用 ...