`
wzy126126
  • 浏览: 6971 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Oracle的NLS设置

阅读更多
一:介绍一个概念:
  NLS  ‘National Language Support (NLS)’ 从概念我们看出这个参数实际上定义了数据库的存放数据的语言环境,当我们设定一种nls的时候实际上我们是为oracle在存放数据时指定了他的语种所特有的一些表达形式,比如我们选择chinese,那么它的中文字符如何存放,按什么规则排序,货币如何表示,日期格式也就被设定了。
  
  二:如何查询我们的数据库中到底使用的是什么字符集
  SQL> select * from V$NLS_PARAMETERS;
  NLS_LANGUAGE                     SIMPLIFIED CHINESE
  NLS_TERRITORY                          CHINA
  NLS_CURRENCY                           RMB
  NLS_ISO_CURRENCY                         CHINA
  NLS_NUMERIC_CHARACTERS                      .,
  NLS_CALENDAR                         GREGORIAN
  NLS_DATE_FORMAT                       DD-MON-RR
  NLS_DATE_LANGUAGE                  SIMPLIFIED CHINESE
  NLS_CHARACTERSET                       ZHS16GBK
  NLS_SORT                             BINARY
  NLS_TIME_FORMAT                      HH.MI.SSXFF AM
  NLS_TIMESTAMP_FORMAT             DD-MON-RR HH.MI.SSXFF AM
  NLS_TIME_TZ_FORMAT                  HH.MI.SSXFF AMTZR
  NLS_TIMESTAMP_TZ_FORMAT         DD-MON-RR HH.MI.SSXFF AM TZR
  NLS_DUAL_CURRENCY                        RMB
  NLS_NCHAR_CHARACTERSET                  AL16UTF16
  NLS_COMP                             BINARY
  NLS_LENGTH_SEMANTICS                       BYTE
  NLS_NCHAR_CONV_EXCP                       FALSE
  其中nls_language表示了中文显示方式,nls_characterset是字符集设定,另外date,time等为日期时间的格式,currency是货币格式。
  
  三:存在问题及解决方法
  我们在使用字符集过程中主要存在两种问题。
  
  一是我们在查询时显示中文部分显示乱字符。
  这一般是由于服务器端的字符集设定与客户端的字符集设定不同造成的。只要将两者修改一致就可以解决问题。
  在windows里需要到注册表里local machine-software-oracle-home0里更改nls_lang,unix下需要在.profile或这.bash_profile(根据你用的shell)里更改nls_lang.
  二是我们在导入数据时提示字符集不匹配问题。(有些可以兼容的不用管)
  解决方法目前我看到3种
  1:)exp/imp与sql*plus一样是客户端产品,因此他的字符集是由服务端的nls_lang所设定的。用exp导出备份的export file时,字符集的设定也被存放在export file里。这就是有些人在imp发生字符无法转换时更改export file文件头的原理。(相关内容可以看看http://chinaunix.net/forum/viewtopic.php?t=22352& amp;highlight=字符)
  2:) SQL > create database character set US7ASCII 
  * create database character set US7ASCII 
  ERROR at line 1: 
  ORA-01031: insufficient privileges 
  ---- 你会发现语句执行过程中,出现上述错误提示信息,此时不用理会,实际上ORACLE数据库的字符集已被强行修改为US7ASCII,接着用imp命令装载数据。等数据装载完成以后,shutdown 数据库,再startup 数据库,用合法用户登录ORACLE数据库,在sql>命令提示符下,运行select * from V$NLS_PARAMETERS,可以看到ORACLE数据库字符集已复原,这时再查看有汉字字符数据的表时,汉字已能被正确显示。 
  3:)用数据管道导入数据
  这种方法我早期用过pb6的数据管道,将数据管道连接至需要导入导出的两个数据库进行数据传输,传输后中文显示没有问题。
  4:)更该数据字典props$  >8.1
  1. )Use SQL*Plus connect to database as user SYS 
  2. )Issue this below command 
  SQL> UPDATE PROPS$ SET VALUE$='xxx' WHERE NAME='NLS_CHARACTERSET'; 
  3.) Shutdown database and restart it 
  最后添加一个关于字符集可以自动转换方面的(在imp时):
  Warning You can't change character set of current database that have number of bits greater than the new one. For example, 
  我理解就是7-8 can,8-8ican,8-8cannot,8-7cannot
  US7ASCII -> WE8ISO8859P1 => Can 
  TH8TISASCII -> US7ASCII => Cannot 
  WE8ISO8859P1 -> TH8TISASCII => Cannot 
  TH8TISASCII -> WE8ISO8859P1 => Can 
  US7ASCII -> TH8TISASCII => Can
分享到:
评论

相关推荐

    Oracle的NLS_DATE_FORMAT设置(日期格式设置)_ITPUB博客.mhtml

    Oracle的NLS_DATE_FORMAT设置(日期格式设置)_ITPUB博客.mhtml

    oracle汉字转拼音package_(UTF8)

    1. **Oracle NLS设置**:由于我们需要处理UTF8编码的汉字,因此必须确保Oracle数据库的NLS参数正确设置。NLS_LANGUAGE和NLS_CHARACTERSET应与UTF8兼容,以支持多语言环境。 2. **汉字转拼音库**:这个包可能内部...

    Oracle客户端 NLS_LANG 的设置方法

    ### Oracle客户端 NLS_LANG 的设置方法 #### 一、NLS_LANG 参数的组成与意义 在Oracle客户端中,`NLS_LANG`是一个重要的环境变量,它用于定义客户端的语言环境设置,包括语言、地域以及字符集等。这对于确保客户端...

    设置ORACLE时间格式

    运行该文件后,会将特定的NLS设置写入Windows注册表,从而影响连接到Oracle数据库的客户端应用。 总之,设置Oracle时间格式涉及多个层面,包括数据库会话、服务器配置、应用程序逻辑以及客户端环境。理解并正确使用...

    oracle10g(nls_charset12.jar)以及oracle11g (orai18n.jar)

    `nls_charset12.jar`是Oracle 10g中的一个组件,其中“NLS”代表“National Language Support”,这个包主要涉及Oracle数据库的字符集支持。字符集决定了数据库如何存储、检索和比较文本数据。在Oracle 10g中,`nls_...

    Oracle的NLS参数在开发与维护中的设置问题分析.pdf

    本文通过一个实际问题的分析,深入探讨了Oracle NLS_DATE_FORMAT参数在中文环境下的设置方法。 首先,文章提到的一个典型问题是在插入含有日期字段的记录时,由于日期格式不匹配导致的"ORA-01843:无效的月份"错误。...

    Oracle数据库参数设置技术手册

    Oracle数据库参数设置技术手册 Oracle数据库参数设置技术手册是 Oracle数据库管理中最重要的技术手册之一,它涵盖了 Oracle数据库参数设置的技术细节。 Oracle数据库参数设置技术手册的主要内容包括 Oracle内存结构...

    oracle class12.jar nls_charset12.jar存储过程接收数组空值

    `class12.jar`主要包含了JDBC驱动程序,而`nls_charset12.jar`则涉及Oracle的NLS(National Language Support)特性,主要用于处理字符集和国际化设置。在处理存储过程时,尤其是涉及到数组参数时,这两个库可能会起...

    oracle设置日期格式

    ### Oracle 设置日期格式 在Oracle数据库管理中,正确地设置日期格式对于数据处理至关重要。本文将详细介绍如何在Oracle环境中设置日期格式,包括通过会话级和系统级进行配置的方法,并探讨不同场景下的应用实例。 ...

    ORACLE 连接设置方法

    ### ORACLE 连接设置方法详解 #### 一、概述 在进行ORACLE数据库操作时,经常需要通过不同的方式进行连接,尤其是远程连接。本文将详细介绍几种常用的ORACLE连接设置方法,重点聚焦于远程连接的方式。这包括但不...

    oracle 字符集设置

    ### Oracle 字符集设置 #### 概述 在Oracle数据库管理与应用开发中,字符集的正确配置至关重要,尤其是在处理不同字符集之间的数据交换时。本文将深入探讨Oracle字符集的相关概念,包括如何通过设置环境变量来修改...

    修改Oracle字符集(character set)

    在这个过程中,**客户端的字符集设置**非常重要,特别是`NLS_LANG`参数的设置。该参数包括以下组成部分: - **Language**:用于指定Oracle消息的语言以及日期中月份和日的显示方式。 - **Territory**:用于定义货币...

    安装oracle数据库的环境变量设置

    ### 安装Oracle数据库的环境变量设置 在安装与配置Oracle数据库的过程中,正确设置环境变量是非常重要的一步。这些环境变量不仅影响着Oracle数据库的安装过程,还直接影响到数据库的正常运行与性能表现。本文将根据...

    linux 下oracle中文乱码字符集设置

    Linux 下 Oracle 中文乱码字符集设置 Linux 下的 Oracle 数据库在导入数据库时出现中文乱码问题,这是因为 Oracle 数据库中的字符集格式不支持中文。解决方法是通过修改字符集格式,将其修改成支持中文的格式,这样...

    nls_charset12.jar

    此外,理解NLS设置如何影响数据的存储和显示也是必要的,因为这可能会影响到数组中元素的表示。 在实际开发中,我们还需要注意以下几点: 1. 确保数据库和应用程序的字符集设置一致,避免因字符集不兼容导致的数据...

    nls-charset12.jar oracle 驱动

    《Oracle数据库与Java之间的桥梁:nls_charset12.jar驱动详解》 在IT行业中,数据库管理和数据处理是至关重要的部分,而Oracle数据库作为全球广泛使用的大型企业级数据库系统,其性能和功能备受赞誉。在Oracle...

    PB连ORACLE10免客户端

    2. **设置环境变量**:安装完成后,需要设置一些环境变量,比如`ORACLE_HOME`指向Instant Client的安装目录,`TNS_ADMIN`指向tnsnames.ora文件的位置,这个文件用于定义数据库连接的网络服务名。 3. **配置PB数据源...

    nls_charset12.jar oracle 10

    nls_charset12.jar 之前在csdn上下载的这个文件有问题,导致程序调试了很久 我这边上传这个没有问题

    PB如何连接Oracle数据库

    PB 如何连接 Oracle 数据库 本文将指导您如何使用 PowerBuilder 连接 Oracle 数据库,从最基本的 ODBC 配置到 DB Profile 配置和 PB 专用接口配置,整个过程简单易懂,适合初学者和高手。 ODBC 配置 在 Windows ...

    oracle Imp导入数据

    Oracle IMP 导入数据乱码问题解决方法 OracleIMP 命令是 Oracle 数据库中的一种数据导入...解决 Oracle IMP 导入数据乱码问题的关键是正确地设置 NLS_LANG 环境变量,并确保备份文件的编码方式与数据库的字符集一致。

Global site tag (gtag.js) - Google Analytics