oracle 修改字符集为ALU32UTF8

合集下载

oracleZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)

oracleZHS16GBK的数据库导入到字符集为AL32UTF8的数据库(转载+自己经验总结)

oracleZHS16GBK的数据库导⼊到字符集为AL32UTF8的数据库(转载+⾃⼰经验总结)字符集⼦集向其超集转换是可⾏的,如此例 ZHS16GBK转换为AL32UTF8。

导出使⽤的字符集将会记录在导出⽂件中,当⽂件导⼊时,将会检查导出时使⽤的字符集设置,如果这个字符集不同于导⼊客户端的NLS_LANG设置,字符集将根据导⼊客户端NLS_LANG设置进⾏转换,如果必要,在数据插⼊数据库之前会进⾏进⼀步转换。

通常在导出时最好把客户端字符集设置得和数据库端相同,这样可以避免在导出时发⽣不必要的数据转换,导出⽂件将和数据库具有相同的字符集。

即使将来会把导出⽂件导⼊到不同字符集的数据库中,这样做也可以把转换延缓⾄导⼊时刻。

当进⾏数据导⼊时,主要存在以下两种情况:1.源数据库和⽬标数据库具有相同字符集设置这时,只需要设置NLS_LANG等于数据库字符集即可导⼊(前提是,导出使⽤的是和源数据库相同字符集,即三者相同)2.源数据库和⽬标数据库字符集不同如果我们导出时候使⽤的NLS_LANG是和源数据库相同的字符集,那么导⼊时就可以设置客户端NLS_LANG等于导出时使⽤的字符集,这样转换只发⽣在数据库端,⽽且只发⽣⼀次。

例如:如果进⾏从ZHS16GBK到UTF8的转换1)使⽤NLS_LANG=AMERICAN_AMERICA.ZHS16GBK导出数据库。

这时创建的导出⽂件包含ZHS16GBK的数据2)导⼊时使⽤NLS_LANG=AMERICAN_AMERICA.ZHS16GBK这时转换仅发⽣在insert数据到UTF8的数据库中。

含有汉字的固定字符由ZHS16GBK数据库导⼊到AL32UTF8的数据库此⽂章是对于上⼀个实验的补充,上⼀次实验仅仅考虑的 varchar2 的情况。

这次考虑到对于char类型的含有中⽂数据的情况。

对于英⽂:对英⽂,在al32utf8中仍然和zhs16gbk⼀样⽤1个字节表⽰,因此导⼊固定长度英⽂字符数据时不会出错。

ORACLE修改数据库的字符集编码为UTF-8

ORACLE修改数据库的字符集编码为UTF-8

ORACLE修改数据库的字符集编码为UTF-81、查看数据库字符集?数据库服务器字符集:select * from nls_database_parameters,其来源于props$,是表⽰数据库的字符集。

客户端字符集环境:select * from nls_instance_parameters,其来源于v$parameter,表⽰客户端的字符集的设置,可能是参数⽂件,环境变量或者是注册表会话字符集环境select * from nls_session_parameters,其来源于v$nls_parameters,表⽰会话⾃⼰的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters⼀致。

客户端的字符集要求与服务器⼀致,才能正确显⽰数据库的⾮Ascii字符。

如果多个设置存在的时候,alter session>环境变量>注册表>参数⽂件字符集要求⼀致,但是语⾔设置却可以不同,语⾔设置建议⽤英⽂。

如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。

2、修改Oracle的字符集,如下例把字符集GB2312修改为UTF-8 步骤: 1.在SQL*PLUS 中,以DBA登录 conn ⽤户名 as sysdba 2.执⾏转换语句: SHUTDOWN IMMEDIATE; STARTUP MOUNT EXCLUSIVE; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM SET AQ_TM_PROCESSES=0; ALTER DATABASE OPEN; ALTER DATABASE NATIONAL CHARACTER SET UTF8; SHUTDOWN IMMEDIATE; STARTUP;注意:如果没有⼤对象,在使⽤过程中进⾏语⾔转换没有什么影响,(切记设定的字符集必须是ORACLE⽀持,不然不能start)按上⾯的做法就可以,但是可能会出现ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data existsORA-12717: 存在 NCLOB, NCHAR 或 NVARCHAR2 数据时, 不能发出 ALTER DATABASENATIONAL CHARACTER SET 命令这样的提⽰信息要解决这个问题有两种⽅法⼀个是,利⽤INTERNAL_USE 关键字修改区域设置,还有⼀个是利⽤re-create,但是re-create有点复杂,所以请⽤internal_use, SHUTDOWN IMMEDIATE; STARTUP MOUNT EXCLUSIVE; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER SYSTEM SET AQ_TM_PROCESSES=0; ALTER DATABASE OPEN; ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8; SHUTDOWN IMMEDIATE; STARTUP;如果按上⾯的做法做,National charset的区域设置就没有问题。

OracleEBS在编码方式为AL32UTF8时的注意事项

OracleEBS在编码方式为AL32UTF8时的注意事项

编码⽅式⾪属于⼀个中⽂字符所占字节说明ZHS16GBK ANSI2与所有⾪属于ANSI 的编码兼容AL32UTF8Unicode3与所有⾪属于Unicode 的编码兼容配置⽂件名称设置层配置⽂件值FND: NATIVE CLIENTENCODINGSITE UTF8ICX: Client IANA Encoding SITE Unicode (UTF-8)OracleEBS 在编码⽅式为AL32UTF8时的注意事项现如今的EBS 系统中,为了推进国际化的进程,以及系统向全球化的扩展,在Oracle 数据库的编码⽅式上渐渐从⽀持中国本⼟简体中⽂的ZHS16GBK 转向了更趋于国际化的AL32UTF8编码⽅式。

但随之⽽来在中国就会产⽣很多问题,例如:其他的外围系统仍然使⽤简体中⽂GB2312/ZHS16GBK 编码,在接⼝⽂件传输时由于编码不⼀致⽽产⽣乱码问题Excel 不兼容,简体中⽂版的Excel 在读取⽂本⽂件时采⽤的是默认的简体中⽂编码⽅式打开,所以已UTF-8编码的⽂件(如CSV ⽂件)在打开时会产⽣乱码问题所以在中国的IT 系统,⼀旦选择采⽤了AL32UTF8的国际化编码⽅式之后,了解⼀些编码⽅式的区别以及常见问题的解决⽅法是⾮常必要的。

编码⽅式这⾥就不深⼊讨论编码的知识了,简单阐述⼀下⼆者的不同之处,见如下表格:所以⼆者属于两套字符集衍⽣出来的,所以并不兼容,需要显⽰的进⾏转码才能正常显⽰。

PLSQL/SQL 客户端的配置客户端配置需要考虑Oracle Client 的所⽀持的语⾔和注册表中NLS_LANG 键值的设置。

Oracle 客户端需要安装兼容64为的32位客户端:win32_11gR2_client ,具体请从Oracle 官⽅⽹站上进⾏下载;NLS_LANG 的键值需要设置成“AMERICAN_AMERICA.AL32UTF8” 或者 “SIMPLIFIED CHINESE_CHINA.AL32UTF8”EBS 基础设置请确保⼀下表格中列⽰的配置⽂件已经设置了正确的值:当为⽂本类型输出格式设置新的打开⽅式时,请确保“Allow Native Client Encoding”已经勾选。

Oracle客户端toad汉字乱码解决方法

Oracle客户端toad汉字乱码解决方法

Oracle客户端toad汉字乱码解决方法出现中文乱码的主要原因是字符集不同。

在Oracle中,我们关心三个地方的字符集:先来查看一下数据库字符集:在Oracle中可能使用Select userenv('language') from dual;或者:Select name, value$ from props$;查看。

l Oracle服务器内部的字符集修改方法:connect sys/chang_on_installupdate props$set value$='TRADITIONAL CHINESE_TAIWAN.AL32UTF8'where name='NLS_CHARACTERSET';commit;2 NLS_LANG变量里保存的字符集这个是Oracle设置的一个变量。

在Windows中,这个变量保存在注册表中:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 保存着NLS_LANG变量。

在Unix/Linux中,则需要自己进行设置,在.profile里面加上NLS_LANG=AMERICAN_AMERICA.ZHS16GBK export NLS_LANG3 客户端应用的字符集下面是我用到的字符集american_america.AL32UTF8TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950TRADITIONAL CHINESE_TAIWAN.AL32UTF8AMERICAN_AMERICA.WE8ISO8859P1AMERICAN_AMERICA.ZHS16GBK特别注意:如果服务端编码为AL32UTF8,那么客户端就应该安装自己环境来设置字符编码。

比如我有一个服务器端,其中两个客户端一个为简体,一个为繁体:服务器端字符集设置:american_america.AL32UTF8简体客户端字符集设置:AMERICAN_AMERICA.ZHS16GBK繁体客户端字符集设置:TRADITIONAL CHINESE_TAIWAN.ZHT16MSWIN950这样toad和sqlplus不论在繁体还是简体都可以正常显示汉字了。

如何设置Oracle数据库客户端字符集以及系统中的NLS_LANG环境变量

如何设置Oracle数据库客户端字符集以及系统中的NLS_LANG环境变量

如何设置Oracle数据库客户端字符集以及系统中的NLS_LANG环境变量概述:本地化是系统或软件运⾏的语⾔和⽂化环境。

设置NLS_LANG环境参数是规定Oracle数据库软件本地化⾏为最简单的⽅式。

NLS_LANG参数不但指定了客户端应⽤程序和Oracle数据库所使⽤的语⾔和地区;同时也指定了客户端程序输⼊数据和显⽰数据所使⽤的字符集。

本⽂主要包含如下五部分◆ NLS_LANG环境变量的构成◆ NLS_LANG环境变量的格式◆如何查看数据库NLS参数设置◆举例说明如何设置NLS_LANG环境变量◆举例说明⼀些特殊情况⼀,NLS_LANG环境变量的构成NLS_LANG环境变量由如下三部分构成:1,LANGUAGE:客户端系统所使⽤的语⾔。

指定Oracle数据库反馈的消息(例如异常信息,提⽰信息等)、字符数据的排列顺序(当指定ORDER BY时)、⽇(年⽉⽇中的天)名称,⽉名称等所使⽤的语⾔。

每个⽀持的语⾔都有唯⼀的名称。

例如,若操作系统使⽤简体中⽂,则为SIMPLIFIED CHINESE;若操作系统使⽤美式英⽂操作系统,则为AMERICAN。

LANGUAGE参数中隐含地区和字符集参数的信息。

如果没有指定LANGUAGE参数的值,则默认值为AMERICAN。

2,TERRITORY:客户端系统所在的地区。

指定默认的⽇期,货币以及数字格式。

每⼀个⽀持的地区都有唯⼀的名称。

如,CHINA,AMERICA或CANADA。

如果没有指定TERRITORY参数,则此参数的值由LANGUAGE参数推理得出。

3,CHARSET:客户端应⽤程序所使⽤的字符集。

正确地设置NLS_LANG环境变量,则使得字符数据能够在客户端字符集和数据库字符集之间正确地转换。

设置NLS_LANG不会改变客户端系统的字符集,它仅仅是让Oracle数据库知道客户端应⽤程序使⽤的是什么字符集,从⽽进⾏相应的字符集转换。

如果客户端和数据库字符集相同,则Oracle数据库忽略字符集校验,不执⾏字符集转换。

oracle 21c 修改编码

oracle 21c 修改编码

oracle 21c 修改编码要修改Oracle 21c的编码,你需要执行以下步骤:1. 连接到Oracle数据库。

你可以使用SQLPlus、SQL Developer或其他数据库管理工具连接到数据库。

2. 运行以下命令来查看当前的数据库字符集:```sqlSELECT FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';```这将返回当前数据库的字符集。

3. 如果你想要修改字符集,你需要使用`ALTER DATABASE`命令。

确保在进行任何修改之前备份数据库。

以下是一个示例,将字符集从UTF8修改为AL32UTF8:```sqlALTER DATABASE CHARACTER SET AL32UTF8;```请注意,在执行此命令之前,确保你了解目标字符集是否与当前数据兼容。

更改字符集可能会导致数据损坏或数据丢失。

4. 完成字符集修改后,运行以下命令来验证更改是否成功:```sqlSELECT FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';```这将显示修改后的字符集。

5. 如果你想要修改数据库的NLS参数,例如排序规则(NLS_SORT)或比较规则(NLS_COMP),你可以使用`ALTER DATABASE`命令进行修改。

例如:```sqlALTER DATABASE SORTING ORDER SAME ASNLS_DATABASE_PARAMETERS;ALTER DATABASE COMPATIBLE WITH RESTRICTED SINGLEBYTE;```这些命令将修改数据库的排序规则和比较规则。

6. 最后,确保重新启动数据库以使更改生效。

具体的重启方法取决于你的Oracle数据库的配置和操作系统。

Oracle字符集的查看查询和Oracle字符集的设置修改

Oracle字符集的查看查询和Oracle字符集的设置修改

Oracle字符集的查看查询和Oracle字符集的设置修改本⽂主要讨论以下⼏个部分:如何查看查询oracle字符集、修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题。

⼀、什么是Oracle字符集Oracle字符集是⼀个字节数据的解释的符号集合,有⼤⼩之分,有相互的包容关系。

ORACLE ⽀持国家语⾔的体系结构允许你使⽤本地化语⾔来存储,处理,检索数据。

它使⼯具,错误消息,排序次序,⽇期,时间,货币,数字,和⽇历⾃动适应本地化语⾔和平台。

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

它的格式如下: NLS_LANG = language_territory.charset它有三个组成部分(语⾔、地域和字符集),每个成分控制了NLS⼦集的特性。

其中:Language:指定服务器消息的语⾔,影响提⽰信息是中⽂还是英⽂Territory:指定服务器的⽇期和数字格式,Charset:指定字符集。

如:AMERICAN _ AMERICA. ZHS16GBK从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。

所以两个数据库之间的字符集只要第三部分⼀样就可以相互导⼊导出数据,前⾯影响的只是提⽰信息是中⽂还是英⽂。

怎么查看数据库版本select * from v$version 包含版本信息,核⼼版本信息,位数信息(32位或64位)等 ⾄于位数信息,在Linux/unix平台上,可以通过file 查看,如file $ORACLE_HOME/bin/oracle⼆、. 查看数据库字符集数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表⽰数据库的字符集。

客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter, 表⽰客户端的字符集的设置,可能是参数⽂件,环境变量或者是注册表 会话字符集环境select * from nls_session_parameters,其来源于v$nls_parameters,表⽰会话⾃⼰的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters⼀致。

修改oracle会话字符集

修改oracle会话字符集

修改oracle会话字符集-概述说明以及解释1.引言1.1 概述概述部分是文章引言的一部分,在这部分中,我们介绍文章的主题和背景,总结讨论的目的和重要性。

下面是可以在概述部分中包含的内容:概述:Oracle是一种流行的关系数据库管理系统(RDBMS),被广泛用于许多企业和组织的数据管理和存储。

在Oracle数据库中,会话是与数据库建立的连接相关联的重要概念。

会话字符集是指用于存储和处理会话中的字符数据的编码集。

本文将讨论如何修改Oracle会话字符集。

会话字符集的选择在数据存储和处理过程中扮演着至关重要的角色。

正确选择和设置会话字符集可以确保数据的准确性和完整性,并且能够正确地处理各种字符集和语言。

在本文的正文部分,我们将首先介绍Oracle会话字符集的基本概念和操作原理。

然后,我们将深入讨论修改Oracle会话字符集的必要性,包括解释为什么有时需要修改会话字符集以满足特定的业务需求。

接下来,我们将详细阐述修改Oracle会话字符集的方法和步骤。

这包括在数据库级别和会话级别进行字符集的修改。

我们还会介绍一些常见的问题和注意事项,以帮助读者避免潜在的错误或数据损坏。

通过本文的阅读,读者将能够了解到修改Oracle会话字符集的重要性,并学习到正确设置和操作会话字符集的方法。

这将对数据库管理员和开发人员在处理多语言数据和跨国业务时具有重要意义。

总之,本文旨在为读者提供一个全面的指南,帮助他们理解和掌握修改Oracle会话字符集的技巧和方法。

通过正确设置和操作会话字符集,读者将能够更好地处理和管理Oracle数据库中的多语言数据,提高数据的质量和可靠性。

1.2文章结构文章结构部分内容:文章结构是指文中的章节安排和组织方式,它有助于读者理解文章的脉络和逻辑关系。

本文按照引言、正文和结论三个部分进行组织和阐述。

引言部分首先概述了修改Oracle会话字符集的背景和意义,介绍了文章的主要目的和内容。

接着,文章结构部分对整篇文章进行了简要的概述和分类,以帮助读者更好地掌握文章的框架。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档