在之前测试已经使用了基于dba的方法,本文测试其它几种方法,如下:
1. To dump records based on RBA (Redo Block Address) --基于rda
2. To dump records based on time --基于时间
3. To dump records based on layer and opcode --基于内部操作代码的内核所在层;这个比较高级一般用不上
4. Dump the file header information --dump头部信息 ,查看redo header不错的命令
1. To dump records based on RBA (Redo Block Address) --基于rda
既然要根据rba来dump redo,如何获取rba,可采用:
alter system dump logfile 'dump的日志文件';
或
alter system dump logfile 'D:\ORACLE11G_64BIT\ORADATA\ORCL\REDO07.LOG' dba min 10 276635 dba max 10 276635;
就可以产生如下的trace内容
REDO RECORD - Thread:1 RBA: 0x000314.0000e11f.0010 LEN: 0x00e0 VLD: 0x06
rba的组成及各部分含义:
(1)the log file sequence number (4 bytes)
(2)the log file block number (4 bytes)
(3)the byte offset into the block at which the redo record starts (2bytes)
--知道了rba含义,作事就简单了,操作如下:
---日志序列号
SQL> select to_number('314','xxxxxxxxxxx') from dual;
TO_NUMBER('314','XXXXXXXXXXX')
------------------------------
788
--日志文件中的块号
SQL> select to_number('e11f','xxxxxxxxxxx') from dual;
TO_NUMBER('E11F','XXXXXXXXXXX'
------------------------------
57631
然后运行基于rba的命令
alter system dump logfile 'D:\ORACLE11G_64BIT\ORADATA\ORCL\REDO07.LOG' rba min 788 57631 rba max 788 57631;
第二种dump log的方法
2. To dump records based on time --基于时间
这个我就不测试,可按网上一个非常优秀的贴子进行测试:
http://blog.csdn.net/tianlesoftware/article/details/6670962
第三种dump log的方法
3. To dump records based on layer and opcode
---这个其实就是filter out指定操作类型的
SQL> alter system dump logfile 'D:\ORACLE11G_64BIT\ORADATA\ORCL\REDO07.LOG' layer 11 opcode 18;
System altered
第四种dump log的方法
4. Dump the file header information --dump头部信息 ,查看redo header不错的命令
SQL> alter session set events 'immediate trace name redohdr level 6';
Session altered