ITPub博客

首页 > 数据库 > Oracle > [20170310]关于在线日志与归档3.txt

[20170310]关于在线日志与归档3.txt

原创 Oracle 作者:lfree 时间:2017-03-10 15:04:46 0 删除 编辑

[20170310]关于在线日志与归档3.txt

--//当日志写满了,或者执行手工了切换,再或者rman备份时有时也会触发日志切换:
alter system switch logfile ;
alter system archive log current ;

--//前面已经探究日志文件的OS块(第0块)以及日志文件头块(第1块).剩下日志记录了
--//本文简单探究日志归档是如何保存的.探查日志文件的记录.

1.环境:
--//启动到mount状态.

SYS@book> @ &r/ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> @ &r/logfile
GROUP# STATUS     TYPE       MEMBER                          IS_ GROUP# THREAD# SEQUENCE#       BYTES BLOCKSIZE MEMBERS ARC STATUS     FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME
------ ---------- ---------- ------------------------------- --- ------ ------- --------- ----------- --------- ------- --- ---------- ------------- ------------------- ------------ -------------------
     1            ONLINE     /mnt/ramdisk/book/redo01.log    NO       1       1       695    52428800       512       1 YES INACTIVE     13276910949 2017-02-28 14:40:12  13276931102 2017-03-09 10:01:48
     2            ONLINE     /mnt/ramdisk/book/redo02.log    NO       2       1       696    52428800       512       1 YES INACTIVE     13276931102 2017-03-09 10:01:48  13276931986 2017-03-09 10:02:36
     3            ONLINE     /mnt/ramdisk/book/redo03.log    NO       3       1       697    52428800       512       1 NO  CURRENT      13276931986 2017-03-09 10:02:36 2.814750E+14
     4            STANDBY    /mnt/ramdisk/book/redostb01.log NO
     5            STANDBY    /mnt/ramdisk/book/redostb02.log NO
     6            STANDBY    /mnt/ramdisk/book/redostb03.log NO
     7            STANDBY    /mnt/ramdisk/book/redostb04.log NO
7 rows selected.

--//仅仅拿seq#=696 来研究.

$ ls -l /mnt/ramdisk/book/redo02.log /u01/app/oracle/archivelog/book/1_696_896605872.dbf
-rw-r----- 1 oracle oinstall 52429312 2017-03-09 10:02:36 /mnt/ramdisk/book/redo02.log
-rw-r----- 1 oracle oinstall  1626112 2017-03-09 10:02:38 /u01/app/oracle/archivelog/book/1_696_896605872.dbf

--//前面我们探查了日志文件的OS块.下面将继续探究日志的记录从第2块开始.

2.先取第2块看看:

$ dd if=/u01/app/oracle/archivelog/book/1_696_896605872.dbf bs=512 count=1 skip=2 2>/dev/null | md5sum
d8c6fc00e84b8eff93ecad9ff87627c7  -

$ dd if=/mnt/ramdisk/book/redo02.log bs=512 count=1 skip=2 2>/dev/null | md5sum
d8c6fc00e84b8eff93ecad9ff87627c7  -

--//md5一样,哈哈下面就基本就是原始的拷贝了.也就是不做任何修改.
--//1626112/512=3176,跳过前面2块,就是3174块.

$ dd if=/u01/app/oracle/archivelog/book/1_696_896605872.dbf bs=512  skip=2 2>/dev/null | md5sum
62f6d618e02ed3e7ba50ed68138fe440  -

$ dd if=/u01/app/oracle/archivelog/book/1_696_896605872.dbf bs=512 count=3174 skip=2 2>/dev/null | md5sum
62f6d618e02ed3e7ba50ed68138fe440  -

$ dd if=/mnt/ramdisk/book/redo02.log bs=512 count=3174 skip=2 2>/dev/null|  md5sum
62f6d618e02ed3e7ba50ed68138fe440  -

--//可以看出第2块的redo记录开始就是简单的拷贝.

3.这样就可以产生一个恢复思路,假设redo损坏,我该日志已经归档日志文件,可以利用这个文件重新构造在线日志:
--//A.第0块修改就是记录块数量. 偏移0x18~0x1B处.
  实际上只要大小一样,文件头可以使用别的好的文件头文件替换.

$ dd if=/mnt/ramdisk/book/redo01.log bs=512 count=1  2>/dev/null|  md5sum
1e958fb94196354fc1d7a650b43d728b  -

$ dd if=/mnt/ramdisk/book/redo02.log bs=512 count=1  2>/dev/null|  md5sum
1e958fb94196354fc1d7a650b43d728b  -

$ dd if=/mnt/ramdisk/book/redo03.log bs=512 count=1  2>/dev/null|  md5sum
1e958fb94196354fc1d7a650b43d728b  -

$ dd if=/mnt/ramdisk/book/redostb01.log bs=512 count=1  2>/dev/null|  md5sum
1e958fb94196354fc1d7a650b43d728b  -

--//你可以发现os块,md5都是一样(因为日志文件大小一样)

B.第1块我感觉不改也可以通过.

C.日志记录就是简单拷贝,根本不需要改动.剩下就是空白块如何填充.

$ ls -l /mnt/ramdisk/book/redo02.log /u01/app/oracle/archivelog/book/1_696_896605872.dbf
-rw-r----- 1 oracle oinstall 52429312 2017-03-09 10:02:36 /mnt/ramdisk/book/redo02.log
-rw-r----- 1 oracle oinstall  1626112 2017-03-09 10:02:38 /u01/app/oracle/archivelog/book/1_696_896605872.dbf

--//52429312 - 1626112=50803200,还有50803200/512=99225块需要 补充.主要这个如何实现.
--//直接使用空白是否可行,留下下次测试....

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

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969645