1、 创建一张测试表:
create table t1(a integer,b varchar2(100),c varchar2(100));
insert into t1 values(1,null,'aaaa');
insert into t1 values(1,null,'bbbb');
insert into t1 values(1,1111,null);
2、 查找表(段)所在的位置:
select extent_id,file_id,block_id from dba_extents where segment_name='T1';
3、 查找12号文件是什么:
select file_name from dba_data_files where file_id=12;
4、 查找具体的块号:
5、 下面用linux命令dd将3029这个块dump出来:
dd if=/oradata/oracle/datafiles/NNC_DATA01_07.dbf of=g.dmp bs=8192 skip=3029 count=1
cp g.dmp /db_backup/
6、 UE打开g.dmp文件进行查看,文件尾部:
其中
蓝色的数字代表:2c是行头,01表示改行使用了1号ITL槽,03表示这一条记录有多少个字段(3个)。
02,c1,02是第一个字段的值,这个字段是数字类型,02表示该字段的长度,C1 02就是十进制的1, 后面的FF表示第二个字段为空值,而04,61,61,61是最后一个字段aaaa。、
第三条记录地址为00001fd0h,
以2c 01,02开头,每一行的第三个字节表示这一行的字段数量。而至一行在insert的时候最后一个字段为null。说明:如果某一行的最后几个字段都为null,oracle存储时会直接省略,以节约存储空间