如何设置oracle的编码格式如何设置oracle的编码格式
查看及修改oracle编码格式方法:
1、查看oracle数据库字符集:
select userenv('language') from dual;
查询结果:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
2、修改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 area135337420 bytes
fixed size452044 bytes
variable size109051904 bytes
database buffers25165824 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.
oracle创建数据库的时候怎么设置编码格式启动database configuration assistant,创建数据库,参照下面的图释 。
这里指定数据库名和实例名 , 根据自己想要的设置,这里是举例啦
可以统一的口令,也可以选上面的选项进行逐一设置
可以在这里设置字符集,后面的步骤默认即可 。有问题再追问吧 。
oracle设置单次编码oracle设置单次编码首先我们打开这样的一个小程序编码然后点开它的主页面进行一个设置然后设置单词编码就可以
怎样更改oracle的编码方式如何更改Oracle字符集
国内最常用的Oracle字符集ZHS16GBK(GBK 16-bit Simplified Chinese)能够支持繁体中文,并且按照2个字符长度存储一个汉字 。UTF8字符集是多字节存储,1个汉字(简体、繁体)有时采用3个字符长度存储 。
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
【oracle如何指定编码 oracle 编码查询】前面说过,通过命令“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,与原先的数据库字符集一致;现在为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数据库怎么修改编码格式utf-8以下内容为固定写法oracle如何指定编码,可以修改数据库编码格式 。
第一步:通过系统管理员权限登录数据库 。
sql conn / as sysdba;
第二步:关闭数据库和实例连接 。
sql shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
第三步:启动数据库实例连接 。
sql startup mount;
oracle instance started.
total system global area135337420 bytes
fixed size452044 bytes
variable size109051904 bytes
database buffers25165824 bytes
redo buffers667648 bytes
database mounted.
第四步:限制其它用户连接数据库使用资源 。
sql alter system enable restricted session;
system altered.
第五步:设置作业进行为0个 。
sql alter system set job_queue_processes=0;
system altered.
第六步:设置启动时间管理器的数量为0
sql alter system set aq_tm_processes=0;
system altered.
第七步:打开数据库连接
sql alter database open;
database altered.
第八步:修改需要的编码格式
sql alter database character set internal_use GBK;
第九步:关闭连接 。
sql shutdown immediate;
第十步:启动oracle进程 。
sql startup;
备注:常用的有:UTF-8oracle如何指定编码,GBK。
UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码 。由Ken Thompson于1992年创建 。现在已经标准化为RFC 3629 。UTF-8用1到6个字节编码UNICODE字符 。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文 , 韩文) 。
关于oracle如何指定编码和oracle 编码查询的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- postgre怎么备份,postman怎么备份
- 贪婪恶魔经营游戏,贪婪恶魔图片
- 工作理念如何用ppt呈现,工作理念如何用ppt呈现自己
- linux面试必问命令 linux面试大全
- redis异步缓存,redis 异步
- 角色扮演女女游戏下载,角色扮演女生手游
- 网站和路由器怎么安装,怎么安装路由器联网
- linux命令行补全 linux补全命令需要装什么包
- 开发html5,开发html5的工具