楼主: biti_rainy

[精华] 彻底弄清楚字符集问题(取消置顶,已经加入精华区)

[复制链接]
论坛徽章:
2
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33
11#
发表于 2002-1-26 09:43 | 只看该作者
查询catalog.sql可以看到nls_database(instance)_parameters的创建语句
但是我没有看到v$nls_parameters的定义,但我做过测试,如果更改nls_lang变量后,这个表的内容随之发生变化,并在nomount状态就可读,所以这个表应该对应于环境变量之类的东西

使用道具 举报

回复
论坛徽章:
126
咸鸭蛋
日期:2011-08-22 23:47:37优秀写手
日期:2013-12-18 09:29:152014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142015年新春福章
日期:2015-03-04 14:19:11
12#
发表于 2002-1-26 06:28 | 只看该作者
应大家的要求,置顶一周。

使用道具 举报

回复
论坛徽章:
126
咸鸭蛋
日期:2011-08-22 23:47:37优秀写手
日期:2013-12-18 09:29:152014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142015年新春福章
日期:2015-03-04 14:19:11
13#
发表于 2002-2-4 11:27 | 只看该作者
取消置顶。加入精华区。

2001.2.3

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
14#
发表于 2002-1-28 10:23 | 只看该作者
根据oracle的说法,一旦创建数据库时选定的字符集,就不能再改变了,除非重建数据库。真的是这样吗?我现有一个ORACLE817 for Solaris 8的需要将字符集从ZHS231280改成ZHS16GBK,该如何做?什么字符集最全,请推荐。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
15#
发表于 2002-1-27 10:54 | 只看该作者
然后,修改操作系统中的NLS_LANG="american_america.us7ascii"
SQL> select * from v$nls_parameters;

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               AMERICA
NLS_NUMERIC_CHARACTERS         .,
NLS_CALENDAR                   GREGORIAN
NLS_DATE_FORMAT                DD-MON-RR
NLS_DATE_LANGUAGE              AMERICAN
NLS_CHARACTERSET               ZHS16CGB231280
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZH:T
                               ZM

NLS_DUAL_CURRENCY              $
NLS_NCHAR_CHARACTERSET         ZHS16CGB231280
NLS_COMP                       BINARY

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
16#
发表于 2002-1-27 10:53 | 只看该作者

一个测试

原有的数据库,它的NLS_LANG="Simplified chinese_china.zhs16cgb231280"
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               ZHS16CGB231280
NLS_SORT                       BINARY
NLS_TIME_FORMAT                HH.MI.SSXFF AM

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZH:TZM
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZH:T
                               ZM

NLS_DUAL_CURRENCY              RMB
NLS_NCHAR_CHARACTERSET         ZHS16CGB231280
NLS_COMP                       BINARY

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
17#
发表于 2002-1-27 11:12 | 只看该作者
在sys.props$中,参数
NLS_ISO_CURRENCY               AMERICA
NLS_CHARACTERSET               ZHS16CGB231280
NLS_NCHAR_CHARACTERSET         ZHS16CGB231280
而在v$nls_parameters中,
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               ZHS16CGB231280
这样是不是说,操作系统中的NLS_LANG参数与v$nls_parameters中对应呢?如果是这样,那么,sys.props$中的nls_iso_currentcy等参数又是做什么的呢?

使用道具 举报

回复
论坛徽章:
0
18#
发表于 2002-1-27 22:45 | 只看该作者
我觉得你用”工具“把繁体转换成简体,不能改变DMP文件中的字符集信息,仍是big5,导入时仍会出错。

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2002-2-4 10:33 | 只看该作者

to xfeng

to xfeng:我按你的做法试了一次,是可以的,但你漏了一点,就是还必须修改环境变量,使其字符集与数据库修改后的字符集一致,导入时才不会出错。

另请教大家:zhs16gbk与zhs16cgb123820之间有无包含关系

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
20#
 楼主| 发表于 2002-1-25 20:52 | 只看该作者

彻底弄清楚字符集问题

我一直坚持使用gbk,虽然没有出现过问题,但
我想弄 清楚
先列出我所知道的存储的几个地方:
1.props$
2.v$nls_parameters(gv$nls_parameters)
3.nls_database_parameters

首先,安装时选择的字符集是不是和3有关?如果不是那在哪里是一定对应的

2中看来是动态的,是对应哪里的

很多人通过修改1来imp数据

那么我想问几个问题:
关于数据的存储,是不是数据库一安装就已经定好了
但仍然可以存储相同单字节或者双字节字符

如果数据库中同时存储了2中字符集的数据可能的话
显示上怎么解决,或者不可解决

关于不同数据库字符集的导入
通过修改props$可以实现
那么看来好象props的功能就是做了一个转换标志?不是数据库存储的字符集也发生了变化?

有人做测试说不同字符集的数据库数据的存储
只要client保持和原来数据字符集一致就可以正常显示
是不是只要字节数一样的字符,都符合这个规律?

想说的太多而脑袋有不好使
麻烦大家仔细讲讲自己的经验和理解




使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表