十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1. 备份数据库中所有用户的数据
创新互联公司是一家专注于网站建设、成都网站制作与策划设计,兴化网站建设哪家好?创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:兴化等地区。兴化做网站价格咨询:18982081108
以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=3 csscan.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数据库字符集: \x0d\x0a\x0d\x0a select userenv('language') from dual;\x0d\x0a 查询结果:\x0d\x0a SIMPLIFIED CHINESE_CHINA.AL32UTF8\x0d\x0a--修改oracle数据库字符集:(在SQL Plus中)\x0d\x0aconn sys/oracle as sysdba\x0d\x0a\x0d\x0a ALTER SYSTEM DISABLE RESTRICTED SESSION;改完编码后执行\x0d\x0a sql conn / as sysdba;\x0d\x0a sql shutdown immediate;\x0d\x0a database closed.\x0d\x0a database dismounted.\x0d\x0a oracle instance shut down.\x0d\x0a sql startup mount;\x0d\x0a oracle instance started.\x0d\x0a total system global area 135337420 bytes\x0d\x0a fixed size 452044 bytes\x0d\x0a variable size 109051904 bytes\x0d\x0a database buffers 25165824 bytes\x0d\x0a redo buffers 667648 bytes\x0d\x0a database mounted.\x0d\x0a sql alter system enable restricted session;\x0d\x0a system altered.\x0d\x0a sql alter system set job_queue_processes=0;\x0d\x0a system altered.\x0d\x0a sql alter system set aq_tm_processes=0;\x0d\x0a system altered.\x0d\x0a sql alter database open;\x0d\x0a database altered.\x0d\x0a sql alter database character set internal_use JA16SJIS;。
1、改客户端字符集:通过WINDOWS的运行菜单运行Regedit,修改注册表
Start - Run - Rededit -|
Under registry Editor - HKEY_LOCAL_MACHINE - SOFTWARE -ORACLE-KEY_XE-RIGHT WINDOW DOUBLE CLICK NLS_LANG - CHANGE VALUE TO "AMERICAN_AMERICA.UTF8" -OK -CLOSE REGISTRY
正确设置ORACLE客户端字符集的方法:
oracle客户端字符集设置需要和服务器端一致,否则会出现乱码问题。
首先连接服务器,查询服务器端设置:
select * from v$nls_parameters;
找到:
NLS_LANGUAGE
NLS_TERRITORY
NLS_CHARACTERSET
环境变量nls_lang便是由这三部分组成
NLS_LANG = language_territory.charset
比如:
NLS_LANG = American_Japan.JA16SJIS
2、改服务器端字符集,通过ORACLE的SQL PLUS命令窗口改
在SQL*PLUS 中,以DBA登录
conn 用户名 as sysdba
然后执行以下命令
shutdown immediate; (把database停了)
startup mount; (把database重开去可更改情况)
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set utf8;
OR
alter database character set internal_use utf8;
shutdown immediate;
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端字符集修改
将数据库启动到RESTRICTED模式下做字符集更改:
SQL conn /as sysdba Connected.
SQL shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。
. 1.oracle server端字符集查询 复制代码代码如下: select userenv('language') from dual; server字符集修改: 将数据库启动到RESTRICTED模式下做字符集更改:??
oracle10g服务器端是安装在AIX 6.0系统上,客户端是安装在windows server 2008 系统上,客户端与服务器已成功连接,但是数据库表里的中文字无法显示,显示为“?”,用SQLPLUS查得服务器端的字符集为AL16uTF16,如何修改该字符集使之支持中文呢?另外oracle10G客户端的字符集需不需要设置,如何查看和设置呢?
数据库字符集在创建后原则上不能更改。不过有2种方法可行。
1. 如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。
2. 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。
你好: -查看oracle数据库字符集: select userenv('language') from dual; 查询结果: SIMPLIFIED CHINESE_CHINA.AL32UTF8 --修改oracle数据库字符集:(在SQL Plus中) conn sys/oracle as sysdba ALTER SYSTEM DISABLE RESTRICTED SESSION;改完编码后执行 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 JA16SJIS; sql shutdown immediate; sql startup;