如何设置oracle的编码格式
查看及修改oracle编码格式方法:
①.、查看oracle数据库字符集:
select userenv('language') from dual;
查询结果:
sql conn / as sysdba;
sql shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
sql startup mount;
oracle instance started.
database mounted.
sql alter system enable restricted session;
system altered.
sql alter system set job_queue_processes=0;
sql alter system set aq_tm_processes=0;
以下内容为固定写法,可以修改数据库编码格式.
第一步:通过系统管理员权限登录数据库.
第二步:关闭数据库和实例连接.
第三步:启动数据库实例连接.
第四步:限制其它用户连接数据库使用资源.
第五步:设置作业进行为0个.
第六步:设置启动时间管理器的数量为0
第七步:打开数据库连接
sql alter database open;
database altered.
第八步:修改需要的编码格式
sql alter database character set internal_use GBK;
第九步:关闭连接.
第十步:启动oracle进程.
sql startup;
启动database configuration assistant,创建数据库,参照下面的图释.
这里指定数据库名和实例名,根据自己想要的设置,这里是举例啦
可以统一的口令,也可以选上面的选项进行逐一设置
可以今天这一节设置字符集,后面的步骤默认即可.有问题再追问吧.
① 备份数据库中所有用户的数据
以oracle用户登陆,执行以下命令
保持与数据库服务器端一致,这样在exp导出时,就不会存在字符的转换了,备份最原始的数据.
转换之前,要使用Oracle的csscan工具对数据库扫描,评估字符集转换前后,数据有可能的损坏情况.如果评估情况糟糕,那就绝对要放弃了.
先安装属于 CSMIG 用户的一套表和过程.以oracle用户登陆UNIX,
#sqlplus "/ as sysdab"
SQL@$ORACLE_HOME/ rdbms/admin/csminst.sql
SQLexit
# $ORACLE_HOME\bin\csscan -help
可以更清楚如何使用csscan.
查看scan.out,scan.err,可以看出mmsc用户下的所有的数据都是可以转换的,并且没有出现转换"Exceptional"的情况,所以呢可以更放心一点.
前面说过,通过命令"Alter Database Characeter Set XXXX",实现从超集到子集的转换,在Oracle是不允许的.但是该命令,提供这样的命令方式:
Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX
如何更改Oracle字符集
对于子集到超集的转换,Oracle是允许的,但是对于超集到子集的转换是不允许的.一般对于超集到子集的转换,建议是通过dbca删除原来的数据库,重新再建库,选择正确的字符集,然后导入备份.
这是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;
//如果不使用"INTERNAL_USE"参数,系统会提示出错:
//ERROR at line 1:
SQL ALTER SESSION SET SQL_TRACE=FALSE;
SQL STARTUP;
此时,检查一下数据库的字符集是否更改过来
SQL select value$ from props$ where name='NLS_CHARACTERSET';
VALUE$
-----------------
紧接着检查一下数据库中简体中文、繁体中文是否正常,不会出现乱码.
SQLselect spid,spname,spshortname from spinfovisual_hk
......
非常不幸,我看到了一堆乱码,这也证明了Oracle不支持字符集从超集到子集的更改,当时心里很紧张,很怕失败,从而恢复到原样.
还是以oracle用户登陆UNIX, 先删除库中的用户mmsc:
SQLdrop user mmsc cascade;
再运行createuser.sql,生成mmsc用户.
然后使用原来的备份文件,导入到mmsc用户中:
马上查看数据库中简体、繁体中文,哈哈,没有乱码了,一切显示正常.
首先查看数据库编码:
select?*?from?nls_database_parameters?where?parameter?='NLS_CHARACTERSET';
这个编码是否和你java的编码一致,如果不一致,建议先尝试修改java的编码,如果java编码不能改变,而且你有修改oracle码制的权限,并且可以修改(慎用!)
①首先以sysdba的身份登录上去 conn /as sysdba
SQLALTER SYSTEM ENABLE RESTRICTED SESSION;
alter database open;
这会可能会报错,提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
这条语句就可以了,TERNAL_USE提供的帮助就会使oracle绕过了子集与超集的验证,这条语句和上面的语句内部操作时完全相同的.
SQLshutdown immediate;
SQL startup
当然字符集最好不要轻易修改,因为这会对数据库的数据有直接的影响,如果是生产环境的话,可能会造成不可估计得损失.
以上就是土嘎嘎小编为大家整理的mysql怎么创建新库相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!