eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« Oracle and Hurricane Katrina | Blog首页 | How to simulate block corruption with BBED? »

关于od命令不同平台下不同输出问题说明
modb.pro

此前我在文章中提到过使用od命令查看dmp文件字符集的问题:
http://www.eygle.com/special/NLS_CHARACTER_SET_05.htm

后来看到Itpub上有人进行相关的讨论,并提出,同样的命令得出和我不同的输出。

检查一下,发现问题的原因在于Solaris/Linux上od命令的输出不同导致:

我当初的测试结果是Solaris下的输出:

$ cat a.dmp|od -x|head
0000000 0303 5445 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


而在Linux下od的输出和Solaris是不同的:

[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

注意Linux下od -x等加于-t x2

[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

显示结果中,高位和低位发生了交换。
所以0303 4554 ,应该为: 0303 5445

使用 -t x1参数可以得到更直观的输出,更适合在Linux下使用:

[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


历史上的今天...
    >> 2019-09-10文章:
    >> 2015-09-10文章:
    >> 2010-09-10文章:
    >> 2009-09-10文章:
    >> 2008-09-10文章:
    >> 2007-09-10文章:
    >> 2006-09-10文章:

By eygle on 2005-09-10 23:19 | Comments (1) | FAQ | 427 |

1 Comment

恩,x86是litte endianess,sparc是big endianess。


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com