Oracle RedoLog-基本概念和组成 (3)

第一,使用以下命令查看默认路径:

SQL> show parameter user_dump_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ user_dump_dest string c:\database\oracle\administrat or\diag\rdbms\orcl\orcl\trace

第二,在执行 dump 命令前后使用以下命令,可以显示:

SQL> oradebug setmypid; SQL> alter system dump logfile xxxxxxx SQL> oradebug tracefile_name; c:\database\oracle\xxxxxxx\xxxxxxx.trc 4.4 dump 一个 insert 操作

首先,查看当前使用的在线日志是哪一个,即状态为 CURRENT 的文件:

SQL> select l.STATUS, lf.MEMBER from v$log l, v$logfile lf where l.GROUP# = lf.GROUP#;

然后,往 scott 用户的 dept 表插入一条数据,查看 dump 的结果,命令如下:

SQL> select current_scn from v$database; CURRENT_SCN ----------- 1099234 SQL> insert into scott.dept values(50, 'a', 'a'); SQL> commit; SQL> select current_scn from v$database; CURRENT_SCN ----------- 1099246 SQL> alter system dump logfile '/u01/app/oradata/orcl/redo03.log' scn min 1099234 scn max 1099246;

最后,二进制 Redo log dump 的结果,这里只摘出了 insert 部分,太长了,相信也没人看~~:

CHANGE #1 TYP:0 CLS:1 AFN:4 DBA:0x01000085 OBJ:73194 SCN:0x0000.000e606a SEQ:1 OP:11.2 ENC:0 RBL:0 KTB Redo op: 0x01 ver: 0x01 compat bit: 4 (post-11) padding: 0 op: F xid: 0x0002.018.0000033a uba: 0x00c007a0.009b.40 KDO Op code: IRP row dependencies Disabled xtype: XA flags: 0x00000000 bdba: 0x01000085 hdba: 0x01000082 itli: 1 ispac: 0 maxfr: 4858 tabn: 0 slot: 0(0x0) size/delt: 10 fb: --H-FL-- lb: 0x1 cc: 3 null: --- col 0: [ 2] c1 33 col 1: [ 1] 61 col 2: [ 1] 61

简单解释下,OP:11.2 表示这是一个 insert 操作;OBJ:73194 表示操作的表是 scott.dept;最后三行的 col 表示操作的字段数据,显示的数值都是 16 进制,其中 c1 33 按照一定的运算逻辑会转成 50,61 就是字符 a 的 ASCII 编码。

5. 总结

建议上面的命令都手动执行下,别人总结的终究没有自己经历下,来的印象深刻。

本系列文章主要参考的有:

Julian Dyke 对 RedoLog 分析的 PPT

David Litchfield 对 Redo Logs 二进制文件剖析的 PDF

zhoubihui 发布在 GitHub 上的 redo_log_calculate_analysis 研究文章

以上资料网上均能搜索到,当然了,您也可以关注下wx公众号,「小创编程」回复关键字「redolog」获取。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspwfx.html