Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

12

积分

0

好友

3

主题
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 编辑 ]
2#
发表于 2012-6-12 23:36:02
没有备份信息。
除了设置事件跳过坏块,丢失数据之外,有没有其他方法来恢复数据保证不丢失?
还有那三种坏块类型不太理解。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-26 11:38 , Processed in 0.044941 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569