我们用Navacat连接Oracle数据库的时候,会提示ORA-12737:Instant Client Light:unsupported server character set ZHS16GBK
Oracle字符集检查和修改 在部署重构版测试环境时,需要创建Oracle数据库,使用dbca创建数据库之后没有注意数据库本身的字符集,导致后续所有的数据库脚本执行后中文乱码。...在linux中NLS_LANG是一个环境变量,在windows中NLS_LANG是写在注册表中的。...userenv函数的具体使用和当前会话字符集的取值详见以下链接 oracle的userenv和nls_lang详解 3、修改Oracle Server字符集 一旦数据库创建后,数据库的字符集理论上讲是不能改变的...如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。...服务器和客户端字符集的查看和修改 4、检查Oracle Client字符集 windows查看nls_lang set NLS_LANG linux查看nls_lang echo $NLS_LANG 5
编辑手记:很多人在进行数据库导入导出操作的时候会遇到字符集的问题,今日拣选了 《循序渐进Oracle》一书中的相关章节,希望对初学Oracle的朋友有所帮助。...需要注意的是,在不同平台,以上命令的输出可能有所不同,比如在Linux平台: [oracle@jumper oracle]$ cat a.dmp |od -x |head -2 0000000 0303...,Solaris是Big-Endians,Linux是Little-Endians,所以Linux上的输出通过交换可以得到: 0303 5445 58504f52 …....字符集和Solaris上是一致的,所以也可以通过od的参数设置显示格式: [oracle@jumper oracle]$ cat a.dmp|od -t x1|head -2 0000000 03 03...而对于Oracle 10g的expdp导出文件,一切则要简单得多,在expdp的导出文件开始部分,Oracle以XML格式记录了数据的字符集信息,以下是一个单表导出文件的头信息。
本文节选于《循序渐进Oracle》 通常在现实环境中,存在3个字符集设置: 客户端应用字符集(Client ApplicationCharacter Set); 客户端NLS_LANG参数设置; 服务器端...至于这些字符能否在数据库中正常存储,就和另外的两个字符集设置紧密相关了(通常我们可以忽略应用程序的字符集,这个字符集在应用程序安装时,已经被内在的决定,并且会依据操作系统的相关设置进行选择)。...形式存放入数据库,对于其他字符,在NLS_LANG和数据库字符集之间进行转换后存入。 下面来看一下最为常见的字符集及乱码的产生。...NLS_LANG字符集与数据库字符集不同 当NLS_LANG字符集与数据库字符集不同,且NLS_LANG不同于客户端字符集设置时,存在以下两种可能。...可以用我们熟悉的字符集做一个简单的测试(测试环境是客户端代码点对应中文18030字符集,NLS_LANG设置为US7ASCII字符集,数据库CHARACTER SET为ZHS16GBK)。 ?
在Oracle数据迁徙的时候需要使源和目标数据库的字符集、版本等信息统一…… 这里是对一个数据库的设置,需要在两边进行同样的操作。...------------------------------------------------ AMERICAN_AMERICA.ZHS16GBK SYS@PROD1> startup mount ORACLE...SYS@PROD1> alter system set AQ_TM_PROCESSES=1; 重启(实验环境下强制重启) SYS@PROD1> startup force ; ORACLE instance
在Oracle中,几种常用的Unicode为UTF-8,AL16UTF8,AL32UTF8 2.Oracle所支持的字符集及分类 Oracle支持两百多种字符集,包含了单字节、可变字节以及通用字符集等...是Oracle数据库中使用基于标准Unicode字符集编码而定义的Unicode字符集 下面主要说明一下AL32UTF8、AL16UTF8 AL32UTF8 是一个bit的Unicode字符编码,...字符集转换 正如前面所描述,客户端可以使用不同于服务器端的字符集、语言环境,这些不同字符集的转换工作则由OracleNet来负责 Oracle Net会比较客户端和服务器之间的字符集,在需要的时候...Oracle Net则实现透明、自动转换字符集 一般情况下,要求服务器端的字符集是客户端的超集或相等,即使用相同的字符集 1.未正确设置NLS_LANG时容易导致数据不转换或转换错误 假定客户端使用的是...在将数据从一个Oracle数据库导出之后再导入到另外一个Oracle数据库,如果两者字符集不同,则发生转换 当导出DDL时,导出文件使用NLS_LANG指定的字符集,当指定的字符集不同于数据库字符集时
Oracle全球支持(即Globalization Support)允许我们使用本地语言和格式来存储和检索数据。通过全球支持,Oracle可以支持多种语言及字符集,得以展示数据库的强大魅力。...但是需要说明的是,有些字符集命名违背了这个规范,Oracle 8/Oralce 8i中的UTF-8是第一个打破这个命名规范的字符集。...,在Linux系统下,可以通过系统命令strace跟踪到这些调用行为。...如果没有了字符集文件,应用软件(包括SQL*Plus和Oracle执行软件)都是无法完成初始化的。...再来看一下执行导入时Oracle的一些判断和处理过程(以Oracle 8i为例): (1)首先确定导出数据库字符集环境。
Oracle 数据库分为数据库字符集和客户端字符集两种! 很多刚接触的朋友经常会搞混这两个字符集,数据库字符集是在创建数据库时进行指定的,不建议更改!而客户端字符集是可以随时更改的!...查询数据库字符集: select * from nls_database_parameters t where t.parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET...'); 查询客户端字符集: SELECT USERENV('language') FROM DUAL; 如何修改客户端字符集?...Windows: set NLS_LANG=american_america.AL32UTF8 set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK Linux:...export NLS_LANG=american_america.AL32UTF8 export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK 以上为常用客户端字符集
Oracle 与 MySQL 的差异分析(10):字符集 1 数据库支持的字符集 1.1Oracle Oracle创建数据库时指定字符集,一般不能修改,整个数据库都是一个字符集。...1.2 MySQL MySQL的字符集比较灵活,可以指定数据库、表和列的字符集,并且很容易修改数据库的字符集,不过修改字符集时已有的数据不会更新。...2.1Oracle 在Oracle中,可以用dump查询数据的编码,使用lengthb查询字节的长度。...3.1Oracle 通过环境变量NLS_LANG配置客户端字符集。...Linux下会话级设置方法:export NLS_LANG =AMERICAN_AMERICA.AL32UTF8 Windows下会话级设置方法:set NLS_LANG =AMERICAN_AMERICA.AL32UTF8
对于不同国家或地区数据库通常会使用不同的字符集,而全球性企业也会选择使用统一编码的数据库字符集。Oracle数据库统一字符集为AL32UTF8,可以参考:Oracle 全球化特性与字符集。...对于不同的字符集容易出现转换乱码,同时不同字符集也影响存储空间的占用。 如本文下面的描述。...一、字符集环境变量对数据库的影响 [oracle@java_1 ~]$ env |grep LANG LANG=zh_CN.UTF-8 ###OS环境变量 SQL> select * from...###下面将其设置为繁体字符集,报ORA-12705,如下: [oracle@java_2 ~]$ export NLS_LANG="CHINESE_TAIWAN.ZHT16MSWIN950" [oracle...7、参考:Oracle 全球化特性与字符集 264157.1
:一般为utf-8,即echo $LANG 结果为en_US.UTF-8 或zh_CN.UTF-8 export NLS_LANG=american_america.utf8 测试:客户端Linux,系统字符集为...服务器上oracle字符集 如何确定当前字符集设定,何时可以更改字符集。...Oracle不建议后期更改数据库字符集!...服务器操作系统字符集(暂时忽略) ps: 1.因为sql*plus 本身没有字符集,依赖于所在操作系统的字符集,而在远端linux上的oracle也是无法直接访问到windows上的字符集,所以依靠sql...2.因为oracle软件本身有字符集,当软件有自己的字符集时,就不用操作系统的字符集,所以服务器操作系统字符集的因素可以暂时忽略。
【Oracle 数据库查询字符集】 查询出 NLS_NCHAR_CHARACTERSET 参数的值即是数据库的字符集。...select * from nls_database_parameters; 【PG 数据库查询字符集】 正常从 pg_database 查出来的 encoding 是数字 6,通过 pg_encoding_to_char
安装软件提示 UnicodeDecodeError: 'utf-8' codec can't decode byte 提示字符集错误 使用 echo $LANG zh_CN.GB18030 所以需要修改字符集
关键字:oracle安装 昨天安装了个oracle19c,但在导入数据库时发现原来数据库的字符集设置错了,导致数据库文件无法正常导入并还原。今天又折腾了一半天查找如果修改oracle的字符集的操作。...本文适用oracle19c、oracle12c [root@localhost ~]# su -l oracle [oracle@localhost ~]$ sqlplus /nolog SQL> conn...ORACLE instance shut down. SQL> startup mount ORACLE instance started....:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更 改: SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; Database...ORACLE instance shut down. SQL> startup ORACLE instance started.
如果编码为GBK 那么两个字节存储一个汉字 varchar2最多为4000个字节 也就是说当字符编码为GBK的时候varchar2最多可以容纳2000个汉字;
操作系统字符集 # 查看操作系统支持的所有字符集 $ locale -a # 查看操作系统支持的中文字符集 $ locale -a | grep zh # 查看当前系统字符集 $ locale 或...$ echo $LANG 或 $ env |grep LANG 或 # Centos7 字符集配置文件,Centos6 为:cat /etc/sysconfig/i18n $ cat /etc/locale.conf...# 临时设置字符集 $ LANG=zh_CN.UTF-8 # Centos7 设置字符集永久生效 ,Centos6 为:echo "LANG=zh_CN.UTF-8" > /etc/sysconfig.../i18n $ echo "LANG=zh_CN.UTF-8" > /etc/locale.conf 文件字符集 # 查看文件字符集 $ file testString.sh testString.sh.../bin/bash # 字符串操作符实例 # 使用 iconv 转换文件字符集,iconv -f 原编码 -t 转换后的编码 inputfile -o outputfile $ iconv -f utf
LANG是针对Linux系统的语言、地区、字符集的设置,对linux下的应用程序有效,如date; NLS_LANG是针对Oracle语言、地区、字符集的设置,对oracle中的工具有效。...查询字符集 win10操作系统字符集查询 ?...oracle字符集查询 --安装时字符集:SIMPLIFIED CHINESE_CHINA.AL32UTF8 select userenv('language') from dual; select...,这部分真正影响数据库字符集。...字符集区别 (1)nls_database_parameters来源于props$,是表示数据库的字符集。
但在12.1中,PDB的字符集与root容器必须保持一致,这样无形中造成了PDB迁移或者克隆的限制性。从12.2开始,同一个cdb中的各个PDB字符集可以不相同。...测试环境 环境:Oracle 12.2.0.1 (REL 6.9 x86-64) 目标端数据库使用dbca创建容器数据库,默认cdb默认字符集是AL32UTF8: ? PDB字符集: ?...1.目标库参数转换 alter session set pdb_file_name_convert='/oracle/app/oradata/cdbgbk/pdbgbk','/oracle/app/oradata...内部转换字符集 使用internal_use: ? 直接修改字符集报错,说明新设字符集必须是老字符集的超集 ? 使用INTERNAL_USE: ? 需要变更为限制会话模式再进行修改: ?...注:oracle并不建议使用INTERNAL_USE来变更数据库的字符集。 作者介绍 谭龙 云和恩墨技术顾问 擅长Oracle数据库的安装配置、故障诊断、升级迁移解决方案的设计与实施。
客户端要连接并操作服务器的 oracle 数据库,很多时候需要知道服务器端的字符集。 通过 sql 语句select usernev('language') from dual语句就可以了。
领取专属 10元无门槛券
手把手带您无忧上云