PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验

一、问题现象及解决方法

现象:

1.PL/SQL 无法登录64位数据库

2.在PL/SQL developer中输入中文,保存后,中文变成'??

'这种乱码符号

3.导入带有中文的数据后,中文数据变成'?

?'这种乱码符号

环境:

1.windows7 64位系统

2.oracle11g 64位系统

3.PL/SQL developer 9.0

解决方法:

1.下载windows32位的instantclient包,并放到某个文件夹下。如果D:\instantclient

2.拷贝D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN到D:\instantclient下

(如果oracle11g安装文件夹是D:\App\Administrator\Product\11.2.0\dbhome_1\)

3.把tnsnames.ora文件放到D:\instantclient\Network\Admin文件夹下

4.把D:\instantclient加到操作系统的Path路径的最前面。

5.添加系统环境变量TNS_ADMIN变量的值为D:\instantclient

6.PL/SQL Developer的工具首选项的Oracle主文件夹名为D:\instantclient,OCI库为D:\instantclient\OCI.DLL

7.核对Oracle11g的字符集和操作系统的字符集是否一致。一致才不会乱码,如果需一致为ZHS16GBK。

8.假设Oracle11g字符集不是ZHS16GBK。改动oracle11g的字符集为ZHS16GBK

9.添加操作系统环境变量NLS_LANG变量的值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK或AMERICAN.ZHS16GBK

二、经验教训

   网络上对于此类问题。大多也是这么解决的。我依照网络上的方法试了非常多次。还重装过几次Oracle。折腾非常久终于才攻克了乱码问题。

   之所以折腾非常久,是由于验证方法上出现了失误,在问题解决之前,我一直认为要把之前输入的中文变成的‘????',使之再次变成中文才算解决这个问题,

   实际上再次录入中文。保存后不变成‘???’即解决乱码问题,所以细节非常重要。

有的时候,在普遍的方法都是一样的方法的时候,那么这样的方法应该是奏效的,至于一次次   的操作后,还没解决这个问题,应该冷静的想想操作过程。想想细节,问题可能就出在操作细节上,验证方法上。

三、相关知识

1、怎样查看windows操作系统当前使用的字符集

Chcp

显示活动控制台代码页数量,或更改该控制台的活动控制台代码页。假设在没有參数的情况下使用,则 chcp 显示活动控制台代码页的数量。

语法

chcp [nnn]

參数

指定代码页。

下表列出了全部支持的代码页及其国家(地区)或者语言:

代码页       国家(地区)或语言

437          美国

708          阿拉伯文(ASMO 708)

 720          阿拉伯文(DOS)

 850          多语言(拉丁文 I)

852          中欧(DOS) - 斯拉夫语(拉丁文 II)

855          西里尔文(俄语)

857          土耳其语

860          葡萄牙语

861          冰岛语

862          希伯来文(DOS)

 863          加拿大 - 法语

865          日耳曼语

866          俄语 - 西里尔文(DOS)

869          现代希腊语

 874          泰文(Windows)

 932          日文(Shift-JIS)

 936          中国 - 中文简体(GB2312)

 949          韩文

 950          繁体中文(Big5)

 1200         Unicode       

1201         Unicode (Big-Endian)

 1250         中欧(Windows)

 1251         西里尔文(Windows)

 1252         西欧(Windows)

 1253         希腊文(Windows)

 1254         土耳其文(Windows)

 1255         希伯来文(Windows)

 1256         阿拉伯文(Windows)

 1257         波罗的海文(Windows)

 1258         越南文(Windows)

 20866        西里尔文(KOI8-R)

 21866        西里尔文(KOI8-U)

 28592        中欧(ISO)

 28593        拉丁文 3 (ISO)

 28594        波罗的海文(ISO)

 28595        西里尔文(ISO)

 28596        阿拉伯文(ISO)

 28597        希腊文(ISO)

 28598        希伯来文(ISO-Visual)

 38598        希伯来文(ISO-Logical)

 50000        用户定义的

 50001        自己主动选择

 50220        日文(JIS)

 50221        日文(JIS-同意一个字节的片假名)

 50222        日文(JIS-同意一个字节的片假名 - SO/SI)

 50225        韩文(ISO)

 50932        日文(自己主动选择)

 50949        韩文(自己主动选择)

 51932        日文(EUC)

 51949        韩文(EUC)

 52936        中文简体(HZ)

 65000        Unicode (UTF-7)

 65001        Unicode (UTF-8)

在Windows平台下,直接在命令行中,输入下面命令,就会显示windows操作系统当前使用的字符集:

chcp

影响Oracle数据库字符集最重要的參数是NLS_LANG參数。

 

它的格式例如以下: NLS_LANG = language_territory.charset

 

它有三个组成部分(语言、地域和字符集),每一个成分控制了NLS子集的特性。

 

当中:

 

Language: 指定server消息的语言, 影响提示信息是中文还是英文

 

Territory: 指定server的日期和数字格式,

 

Charset:  指定字符集。

 

如:AMERICAN _ AMERICA. ZHS16GBK

 

从NLS_LANG的组成我们能够看出,真正影响数据库字符集的事实上是第三部分。

所以两个数据库之间的字符集仅仅要第三部分一样就能够相互导入导出数据。前面影响的仅仅是提示信息是中文还是英文。

怎么查看数据库版本号

 select * from v$version   包括版本号信息,核心版本号信息,位数信息(32位或64位)等 

 

2、查看数据库字符集

 数据库server字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。

 

client字符集环境select * from nls_instance_parameters,其来源于v$parameter,表示client的字符集的设置,可能是參数文件,环境变量或者是注冊表

会话字符集环境select * from nls_session_parameters,其来源于v$nls_parameters。表示会话自己的设置。可能是会话的环境变量或者是alter session完毕,假设会话没有特殊的设置,将与nls_instance_parameters一致。

查询oracle server端的字符集

有非常多种方法能够查出oracle server端的字符集。比較直观的查询方法是下面这样的:

 

 SQL> select userenv('language') from dual;

 

 USERENV('LANGUAGE')

 

----------------------------------------------------

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验的更多相关文章

  1. PL/SQL Developer如何连接64位的Oracle图解

    在64位Win7系统上安装64位的Oracle数据库,但是没有对应的64位PL/SQL Developer,此时就不能使用PL/SQL Developer来进行直接连接的,所以要想实现连接还得需要其他 ...

  2. [Oracle] - 使用32位 PLSQL(PL/SQL Developer)登陆64位Oracle失败之解决

    配置环境 Oracle服务端oracle_winx64_12c_database.iso Oracle客户端instantclient-basiclite-nt-12.1.0.1.0.zip 集成开发 ...

  3. Win8.1OS64位oracle11安装配置及PL/SQL Developer怎样连接64位oracle

    Oracle 为什么选择oracle 1.oracle可以在主流的平台上执行,而相对于sql server仅仅支持windows,而windows在wr手里攥着呢,所以你懂的.在安全性上来讲,非常多地 ...

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

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

  5. PL/SQL Developer 登录 Oracle 12c和Win10下安装Oracle 11g

    安装了Oracle 12c 后使用PL/SQL Developer怎么也不能连接到Oracle 12c.网上找一下,按照fcflying所说的操作成功了,所以做个笔记: 1)安装Oracle 12c ...

  6. PL/SQL Developer 中的问题:Initialization error Could not load ".../oci.dll"解决方法

    ---------------------------------------------------------------------------------------------------- ...

  7. PL/SQL Developer从11.0.6版本开始32/64为之区分

    PL/SQL Developer从11.0.6版本开始32/64为之区分 在PL/SQL Developer11.0.6版本之前,64位Windows操作系统在使用PL/SQL Developer都未 ...

  8. PL/SQL Developer 建立远程连接数据库的配置 和安装包+汉化包+注册机

    PL/SQL Developer ,主要是讲一下如何配置PL/SQL Developer ,连接Oracle数据库. [知识点] 1.PL/SQL Developer 是什么? PL/SQL Deve ...

  9. 配置PL/SQL Developer连接Oracle数据库

    准备: PL/SQL Developer:我用的是plsqldev1005(32位) win32_11gR2_client:记住一定是32位的,因为PL/SQL Developer只认32位的 安装成 ...

随机推荐

  1. [JAVA]各种杂七杂八的东西......

    BigInteger / BigDecimal / string 一些常用的函数: 加 add减 substract乘 multiply除 divid取余 mod / remainder (remin ...

  2. ANDROID_MARS学习笔记_S01原始版_007_Handler及线程的简单使用

    一.运行结果 一.代码1.xml(1)activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.c ...

  3. Ember.js demo5

    <!DOCTYPE html> <html> <head> <meta name="description" content=" ...

  4. S3C2410 实验三——跑马灯实验

    http://www.evernote.com/shard/s307/sh/f2a748e7-34c4-4ce6-acac-82a756cc9e82/ad5813188d655e504857970db ...

  5. Getting Started Tutorial

    Getting Started Tutorial The topics contained in this section are intended to give you quick exposur ...

  6. QQ输入法个人设置

    常用 按键 外观 词库 账户 高级

  7. 逻辑运算符&& 用法解释

    A&&B 首先判断A,A成功然后判断B:A不成功则结束判断,返回false;

  8. java里的静态变量是放在了堆内存还是栈内存?

    堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对 ...

  9. c#中Lock(锁)的研究以及跨线程UI的操作

    本文只针对C#中,多线程同步所用到的锁(lock)作为研究对象.由于想更直观的显示结果,所以,在做demo的时候,就把多线程通过事件操作UI的代码也写了出来,留作备忘和分享吧.       其实多线程 ...

  10. 使用vs2010进行驱动开发的补充

    看到前面的一篇文章 ,在这里http://www.cnblogs.com/wubiyu/archive/2010/05/17/1737420.html vs2010配置驱动开发基本上按照如上所说就差不 ...