本文是作者在生产中碰到的一个实际案例,表现ORA-01578问题,下面是作者的详细解决过程。

笔者在一台出产用测验库上SELECT一个表时呈现ORA-01578,一个块损坏,曾经学习过块损坏怎样处理,到还真没遇到过,今日总算让我遇到了,仍是一台出产用测验库,就不必很紧张了。

实例解说Oracle 9i数据坏块的处理(oracle逻辑坏块处理)  ORA-01578 坏块 Oracle 第1张

数据库版本是9.2.0.4,Oracle9i的RMAN有一个blockrecover指令,能够在线修正坏块,以下便是运用RMAN修正坏块的进程。

SQL> conn owi/owi
Connected.
SQL> select * from dpa_history;
select * from dpa_history
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 15, block # 18)
ORA-01110: data file 15: '/d01/app/oracle/oradata/dpa/dpa01.dbf'

报ORA-01578数据块损坏,以下运用RMAN指令查询是否能够运用blockrecover指令康复以及怎样康复

运用rman登录catalog数据库

[ora9@rmanserver ~]$ rman target sys/oracle@dpa catalog rman/rman

Recovery Manager: Release 9.2.0.8.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

connected to target database: DPA (DBID=843495022)
connected to recovery catalog database

查找最近datafile 15的全备份,今日下午刚做了一次RMAN的全备份

RMAN> list backup of datafile 15;


List of Backup Sets
===================

BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
643 Full 64K DISK 00:00:27 16-MAR-09
BP Key: 650 Status: AVAILABLE Tag: TAG20090316T154352
Piece Name: /d02/fullbackup/20090316_data_24_1
List of Datafiles in backup set 643
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
15 Full 11856250905 16-MAR-09 /d01/app/oracle/oradata/dpa/dpa01.dbf

查找SCN 11856250905 今后的archivelog是否有备份

RMAN> list backup of archivelog scn from 11856250905

List of Backup Sets
===================

BS Key Size Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
680 265K DISK 00:00:00 16-MAR-09
BP Key: 681 Status: AVAILABLE Tag: TAG20090316T154731
Piece Name: /d02/fullbackup/20090316_arch_28

List of Archived Logs in backup set 680
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- --------- ---------- ---------
1 109 11856250805 16-MAR-09 11856251483 16-MAR-09
1 110 11856251483 16-MAR-09 11856251487 16-MAR-09

查找sequence 110 今后的archivelog是否有备份

RMAN> list copy of archivelog from sequence 110;

List of Archived Log Copies
Key Thrd Seq S Low Time Name
------- ---- ------- - --------- ----
694 1 111 A 16-MAR-09 /d02/arch/1_111.dbf
695 1 112 A 16-MAR-09 /d02/arch/1_112.dbf

查询online archive log

SQL> select sequence#,members,archived,status from v$log;

SEQUENCE# MEMBERS ARC STATUS
---------- ---------- --- ----------------
113 1 NO CURRENT
111 1 YES INACTIVE
112 1 YES INACTIVE

从以上查询中能够看出datafile 15有一次最近的全备份,有全备份以来的一切archivelog,online redo log
下面开端blockreocver,其实指令很简单

RMAN> blockrecover datafile 15 block 18;

Starting blockrecover at 16-MAR-09
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=16 devtype=DISK


channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00015
channel ORA_DISK_1: restored block(s) from backup piece 1
piece handle=/d02/fullbackup/20090316_data_24_1 tag=TAG20090316T154352 params=NULL
channel ORA_DISK_1: block restore complete

starting media recovery

archive log thread 1 sequence 111 is already on disk as file /d02/arch/1_111.dbf
archive log thread 1 sequence 112 is already on disk as file /d02/arch/1_112.dbf
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=109
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=110
channel ORA_DISK_1: restored backup piece 1
piece handle=/d02/fullbackup/20090316_arch_28 tag=TAG20090316T154731 params=NULL
channel ORA_DISK_1: restore complete
media recovery complete
Finished blockrecover at 16-MAR-09

再SELECT一下表DPA_HISTORY

SQL> select * from dpa_history;

PRODLINEID BARCODE PA
---------- ------------------------------ --
7 S*33040-D8311050149512B 03
7 S*33040-D8311050143512B 03
7 S*33040-D8311050140512B 03
7 S*33040-D8311050144512B 03
7 S*33040-D8311050151512B 03
7 S*33040-D8311050262512B 03
7 S*33040-D8311050552512B 03
7 S*33040-D8311050345512B 03
7 S*33040-D8311050170512B 03

【修改引荐】

  1. 用Instant client批量装置Oracle客户端
  2. Oracle 11g中完成自我调整功用
  3. Oracle数据块原理深化分析
转载请说明出处
知优网 » 实例解说Oracle 9i数据坏块的处理(oracle逻辑坏块处理)

发表评论

您需要后才能发表评论