Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2624698
  • 博文数量: 323
  • 博客积分: 10211
  • 博客等级: 上将
  • 技术积分: 4934
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-27 14:56
文章分类

全部博文(323)

文章存档

2012年(5)

2011年(3)

2010年(6)

2009年(140)

2008年(169)

分类: Oracle

2009-04-10 14:00:49

SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
 
SQL> seleQct * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1         20    5144576          1 YES      INACTIVE                645532 2009-4-10 9
         2          1         21    5144576          1 YES      ACTIVE                  649130 2009-4-10 1
         3          1         22    5144576          1 NO       CURRENT                 649181 2009-4-10 1

 
模拟日志块的损坏:
 
用UE编辑这个current日志文件。继续切换:
 
SQL> alter system switch logfile;
System altered
 
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1         23    5144576          1 NO       CURRENT                 652211 2009-4-10 1
         2          1         21    5144576          1 YES      INACTIVE                649130 2009-4-10 1
         3          1         22    5144576          1 NO       ACTIVE                  649181 2009-4-10 1
 
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1         23    5144576          1 NO       CURRENT                 652211 2009-4-10 1
         2          1         21    5144576          1 YES      INACTIVE                649130 2009-4-10 1
         3          1         22    5144576          1 NO       INACTIVE                649181 2009-4-10 1
--可以看到日志的状态变化,但一直没有归档。此时查看告警日志有这样的报错:
 
Fri Apr 10 11:33:09 2009
ARC0: Log corruption near block 523 change 649835 time ?
Fri Apr 10 11:33:09 2009
Errors in file c:\oracle\product\10.2.0\admin\orasjh\bdump\orasjh_arc0_2436.trc:
ORA-00354: 损坏重做日志块头部
ORA-00353: 日志损坏接近块 523 更改 649835 时间 04/10/2009 10:12:50
ORA-00312: 联机日志 3 线程 1: 'E:\ORACLE\ORASJH\REDO03.LOG'
ARC0: All Archive destinations made inactive due to error 354
Committing creation of archivelog 'E:\ORACLE\ORASJH\ARCHIVE\ARC00022_0682881273.001' (error 354)
ARC0: Failed to archive thread 1 sequence 22 (354)
ARCH: Archival stopped, error occurred. Will continue retrying
Fri Apr 10 11:33:09 2009
Errors in file c:\oracle\product\10.2.0\admin\orasjh\bdump\orasjh_arc0_2436.trc:
ORA-16038: 日志 3 序列号 22 无法归档
ORA-00354: 损坏重做日志块头部
ORA-00312: 联机日志 3 线程 1: 'E:\ORACLE\ORASJH\REDO03.LOG'
Fri Apr 10 11:33:27 2009
ARC1: Log corruption near block 523 change 649835 time ?
Fri Apr 10 11:33:27 2009
Errors in file c:\oracle\product\10.2.0\admin\orasjh\bdump\orasjh_arc1_2516.trc:
ORA-00354: 损坏重做日志块头部
ORA-00353: 日志损坏接近块 523 更改 649835 时间 04/10/2009 10:12:50
ORA-00312: 联机日志 3 线程 1: 'E:\ORACLE\ORASJH\REDO03.LOG'
ARC1: All Archive destinations made inactive due to error 354
Committing creation of archivelog 'E:\ORACLE\ORASJH\ARCHIVE\ARC00022_0682881273.001' (error 354)
ARC1: Failed to archive thread 1 sequence 22 (354)
Fri Apr 10 11:34:28 2009
ARC0: Log corruption near block 523 change 649835 time ?
Fri Apr 10 11:34:28 2009
Errors in file c:\oracle\product\10.2.0\admin\orasjh\bdump\orasjh_arc0_2436.trc:
ORA-00354: 损坏重做日志块头部
ORA-00353: 日志损坏接近块 523 更改 649835 时间 04/10/2009 10:12:50
ORA-00312: 联机日志 3 线程 1: 'E:\ORACLE\ORASJH\REDO03.LOG'
ARC0: All Archive destinations made inactive due to error 354
Committing creation of archivelog 'E:\ORACLE\ORASJH\ARCHIVE\ARC00022_0682881273.001' (error 354)
ARC0: Failed to archive thread 1 sequence 22 (354)
 
 
SQL> alter system switch logfile;
System altered
 
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1         23    5144576          1 NO       ACTIVE                  652211 2009-4-10 1
         2          1         24    5144576          1 NO       CURRENT                 652404 2009-4-10 1
         3          1         22    5144576          1 NO       INACTIVE                649181 2009-4-10 1
 
SQL> alter system switch logfile;
--当日志组进行第三次切换的时候数据库hung住了。因为第3个日志组还没有完成归档,数据库正等待它完成归档,所以hung住了。开启另外一个窗口进行操作。
 
SQL> shutdown immediate;   --速度有点慢。
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
 
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  167772160 bytes
Fixed Size                  1247876 bytes
Variable Size              71304572 bytes
Database Buffers           88080384 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。

SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- --------------
         1          1         25    5144576          1 NO  CURRENT
       652481 10-4月 -09
         2          1         24    5144576          1 YES INACTIVE
       652404 10-4月 -09
         3          1         22    5144576          1 NO  INACTIVE
       649181 10-4月 -09
 
--注意数据库重新启动后,原来因为日志块损坏的日志组依然无法归档,且SEQUENCE#不变。重启之前等待归档的日志组已经归档,且当前日志跳到了日志组1。SEQUENCE#开始不连续。
 
SQL> alter system switch logfile;
系统已更改。
 
SQL> alter system switch logfile;
 
--通过两次切换DB又开始挂住了。打开另一个窗口继续测试。
 
C:\Documents and Settings\IS_SJH>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 4月 10 11:47:13 2009
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  167772160 bytes
Fixed Size                  1247876 bytes
Variable Size              71304572 bytes
Database Buffers           88080384 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。

SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- --------------
         1          1         27    5144576          1 NO  CURRENT
       653254 10-4月 -09
         2          1         26    5144576          1 YES INACTIVE
       653224 10-4月 -09
         3          1         22    5144576          1 NO  INACTIVE
       649181 10-4月 -09
--SEQUENCE# 还是22。
 
SQL> alter database clear unarchived logfile group 3;
数据库已更改。
 
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- --------------
         1          1         27    5144576          1 NO  CURRENT
       653254 10-4月 -09
         2          1         26    5144576          1 YES INACTIVE
       653224 10-4月 -09
         3          1          0    5144576          1 YES UNUSED
       649181 10-4月 -09

SQL> alter system switch logfile;
系统已更改。
 
SQL> alter system switch logfile;
系统已更改。
 
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- --------------
         1          1         27    5144576          1 YES ACTIVE
       653254 10-4月 -09
         2          1         29    5144576          1 NO  CURRENT
       653685 10-4月 -09
         3          1         28    5144576          1 YES ACTIVE
       653675 10-4月 -09
 
--因为是inactive的redo,所以用clear还是比较好解决的。当遇到以上日志块损坏的情况导致无法归档时,我们通过查询v$archive_dest会发现当前归档的路径状态是error的。
阅读(3029) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~