- 最后登录
- 2015-3-26
- 在线时间
- 16 小时
- 威望
- 12
- 金钱
- 186
- 注册时间
- 2011-10-12
- 阅读权限
- 10
- 帖子
- 37
- 精华
- 0
- 积分
- 12
- UID
- 6
|
1#
发表于 2012-6-12 23:32:58
|
查看: 6669 |
回复: 1
数据库版本:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
F:\>rman target /
恢复管理器: Release 11.2.0.1.0 - Production on 星期二 6月 12 22:07:52 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ROAM (DBID=3471447839)
RMAN> backup database;
启动 backup 于 12-6月 -12
....
通道 ORA_DISK_1: 正在启动段 1 于 12-6月 -12
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/12/2012 22:08:14 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (从 4039114752 限制中)
继续执行其他作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 12-6月 -12
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/12/2012 22:08:19 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (从 4039114752 限制中)
RMAN>
错误信息提示超出恢复文件数的限制,我备份数据库时采用的默认方式直接备份到对当目录中.
查看恢复区的大小:
SQL> show parameter recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string f:\app\archivelog
db_recovery_file_dest_size big integer 3852M
recovery_parallelism integer 0
查看闪回恢复去的使用率:
SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 99.37 0 84
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
归档将恢复区填满了:
SQL> set lines 100
SQL> col name format a60
SQL> select name,floor(space_limit/1024/1024) "Size MB",ceil(space_used/1024/1024) "Used MB"
from v$recovery_file_dest order by name;
NAME Size MB Used MB
------------------------------------------------------------ ---------- ----------
f:\app\archivelog 3852 3828
既然满了,先删除一些归档,测试库也不怎么用的。
RMAN> delete archivelog all;
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=140 设备类型=DISK
db_unique_name 为 ROAM 的数据库的归档日志副本列表
=====================================================================
关键字 线程序列 S 时间下限
------- ---- ------- - ----------
......
108 1 255 A 28-5月 -12
名称: F:\APP\ARCHIVELOG\ARC0000000255_0773059810.0001
是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除的归档日志
.....
归档日志文件名=F:\APP\ARCHIVELOG\ARC0000000255_0773059810.0001 RECID=108 STAMP=785788854
107 对象已删除
RMAN> list archivelog all;
说明与资料档案库中的任何归档日志都不匹配
RMAN> exit
恢复管理器完成。
F:\>exit
SQL> select name,floor(space_limit/1024/1024) "Size MB",ceil(space_used/1024/1024) "Used MB"
from v$recovery_file_dest order by name;
NAME Size MB Used MB
------------------------------------------------------------ ---------- ----------
f:\app\archivelog 3852 0
SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
-------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG 0 0 0
ARCHIVED LOG 0 0 0
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 0 0 0
FOREIGN ARCHIVED LOG 0 0 0
SQL> select sum(bytes)/1024/1024 mb from dba_segments;
MB
----------
1744.9375
SQL>
SQL>
SQL> host
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
RMAN> backup database;
启动 backup 于 12-6月 -12
通道 ORA_DISK_1: 正在启动段 1 于 12-6月 -12
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/12/2012 22:40:27 上) 失败
ORA-19566: 超出损坏块限制 0 (文件 F:\APP\ADMINISTRATOR\ORADATA\ROAM\YB.DBF)
继续执行其他作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 12-6月 -12
通道 ORA_DISK_1: 已完成段 1 于 12-6月 -12
段句柄=F:\APP\ARCHIVELOG\ROAM\BACKUPSET\2012_06_12\O1_MF_NCSNF_TAG20120612T223841_7XGO6Z3F_.BKP 标记=TAG20120612T223841
注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 06/12/2012 22:40:27 上) 失败
ORA-19566: 超出损坏块限制 0 (文件 F:\APP\ADMINISTRATOR\ORADATA\ROAM\YB.DBF)
RMAN> exit
恢复管理器完成。
悲剧呀! 一个简单备份错误这么多。根据错误提示文件出现坏块,先用dbv检验一下看看结果:
F:\>dbv file=F:\APP\ADMINISTRATOR\ORADATA\ROAM\YB.DBF blocksize=8192
DBVERIFY: Release 11.2.0.1.0 - Production on 星期二 6月 12 22:46:37 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - 开始验证: FILE = F:\APP\ADMINISTRATOR\ORADATA\ROAM\YB.DBF
页 23063 流入 - 很可能是介质损坏
Corrupt block relative dba: 0x01805a17 (file 6, block 23063)
Fractured block found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x01805a17
last change scn: 0x0000.010ab5a5 seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xb5a50d01
check value in block header: 0x9185
computed block checksum: 0xe21f
页 23064 标记为损坏
Corrupt block relative dba: 0x01805a18 (file 6, block 23064)
Bad header found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x01405a18
last change scn: 0x0000.010ab5a5 seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xb5a50601
check value in block header: 0xc767
computed block checksum: 0xa4ae
DBVERIFY - 验证完成
最高块 SCN : 17485122 (0.17485122)
F:\>
果然出现坏块。接下来去库里面看看到底是什么对象遭遇坏块了:
SQL> select tablespace_name,segment_type,owner,segment_name from dba_extents
where file_id=6 and 23063 between block_id and block_id+blocks-1;
TABLESPACE_NAME SEGMENT_TYPE OWNER SEGMENT_NA
------------------------------ ------------------ ------------------------------ ----------
YB TABLE YB T2
查询数据库的坏块:
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
6 23064 1 0 CORRUPT
6 23063 1 0 FRACTURED
8 461 1 0 CHECKSUM
接下来该怎么处理这个问题呀?不会了。
[ 本帖最后由 alonedba 于 2012-6-12 23:38 编辑 ] |
|