Oracle注册表字符集修改

合集下载

ORACLE乱码问题解决

ORACLE乱码问题解决
'NCHAR VARYING',
'UNKOWN'),
96,
DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
一、修改oracle 字符集
由于Oracle 默认安装了SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1字符集,不修改中文会出现乱码现象,输入如下命令:
[oracle@localhost ~]$sqlplus ‘/as sydba’
SQL>shutdown immediate
SQL>Startup restrict
SQL>select userenv('language') from dual;
SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1
SQL>UPDATE sys.PROPS$ SET value$='ZHS16GBK' WHERE NAME='NLS_CHARACTERSET';
5.ALTER SYSTEM SET AQ_TM_PROCESSES=0;
6.ALTER DATABASE OPEN;
9.COL VALUE NEW_VALUE CHARSET
10.SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
1,
'VARCHAR2',
2,
'NVARCHAR2',

Oracle表字段的增加、删除、修改和重命名

Oracle表字段的增加、删除、修改和重命名

Oracle表字段的增加、删除、修改和重命名本⽂主要是关于Oracle数据库表中字段的增加、删除、修改和重命名的操作。

增加字段语法:alter table tablename add (column datatype [default value][null/not null],….);说明:alter table 表名 add (字段名字段类型默认值是否为空);例:alter table sf_users add (HeadPIC blob);例:alter table sf_users add (userName varchar2(30) default '空' not null);修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);说明:alter table 表名 modify (字段名字段类型默认值是否为空);例:alter table sf_InvoiceApply modify (BILLCODE number(4));删除字段的语法:alter table tablename drop (column);说明:alter table 表名 drop column 字段名;例:alter table sf_users drop column HeadPIC;字段的重命名:说明:alter table 表名 rename column 列名 to 新列名(其中:column是关键字)例:alter table sf_InvoiceApply rename column PIC to NEWPIC;表的重命名:说明:alter table 表名 rename to 新表名例:alter table sf_InvoiceApply rename to sf_New_InvoiceApply;。

oracle导入出现字符集问题解决办法

oracle导入出现字符集问题解决办法

oracle导入出现字符集问题解决办法场景:把一台linux上的oracle库的数据捣腾到一台 windows2003上的oracle库中,在捣腾的过程中乱码了!有经验的知道多半是要改windows的注册表。

注册表打开发方式:Win98/98SE/Me运行中输入regedit.exe 无权限限制Win2000/XP1.开始>>运行.中输入regedt322.开始>>运行.中输入regedit第一种方法打开的注册表编辑器和Win98下的一样,而且功能相同,而使用第二种方法打开的注册表编辑器则可以方便的设置权限,建议网络管理员使用第2种方法打开注册表编辑器修改需要修改的权限设置部分以免被他人恶意修改。

Windows Vista/71.在开始菜单搜索框中输入regedit并按回车键.(需要管理员权限)2.在运行中输入regedit.exe(需要管理员权限)1. NLS_LANG 参数组成NLS_LANG参数由以下部分组成:NLS_LANG=<language>_<territory>.<client character set>Language:指定Oracle消息使用的语言,校验,日期中月份和日显示。

Territory:指定默认日期、数字、货币等格式,地区和计算星期及日期的习惯。

Client character set:控制客户端应用程序使用的字符集例如:NLS_LANG=AMERICAN_7ASCIIAMERICAN是语言,AMERICA是地区,US7ASCII是客户端字符集通常设置或者等于客户端(如Windows)代码页或者对于unicode应用设置为UTF8在Windows上查看当前系统的代码页可以使用chcp命令:E:\>chcp活动的代码页: 936代码页936也就是中文字符集 GBK,在Microsoft的官方站点上,我们可以遭到关于936代码页的具体编码规则,请参考以下链接:/globaldev/reference/dbcs/936.htm2. 查看 NLS_LANG 的方法Windows使用:注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG查看Unix使用:env|grep NLS_LANG如:/opt/oracle>env|grep NLS_LANGNLS_LANG=AMERICAN_CHINA.ZHS16GBKWindows客户端设置,可以在注册表中更改NLS_LANG,具体键值位于:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\xx指存在多个ORACLE_HOME时系统编号。

Oracle查看字符集

Oracle查看字符集

Oracle查看字符集1.查看字符集1⼀、oracle服务端字符集2 SQL> select userenv('language') from dual ;34 USERENV('LANGUAGE')5 ----------------------------------------------------6 AMERICAN_AMERICA.ZHS16GBK789⼆、oracle客户段字符集10112.1 window环境下,修改注册表ORACLE_HOME⽬录下的环境变量NLS_LANG。

12132.2 unix/linux环境下,就是环境变量$NLS_LANG1415 [oracle@wang ~]$ echo $NLS_LANG16 AMERICAN_AMERICA.ZHS16GBK1718查看数据库字符集1920数据库服务器字符集select * from nls_database_parameters;,其来源于props$,是表⽰数据库的字符集。

2122 客户端字符集环境select * from nls_instance_parameters;,其来源于v$parameter,表⽰客户端的字符集的设置,可能是参数⽂件,环境变量或者是注册表23 24如何查询dmp⽂件的字符集2526⽤oracle的exp⼯具导出的dmp⽂件也包含了字符集信息,dmp⽂件的第2和第3个字节记录了dmp⽂件的字符集。

如果dmp⽂件不⼤,⽐如只有⼏M或⼏⼗M,可以⽤UltraEdit打开(16进制⽅式),看第2第3个字节的内容,如0354,然后⽤以下SQL查2728 SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;2930 ZHS16GBK3132如果dmp⽂件很⼤,⽐如有2G以上(这也是最常见的情况),⽤⽂本编辑器打开很慢或者完全打不开,可以⽤以下命令(在unix主机上):33cat exp.dmp |od -x|head -1|awk'{print $2 $3}'|cut -c 3-634然后⽤上述SQL也可以得到它对应的字符集2.od 命令解释#od命令功能说明:输出⽂件内容。

如何设置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客户端字符集

此时, 当数据从数据库中提取出来并在客户端显示时, 必 须 进 行 从 ZHS16GBK 到 US7ASCII 字 符 集 的 转 换 。 如 果 US7ASCII 字符集不包含某些 ZHS16GBK 字符集中的 字 符 ( 例 如汉字) 时, 则使用特定的字符( 一般用“? ”) 代替。因此, 客户 端和数据库服务端字符集不同, 容易发生因字符集转换带来 的数据转换或损耗。
PARAMETER
VALUE
------------------------------
-------------------------
NLS_CHARACTERSET
US7ASCII
影 响 客 户 端 字 符 集 的 是 环 境 变 量 NLS_LANG, 在 Win-
dows 中 , 确 定 客 户 端 字 符 集 首 先 是 本 进 程 定 义 的 环 境 变 量
在前文提到的问题中, 当字符集为 US7ASCII 的数据库数 据传送到字符集为 ZHS16GBK 数据库之前, 必须分别用不同 客户端字符集连接不同的数据库, 否则至少会出现 1 次字符 集转换的问题。同样, 程序至少需要做 1 次修改客户端字符集 的操作。
常见修改客户端字符集方法是 修 改 注 册 表 中 NLS_LANG 的值, 连接数据库后, 再将注册表中的值恢复。此方法存在 2 个问题: ( 1) 某些情况, 操作系统不允许修改注册表; ( 2) 如果 忘记将注册表中 NLS_LANG 的值恢复, 可能会影响其他程序。
nls_database_parameters 获权限, 无需额外授权:
SQL> select PARAMETER, VALUE
2 from nls_database_parameters

修改oracle会话字符集

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Oracle gb2312 字符集 转 utf-8

最近因为一些特殊的需求,考虑到以后系统的开发,就把现有Oracle数据库的字符集gb2312改为了UTF-8步骤:1.在SQL*PLUS 中,以DBA登录conn 用户名as sysdba2.执行转换语句: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;ALTER DATABASE character set INTERNAL_USE ZHS16GBK;SHUTDOWN immediate;startup;注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的字符集必须是ORACLE支持,不然不能start)按上面的做法就可以,但是可能会出现‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET whenNCLOB data exists’ 这样的提示信息要解决这个问题有两种方法一个是,利用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;查询字符集---------set NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL16UTF16"select * from sys.props$;AL16UTF16 与UTF8可以互换声明:此方法非常危险,如造成数据库崩溃,本人概不负责。

修改oracle字符集

修改oracle字符集解决:修改本地数据库的字符集更改为ZHS16GBK1,查看数据库的字符集 select * from v$nls_parameters;公司是ZHS16GBK本地是2,修改本地oracle字符集为ZHS16GBK1.cmd下,cd到oracle数据库软件的服务器端如:D:\app\Administrator\product\11.2.0\dbhome_1\BIN2.输⼊set ORACLE_SID=你想进⼊的数据库的那个sid3.输⼊ sqlplus /nolog4.将数据库启动到RESTRICTED模式下做字符集更改:SQL> conn /as sysdbaConnected.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area 236000356 bytesFixed Size 451684 bytesVariable Size 201326592 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesDatabase mounted.SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;System altered.SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;System altered.SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;System altered.SQL> alter database open;Database altered.SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;ALTER DATABASE CHARACTER SET ZHS16GBK*ERROR at line 1:ORA-12712: new character set must be a superset of old character set提⽰我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;Database altered.SQL> select * from v$nls_parameters;略19 rows selected.重启检查是否更改完成:SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 236000356 bytesFixed Size 451684 bytesVariable Size 201326592 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesDatabase mounted.Database opened.SQL> select * from v$nls_parameters;⾄此修改成功,打开navicat 却报错如下ORA-29275:partial multibyte character 解决:把本地环境变量NLS_LANG的值改成所修改的字符集格式重新打开navicat,,解决问题!。

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