ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 2250|回复: 2

[笔记] 关于od命令不同平台下不同输出问题说明 [复制链接]

超级版主

天下有雪

精华贴数
66
技术积分
208411
社区积分
6479
注册时间
2001-10-8
论坛徽章:
100
ITPUB元老
日期:2005-02-28 12:57:00ITPUB官方微博粉丝徽章
日期:2011-06-28 19:45:36现任管理团队成员
日期:2011-05-07 01:45:08ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB技术丛书作者
日期:2010-09-26 15:00:232010系统架构师大会纪念
日期:2010-09-03 16:39:572010数据库技术大会纪念徽章
日期:2010-05-13 10:04:282009架构师大会纪念徽章
日期:2010-01-18 13:43:21祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:212009日食纪念
日期:2009-07-22 09:30:00参与2009年中国云计算大会纪念
日期:2009-06-05 10:02:28
发表于 2005-9-4 12:03:50 |显示全部楼层
刚才有一个帖子讨论到字符集的问题。

此前我在文章中提到过这些问题:
http://www.eygle.com/special/NLS_CHARACTER_SET_05.htm

发现刚才问题的原因在于Solaris/Linux上od命令的输出不同导致:

最初由 orientzkd 发布
[B]

eygle的那篇文章也是在oracle9.2下测试的。我是在oracle10下做的。
你说“alter改字符集必须是单字节对单字节两个对两个,“那么为什么US7ASCII 可以用alter database character set ZHS16GBK。这也是单字节向双字节转换阿。 [/B]


这个问题的原因在于OD命令在不同的平台下缺省的输出结果是不同的。

我当初的测试结果是Solaris下的输出:
[php]
$ cat a.dmp|od -x|head
0000000 03'03 54'45 5850 4f52 543a 5630 392e 3032
0000020 2e30 300a 4445 5947 4c45 0a52 5553 4552
0000040 530a 3130 3234 0a30 0a33 320a 300a 0354
0000060 0354 07d0 0001 0000 0000 0000 0000 0005
0000100 0020 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2053 756e 2053 6570
0000160 2034 2031 313a 3238 3a33 3720 3230 3035
0000200 612e 646d 7000 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
.
[/php]

而在Linux下od的输出和Solaris是不同的:
[php]
[oracle@danaly ~]$ cat a.dmp|od -x|head
0000000 0303 4554 5058 524f 3a54 3156 2e30 3230
0000020 302e 0a31 5344 5359 4554 0a4d 5552 4553
0000040 5352 380a 3931 0a32 0a30 3032 300a 030a
0000060 0354 0754 00d0 0001 0000 0000 0000 0000
0000100 0005 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2020 6f4d 206e 6553
0000160 2070 2034 3131 323a 3a33 2035 3032 3630
0000200 2e61 6d64 0070 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
.[/php]

注意Linux下od -x等加于-t x2
[php]
[oracle@danaly ~]$ cat a.dmp|od -t x2|head
0000000 0303 4554 5058 524f 3a54 3156 2e30 3230
0000020 302e 0a31 5344 5359 4554 0a4d 5552 4553
0000040 5352 380a 3931 0a32 0a30 3032 300a 030a
0000060 0354 0754 00d0 0001 0000 0000 0000 0000
0000100 0005 2020 2020 2020 2020 2020 2020 2020
0000120 2020 2020 2020 2020 2020 2020 2020 2020
0000140 2020 2020 2020 2020 2020 6f4d 206e 6553
0000160 2070 2034 3131 323a 3a33 2035 3032 3630
0000200 2e61 6d64 0070 0000 0000 0000 0000 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
.
[/php]
显示结果中,高位和低位发生了交换。
所以0303 4554 ,应该为: 0303 5445

oracledba 说的使用 -t x1参数可以得到更直观的输出,更适合在Linux下使用:
[php]
[oracle@danaly ~]$ cat a.dmp|od -t x1|head
0000000 03 '03 54' 45 58 50 4f 52 54 3a 56 31 30 2e 30 32
0000020 2e 30 31 0a 44 53 59 53 54 45 4d 0a 52 55 53 45
0000040 52 53 0a 38 31 39 32 0a 30 0a 32 30 0a 30 0a 03
0000060 54 03 54 07 d0 00 01 00 00 00 00 00 00 00 00 00
0000100 05 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0000120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0000140 20 20 20 20 20 20 20 20 20 20 4d 6f 6e 20 53 65
0000160 70 20 34 20 31 31 3a 32 33 3a 35 20 32 30 30 36
0000200 61 2e 64 6d 70 00 00 00 00 00 00 00 00 00 00 00
0000220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.
[/php]

注册会员

老男孩

精华贴数
0
技术积分
3844
社区积分
16
注册时间
2001-12-5
论坛徽章:
28
ITPUB元老
日期:2005-06-17 10:37:44操作系统板块每日发贴之星
日期:2005-07-02 01:01:58数据库板块每日发贴之星
日期:2005-07-18 01:01:26管理团队2006纪念徽章
日期:2006-04-16 22:44:45会员2006贡献徽章
日期:2006-04-17 13:46:34
发表于 2005-9-4 13:47:05 |显示全部楼层
By default, od uses -A o -t d2 -w 16.
-x Output as hexadecimal shorts. Equivalent to -t x2.

使用道具 举报

注册会员

小兵

精华贴数
0
技术积分
6198
社区积分
1626
注册时间
2005-6-23
论坛徽章:
19
数据库板块每日发贴之星
日期:2005-08-05 01:01:25会员2007贡献徽章
日期:2007-09-26 18:42:10在线时间
日期:2006-09-19 04:01:01生肖徽章:鸡
日期:2006-09-15 06:25:52生肖徽章:马
日期:2006-09-07 17:09:44生肖徽章:牛
日期:2006-09-07 17:02:45生肖徽章:羊
日期:2006-09-07 17:02:24生肖徽章:猴
日期:2006-09-07 17:02:03生肖徽章:兔
日期:2006-09-06 21:13:21会员2006贡献徽章
日期:2006-04-17 13:46:34授权会员
日期:2005-11-03 08:34:35ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
发表于 2005-9-4 17:06:56 |显示全部楼层

Re: 关于od命令不同平台下不同输出问题说明

[QUOTE]最初由 eygle 发布
[B]刚才有一个帖子讨论到字符集的问题。

此前我在文章中提到过这些问题:
http://www.eygle.com/special/NLS_CHARACTER_SET_05.htm

发现刚才问题的原因在于Solaris/Linux上od命令的输出不同导致:



这个问题的原因在于OD命令在不同的平台下缺省的输出结果是不同的。

eygle[/COLOR]

麻烦在帮我看看http://www.itpub.net/418625.html
另外做csscan full=y fromchar=ZHS16GBK tochar=UTF8 log=check.log capture=y array=1000000 process=2,这个操作我在导入结束后再目标库上做,fromchar=ZHS16GBK 是不是代表了导出dmp的字符集,tochar=UTF8是不是代表了目标数据库的字符集 ?
我刚在目标库上做完,看到几乎每张表都转换出了问题,难道从ZHS16GBK 向UTF8转换,只要是汉字就不能转换?

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部