如何查看及修改oracle编码格式方法查看及修改oracle编码格式方法oracle编码怎么修改:
1、查看oracle数据库字符集oracle编码怎么修改:
select userenv('language') from dual;
查询结果oracle编码怎么修改:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
2、修改oracle数据库字符集oracle编码怎么修改:(在SQL Plus中)
sql conn / as sysdba;
sql shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
sql startup mount;
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database 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 internal_use UTF8
sql shutdown immediate;
sql startup;
如何修改oracle的字符集编码1. 备份数据库中所有用户的数据
以oracle用户登陆,执行以下命令
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”
保持与数据库服务器端一致,这样在exp导出时,就不会存在字符的转换oracle编码怎么修改了,备份最原始的数据 。
2. 评估UTF8转换成ZHS16GBK的风险
转换之前 , 要使用Oracle的csscan工具对数据库扫描,评估字符集转换前后,数据有可能的损坏情况 。如果评估情况糟糕,那就绝对要放弃oracle编码怎么修改了 。
先安装属于 CSMIG 用户的一套表和过程 。以oracle用户登陆UNIX,
#sqlplus “/ as sysdab”
SQL@$ORACLE_HOME/ rdbms/admin/csminst.sql
SQLexit
# $ORACLE_HOME\bin\csscan -help
可以更清楚如何使用csscan 。
# $ORACLE_HOME/bin/csscan system/sunday user=mmsc FROMCHAR=UTF8 TOCHAR=ZHS16GBK ARRAY=102400 PROCESS=3csscan.log
以上命令意思是扫描用户:mmsc中的所有数据,从字符集UTF8更改为ZHS16GBK的转换情况 。然后得到三个文件:scan.txt、scan.out、scan.err 。
查看scan.out,scan.err,可以看出mmsc用户下的所有的数据都是可以转换的 , 并且没有出现转换“Exceptional”的情况 , 因此可以更放心一点 。
3. 更改数据库的字符集为ZHS16GBK
前面说过 , 通过命令“Alter Database Characeter Set XXXX”,实现从超集到子集的转换,在Oracle是不允许的 。但是该命令,提供这样的命令方式:
Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX
如何查看并更改ORACLE的编码方式编码方式?你是指字符集吗?
查看oracle字符集的方法有很多,dba权限登录你可以执行:
select * from nls_database_parameters;
select userenv('language') from dual;
推荐第二种,比较直观 。
至于更改字符集的话 , 原则上是不能修改的 。不过有两种方法可以尝试(我没试过):
1. 如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换 。
2. 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8 。
怎样更改oracle的编码方式如何更改Oracle字符集
国内最常用的Oracle字符集ZHS16GBK(GBK 16-bit Simplified Chinese)能够支持繁体中文oracle编码怎么修改 , 并且按照2个字符长度存储一个汉字 。UTF8字符集是多字节存储,1个汉字(简体、繁体)有时采用3个字符长度存储 。
【oracle编码怎么修改 oracle 编码设置】Oracle支持字符集的更改,但是UTF8是Oracle中最大的字符集,也就是说UTF8是ZHS16GBK的严格超集 。
对于子集到超集的转换 , Oracle是允许的 , 但是对于超集到子集的转换是不允许的 。一般对于超集到子集的转换,建议是通过dbca删除原来的数据库,重新再建库,选择正确的字符集,然后导入备份 。
我的方案是:先备份数据 , 然后强制转换字符集从UTF8到ZHS16GBK , 然后导入备份数据 。如果不行,才来重新建库,设置字符集ZHS16GBK,导入备份数据 。如果这还不行,就把更改字符集从ZHS16GBK到UTF8(这是安全的),再导入备份数据,恢复到原始状况 。这样就有可能避开重新建库的麻烦 。
1. 备份数据库中所有用户的数据
以oracle用户登陆 , 执行以下命令
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”
保持与数据库服务器端一致,这样在exp导出时,就不会存在字符的转换了,备份最原始的数据 。
2. 评估UTF8转换成ZHS16GBK的风险
转换之前,要使用Oracle的csscan工具对数据库扫描,评估字符集转换前后,数据有可能的损坏情况 。如果评估情况糟糕,那就绝对要放弃了 。
先安装属于 CSMIG 用户的一套表和过程 。以oracle用户登陆UNIX,
#sqlplus “/ as sysdab”
SQL@$ORACLE_HOME/ rdbms/admin/csminst.sql
SQLexit
# $ORACLE_HOME\bin\csscan -help
可以更清楚如何使用csscan 。
# $ORACLE_HOME/bin/csscan system/sunday user=mmsc FROMCHAR=UTF8 TOCHAR=ZHS16GBK ARRAY=102400 PROCESS=3csscan.log
以上命令意思是扫描用户:mmsc中的所有数据 , 从字符集UTF8更改为ZHS16GBK的转换情况 。然后得到三个文件:scan.txt、scan.out、scan.err 。
查看scan.out , scan.err,可以看出mmsc用户下的所有的数据都是可以转换的,并且没有出现转换“Exceptional”的情况,因此可以更放心一点 。
3. 更改数据库的字符集为ZHS16GBK
前面说过,通过命令“Alter Database Characeter Set XXXX”,实现从超集到子集的转换,在Oracle是不允许的 。但是该命令,提供这样的命令方式:
Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX
这是Oracle的非公开命令 。“在使用这个命令时,Oracle会跳过所有子集及超集的检查,在任意字符集之间进行强制转换,所以,使用这个命令时你必须十分小心,你必须清楚这一操作会带来的风险” 。
以oracle用户登陆UNIX,
#sqlplus “/ as sysdba”
SQL SHUTDOWN IMMEDIATE;
SQL STARTUP MOUNT;
SQL ALTER SESSION SET SQL_TRACE=TRUE;
SQL ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL ALTER DATABASE OPEN;
SQL ALTER DATABASE CHARACTER SET ZHS16GBK;
//如果不使用“INTERNAL_USE”参数,系统会提示出错:
//ERROR at line 1:
//ORA-12712: new character set must be a superset of old character set
SQL ALTER SESSION SET SQL_TRACE=FALSE;
SQL SHUTDOWN IMMEDIATE;
SQL STARTUP;
此时,检查一下数据库的字符集是否更改过来
SQL select value$ from props$ where name=’NLS_CHARACTERSET’;
VALUE$
-----------------
ZHS16GBK
紧接着检查一下数据库中简体中文、繁体中文是否正常,不会出现乱码 。
SQLselect spid,spname,spshortname from spinfovisual_hk
…...
非常不幸,我看到了一堆乱码,这也证明了Oracle不支持字符集从超集到子集的更改,当时心里很紧张,很怕失败,从而恢复到原样 。
但是根据以前的验证,把UTF8下的备份导入到ZHS16GBK中去,是OK的,所以继续尝试 。
4. 导入备份的用户数据
还是以oracle用户登陆UNIX, 先删除库中的用户mmsc:
#sqlplus “/ as sysdba”
SQLdrop user mmsc cascade;
SQLexit
再运行createuser.sql,生成mmsc用户 。
然后使用原来的备份文件,导入到mmsc用户中:
注意:先设置NLS_LANG要与当前数据库的一致:ZHS16GBK 。这样,导出时用户会话的NLS_LANG为UTF8,与原先的数据库字符集一致oracle编码怎么修改;现在为ZHS16GBK,与此时的数据库字符集一致 。这样,导入时,就会进行字符转换 。
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.ZHS16GBK”
#imp mmsc/mmsc@mdspdb file=DSMPD113_user_mmsc.dmp ignore=y fromuser=mmsc touser=mmsc
马上查看数据库中简体、繁体中文 , 哈哈 , 没有乱码了 , 一切显示正常 。
紧接着进行验证,也证明了:1个汉字此时只占用2个字符长度 。问题解决了oracle编码怎么修改!
如何查看及修改oracle编码格式方法?查看及修改oracle编码格式方法:\x0d\x0a1、查看oracle数据库字符集:\x0d\x0aselect userenv('language') from dual;\x0d\x0a查询结果:\x0d\x0aSIMPLIFIED CHINESE_CHINA.AL32UTF8\x0d\x0a2、修改oracle数据库字符集:(在SQL Plus中)\x0d\x0asql conn / as sysdba;\x0d\x0asql shutdown immediate;\x0d\x0adatabase closed.\x0d\x0adatabase dismounted.\x0d\x0aoracle instance shut down.\x0d\x0asql startup mount;\x0d\x0aoracle instance started.\x0d\x0atotal system global area135337420 bytes\x0d\x0afixed size452044 bytes\x0d\x0avariable size109051904 bytes\x0d\x0adatabase buffers25165824 bytes\x0d\x0aredo buffers667648 bytes\x0d\x0adatabase mounted.\x0d\x0asql alter system enable restricted session;\x0d\x0asystem altered.\x0d\x0asql alter system set job_queue_processes=0;\x0d\x0asystem altered.\x0d\x0asql alter system set aq_tm_processes=0;\x0d\x0asystem altered.\x0d\x0asql alter database open;\x0d\x0adatabase altered.\x0d\x0asql alter database character set internal_use UTF8\x0d\x0asql shutdown immediate;\x0d\x0asql startup;
oracle字符集编码怎么修改oracle数据库的字符集更改
A、oracle server 端 字符集查询
select userenv('language') from dual
其中NLS_CHARACTERSET 为server端字符集
NLS_LANGUAGE 为 server端字符显示形式
B、查询oracle client端的字符集
$echo $NLS_LANG
如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集 。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题 。
C、server端字符集修改
*****************************************************************
*更改字符集步骤方法(WE8ISO8859P1 -- ZHS16GBK)*
*****************************************************************
SQL
将数据库启动到RESTRICTED模式下做字符集更改:
SQL conn /as sysdba
Connected.
SQL shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL startup mount
ORACLE instance started.
Total System Global Area236000356 bytes
Fixed Size451684 bytes
Variable Size201326592 bytes
Database Buffers33554432 bytes
Redo Buffers667648 bytes
Database 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 startup
ORACLE instance started.
Total System Global Area236000356 bytes
Fixed Size451684 bytes
Variable Size201326592 bytes
Database Buffers33554432 bytes
Redo Buffers667648 bytes
Database mounted.
Database opened.
SQL select * from v$nls_parameters;
略
19 rows selected.
D、client端字符集修改
在 /home/oracle与 /root用户目录下的.bash_profile中
添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句
关闭当前ssh窗口 。
关于oracle编码怎么修改和oracle 编码设置的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- cpu为什么衰落,cpu为什么会出问题
- flutter可以做安卓吗,flutter能写游戏吗
- mysql目录怎么找 mysql的数据目录
- 华为鸿蒙系统海外支付,海外华为刷鸿蒙
- 新媒体如何避免舆情,新媒体舆情应对与处置
- gis面文件转入cad,gis怎么导入文件
- 数据库瓶颈php 数据库瓶颈怎么处理
- 元神詹前直播什么意思,原神前瞻直播什么意思
- steam益智经营游戏,steam经营类小游戏