如何修改ORACLE字符集使NLS_NCHAR_CHARACTERSET的值变成UTF8???

hkstudio 2008-08-01 02:32:49
用select * from v$nls_parameters查询得到如下结果:

SQL> select * from v$nls_parameters;

PARAMETER VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CURRENCY RMB
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE SIMPLIFIED CHINESE
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY RMB
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE

============================================
NLS_NCHAR_CHARACTERSET AL16UTF16 如何变成UTF8 ???
...全文
4241 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hkstudio 2008-08-06
  • 打赏
  • 举报
回复
生产环境是UTF8,用EXP备份出来的库导入测试环境,NVARCHAR2数据类型的会变成乱码,测试环境的数据库是AL16UTF16
zymhdboy 2008-08-06
  • 打赏
  • 举报
回复
做好备份
UPDATE PROPS$ SET NLS_CHARACTERSET='UTF8'
客户端的nls_lang也设为UTF8
hkstudio 2008-08-06
  • 打赏
  • 举报
回复
客户端的nls_lang怎么设置为UTF8????

客户端windows xp+oracle 9.2.0.7
liuyi8903 2008-08-05
  • 打赏
  • 举报
回复
你有xml数据吗?

AL16UTF16 与utf8的区别主要在于xml这一块,

当然在修改前最好备份作好.
hkstudio 2008-08-05
  • 打赏
  • 举报
回复
这样修改后会不会对老数据造成影响???
hkstudio 2008-08-03
  • 打赏
  • 举报
回复
是老系统。
oracledbalgtu 2008-08-02
  • 打赏
  • 举报
回复
如果是新系统,重新安装得了.
如果是老系统,建议做好完备的备份,因为你的这个变换极有可能出现数据丢失!!!!
一般是utf8变到utf16,反变没有听数过;过程如下你试试吧:
sqlplus "/ as sysdba"
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
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 NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP

--另外一种方法。这个命令是当你选择了使用典型方式创建了种子数据库以后,Oracle会根据你选择的字符集设置,把当前种子数据库的字符集更改为期望字符集,这就是这条命令的作用. 在使用这个命令时,Oracle会跳过所有子集及超集的检查,在任意字符集之间进行强制转换,所以,使用这个命令时你必须十分小心,做好备份;
alter database character set INTERNAL_CONVERT/ INTERNAL_USE ZHS16GBK

[Quote=引用楼主 xuangxing 的帖子:]
用select * from v$nls_parameters查询得到如下结果:

SQL> select * from v$nls_parameters;

PARAMETER VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITOR…
[/Quote]

3,496

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧