ITPub博客

首页 > 数据库 > Oracle > 【体系结构】dump查看update操作redo日志

【体系结构】dump查看update操作redo日志

原创 Oracle 作者:海星星hktk 时间:2016-02-23 22:08:04 0 删除 编辑
dump查看update操作redo日志


1 切日志后查看当前日志组

SYS@PROD>select sequence#,group#,status from v$log;
SYS@PROD>alter system switch logfile;
SYS@PROD>select sequence#,group#,status from v$log;


SYS@PROD>select member from v$logfile where group# = 2;


2 执行dml操作

SCOTT@PROD>select * from emp;

SCOTT@PROD>update emp set sal=9999 where empno=7788;
SCOTT@PROD>select * from emp where empno=7788;
SCOTT@PROD>commit;


3 dump 日志文件

SYS@PROD>alter system dump logfile '/u01/app/oracle/oradata/PROD/redo02.log';


SYS@PROD>select value from v$diag_info where name = 'Default Trace File';


4 查看dump信息

[oracle@oracle ~]$ vi /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_ora_3125.trc

更新后的值和原始值,转换为16进制查看
SYS@PROD>select dump(9999,16) from dual;
SYS@PROD>select dump(3000,16) from dual;


vi中 搜索  c2 64 64


变更向量#1存放改动的值,变更向量#4存放之前的值 (回滚用undo)
变更向量#2存放事务信息,变更向量#3存放redo信息。

当前行的rowid
SCOTT@PROD>select rowid from emp where empno=7788;

rowid转换为文件号、块号、行号

SCOTT@PROD>select dbms_rowid.rowid_relative_fno(rowid) file#,
   dbms_rowid.rowid_block_number(rowid) block#,
   dbms_rowid.rowid_row_number(rowid) row#
   from emp where empno=7788;

这行数据在文件4的第151号块的第8行。


CHANGE1#的16进制DBA(data block address)转10进制,再转成文件号,块号
SCOTT@PROD>select to_number('1000097','xxxxxxxxxxxx') from dual;
查看对应的文件号,块号
SCOTT@PROD>select dbms_utility.data_block_address_file(16777367) file#,
   dbms_utility.data_block_address_block(16777367) block# from dual;







吕星昊
2016.2.23

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29475508/viewspace-1993361/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle OCM 讲师。达梦认证讲师DM8-DCI。OceanBase认证讲师OBCI。拥有10g、12c OCM,OBCP等认证证书。曾任 Oracle WDP 注册OCM讲师,已培养Oracle OCP认证专家2000余人,培养Oracle OCM认证大师360余人。

注册时间:2014-02-08

  • 博文量
    128
  • 访问量
    2644730