redo log丢失还可以checkpoint

今天测试redo log丢失的recover,意外发现,rm redo log后,还可以insert data,checkpoint/swtich logfile,气死我!:

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1         19   52428800        512          1 NO  CURRENT                1173582 01-SEP-13   2.8147E+14
         2          1         17   52428800        512          1 YES INACTIVE               1172946 01-SEP-13      1172953 01-SEP-13
         3          1         18   52428800        512          1 YES ACTIVE                 1172953 01-SEP-13      1173582 01-SEP-13

SQL>host rm redo02.log

SQL> alter system switch logfile;

System altered.

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1         19   52428800        512          1 YES ACTIVE                 1173582 01-SEP-13      1173590 01-SEP-13
         2          1         20   52428800        512          1 NO  CURRENT                1173590 01-SEP-13   2.8147E+14
         3          1         18   52428800        512          1 YES ACTIVE                 1172953 01-SEP-13      1173582 01-SEP-13

SQL> insert into scott.t(txt) values('redo02');

1 row created.

SQL> commit;

扫描二维码关注公众号,回复: 1272919 查看本文章

Commit complete.

SQL> alter system checkpoint;  --料想这会报错的,可人算不如ORACLE算.....

System altered.  

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1         19   52428800        512          1 YES INACTIVE               1173582 01-SEP-13      1173590 01-SEP-13
         2          1         20   52428800        512          1 NO  CURRENT                1173590 01-SEP-13   2.8147E+14
         3          1         18   52428800        512          1 YES INACTIVE               1172953 01-SEP-13      1173582 01-SEP-13

后来,狗了很久,不得其解,忽见一文章云:rm并不能真正模拟文件的损坏,请注意这一点.

一刹那,明了,linux下rm文件后,若当前文件已有进程打开,其rm的文件并未真正释放.故oracle下还可以insert data /checkpoint.

继续 switch logfile:

SQL> alter system switch logfile;

System altered.
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1         21   52428800        512          1 NO  CURRENT                1178228 01-SEP-13   2.8147E+14
         2          1         20   52428800        512          1 NO  ACTIVE                 1173590 01-SEP-13      1178228 01-SEP-13
         3          1         18   52428800        512          1 YES INACTIVE               1172953 01-SEP-13      1173582 01-SEP-13

SQL> alter system switch logfile;

System altered.

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1         21   52428800        512          1 NO  ACTIVE                 1178228 01-SEP-13      1178293 01-SEP-13
         2          1         20   52428800        512          1 NO  ACTIVE                 1173590 01-SEP-13      1178228 01-SEP-13
         3          1         22   52428800        512          1 NO  CURRENT                1178293 01-SEP-13   2.8147E+14

--当所有Archived的redo log用完后,再switch,就出问题了

--log2一直active未能转到inactive,估计(某人识薄只能估计)该步需再寻址redo2.log,但rm将inode delete无法完成寻址,故hang住了。

SQL> alter system switch logfile;

--这里挂住了,cancel退出

^Calter system switch logfile
*
ERROR at line 1:
ORA-01013: user requested cancel of current operation

猜你喜欢

转载自peter19.iteye.com/blog/1935016