oracle实验记录 (恢复,备份-含坏块数据文件)
来源:互联网 发布:c语言中二维数组赋值 编辑:程序博客网 时间:2024/05/01 23:37
恢复坏块几种方式及其rman 备份与坏块
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> create tablespace ss datafile 'e:/datafile/ss.dbf' size 1m;
表空间已创建。
SQL> conn xh/a831115
已连接。
SQL> show user
USER 为 "XH"
SQL> create table ss (a char(2000), b char(2000), c char(2000) ) tablespace ss;
表已创建。
SQL> declare
2 begin
3 for i in 1..1000 loop
4 insert into ss values('a','b','c');
5 commit;
6 end loop;
7 end;
8 /
declare
*
第 1 行出现错误:
ORA-01653: 表 XH.SS 无法通过 8 (在表空间 SS 中) 扩展
ORA-06512: 在 line 4
SQL> select count(*) from ss;
COUNT(*)
----------
110
RMAN> list backup of database;
RMAN> backup database;
启动 backup 于 27-10月-09
使用通道 ORA_DISK_1
完成 Control File and SPFILE Autobackup 于 27-10月-09
shutdown immediate
SQL> conn xh/a831115
已连接。
~~~~~~UltraEdit~~破坏
SQL> select count(*) from ss;
select count(*) from ss
*
第 1 行出现错误:
ORA-01578: ORACLE 数据块损坏 (文件号 7, 块号 82)
ORA-01110: 数据文件 7: 'E:/DATAFILE/SS.DBF'
看见 出现 坏块了
顺便使用下
dbverify工具 检查数据文件
C:/>dbv
DBVERIFY: Release 10.2.0.1.0 - Production on 星期二 10月 27 20:47:36 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
关键字 说明 (默认值)
-------------------------------------------------- --
FILE 要验证的文件 (无)
START 起始块 (文件的第一个块)
END 结束块 (文件的最后一个块)
BLOCKSIZE 逻辑块大小 (8192)
LOGFILE 输出日志 (无)
FEEDBACK 显示进度 (0)
PARFILE 参数文件 (无)
USERID 用户名/口令 (无)
SEGMENT_ID 段 ID (tsn.relfile.block) (无)
HIGH_SCN 要验证的最高块 SCN (无)
(scn_wrap.scn_base 或 scn)
工具可使用的参数
C:/>dbv file=e:/datafile/ss.dbf feedback=100
DBVERIFY: Release 10.2.0.1.0 - Production on 星期二 10月 27 20:49:28 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
DBVERIFY - 开始验证: FILE = e:/datafile/ss.dbf
页 82 标记为损坏
Corrupt block relative dba: 0x01c00052 (file 7, block 82)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x01c00052
last change scn: 0x0000.0050f79a seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xf79a0602
check value in block header: 0xdd15
computed block checksum: 0x207c
..(每验证100个块出现一个.)
DBVERIFY - 验证完成
检查的页总数: 128
处理的页总数 (数据): 109
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 18
处理的总页数 (段) : 0
失败的总页数 (段) : 0
空的页总数: 0
标记为损坏的总页数: 1
流入的页总数: 0
最高块 SCN : 5306362 (0.5306362)
出现一个坏块 82
rman与坏块
SQL> col name format a30
SQL> select name,file# from v$datafile;
NAME FILE#
------------------------------ ----------
F:/ORACLE/PRODUCT/10.2.0/ORADA 1
TA/XHTEST/SYSTEM01.DBF
F:/ORACLE/PRODUCT/10.2.0/ORADA 2
TA/XHTEST/UNDOTBS01.DBF
F:/ORACLE/PRODUCT/10.2.0/ORADA 3
TA/XHTEST/SYSAUX01.DBF
F:/ORACLE/PRODUCT/10.2.0/ORADA 4
TA/XHTEST/USERS01.DBF
NAME FILE#
------------------------------ ----------
F:/ORACLE/PRODUCT/10.2.0/ORADA 5
TA/XHTEST/EXAMPLE01.DBF
E:/DATAFILE/TEST.DBF 6
E:/DATAFILE/SS.DBF 7
已选择7行。
C:/>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期二 10月 27 20:54:22 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: XHTEST (DBID=1778946334)
RMAN> backup datafile 7
2> ;
启动 backup 于 27-10月-09
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=140 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00007 name=E:/DATAFILE/SS.DBF
通道 ORA_DISK_1: 正在启动段 1 于 27-10月-09
备份不成功
SQL> desc v$database_block_corruption;
名称 是否为空? 类型
----------------------------------------- -------- ------------------------
FILE# NUMBER
BLOCK# NUMBER
BLOCKS NUMBER
CORRUPTION_CHANGE# NUMBER
CORRUPTION_TYPE VARCHAR2(9)
SQL> select count(*) from v$database_block_corruption where file#=7;
COUNT(*)
----------
0
RMAN> run{set maxcorrupt for datafile 7 to 2;
2> backup datafile 7;}
正在执行命令: SET MAX CORRUPT
启动 backup 于 27-10月-09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00007 name=E:/DATAFILE/SS.DBF
通道 ORA_DISK_1: 正在启动段 1 于 27-10月-09
通道 ORA_DISK_1: 已完成段 1 于 27-10月-09
段句柄=F:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/XHTE ST/BACKUPSET/2009_10_27/
O1_MF_NNNDF_TAG20091027T220531_5GFZKFVC_.BKP 标记=TAG20091027T220531 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 27-10月-09
启动 Control File and SPFILE Autobackup 于 27-10月-09
段 handle=F:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_ARE A/XHTEST/AUTOBACKUP/2009_10
_27/O1_MF_S_701388335_5GFZKJ0H_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 27-10月-09
SQL> select * from v$database_block_corruption where file#=7;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
7 82 1 0 CHECKSUM
用copy命令:
RMAN> run{set maxcorrupt for datafile 7 to 2;
2> copy datafile 7 to 'd:/tt.dbf';}
正在执行命令: SET MAX CORRUPT
启动 backup 于 27-10月-09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00007 name=E:/DATAFILE/SS.DBF
输出文件名 = D:/TT.DBF 标记 = TAG20091027T221051 recid = 75 时间戳 = 701388651
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
完成 backup 于 27-10月-09 启动 Control File and SPFILE Autobackup 于 27-10月-09
段 handle=F:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_ARE A/XHTEST/AUTOBACKUP/2009_10
_27/O1_MF_S_701388652_5GFZVFPY_.BKP comment=NONE
完成 Control File and SPFILE Autobackup 于 27-10月-09
SQL> select file#,blocks from v$copy_corruption where file#=7;
FILE# BLOCKS
---------- ----------
7 1
关于解决坏块
rman解决
RMAN> blockrecover device type disk datafile 5 block 82;
启动 blockrecover 于 27-10月-09
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=140 devtype=DISK
正在开始介质的恢复
介质恢复完成, 用时: 00:00:01
完成 blockrecover 于 27-10月-09
RMAN> blockrecover device type disk datafile 7 block 82;
启动 blockrecover 于 27-10月-09
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=140 devtype=DISK
通道 ORA_DISK_1: 正在从数据文件副本 D:/TT.DBF 复原块
故障转移到上一个备份
通道 ORA_DISK_1: 正在恢复块
通道 ORA_DISK_1: 正在指定要从备份集恢复的块
正在恢复数据文件 00007 的块
通道 ORA_DISK_1: 正在读取备份段 F:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/XHT
EST/BACKUPSET/2009_10_27/O1_MF_NNNDF_TAG20091027T2 20531_5GFZKFVC_.BKP
通道 ORA_DISK_1: 已从备份段 1 恢复块
段句柄 = F:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/XHTES T/BACKUPSET/2009_10_2
7/O1_MF_NNNDF_TAG20091027T220531_5GFZKFVC_.BKP 标记 = TAG20091027T220531
通道 ORA_DISK_1: 块恢复完成, 用时: 00:00:02
故障转移到上一个备份
通道 ORA_DISK_1: 正在恢复块
通道 ORA_DISK_1: 正在指定要从备份集恢复的块
正在恢复数据文件 00007 的块
通道 ORA_DISK_1: 正在读取备份段 F:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/XHT
EST/BACKUPSET/2009_10_27/O1_MF_NNNDF_TAG20091027T1 72314_5GFH04WS_.BKP
通道 ORA_DISK_1: 已从备份段 1 恢复块
段句柄 = F:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/XHTES T/BACKUPSET/2009_10_2
7/O1_MF_NNNDF_TAG20091027T172314_5GFH04WS_.BKP 标记 = TAG20091027T172314
通道 ORA_DISK_1: 块恢复完成, 用时: 00:00:01
正在开始介质的恢复
介质恢复完成, 用时: 00:00:07
完成 blockrecover 于 27-10月-09
RMAN>
SQL> conn xh/a831115
已连接。
SQL> select count(*) from ss;
COUNT(*)
---------- 恢复完成后可以查询
110
dbms_repair 解决:可以检测坏块 ,修复坏块(跳过坏块,丢数据)
再次制造坏块
SQL> conn xh/a831115
已连接。
SQL> select count(*) from ss;
select count(*) from ss
*
第 1 行出现错误:
ORA-01578: ORACLE 数据块损坏 (文件号 7, 块号 84)
ORA-01110: 数据文件 7: 'E:/DATAFILE/SS.DBF'
SQL> conn / as sysdba
已连接。
SQL> desc sys.dbms_repair
PROCEDURE ADMIN_TABLES
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
TABLE_NAME VARCHAR2 IN DEFAULT
TABLE_TYPE BINARY_INTEGER IN
ACTION BINARY_INTEGER IN
TABLESPACE VARCHAR2 IN DEFAULT
PROCEDURE CHECK_OBJECT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
SCHEMA_NAME VARCHAR2 IN
OBJECT_NAME VARCHAR2 IN
PARTITION_NAME VARCHAR2 IN DEFAULT
OBJECT_TYPE BINARY_INTEGER IN DEFAULT
REPAIR_TABLE_NAME VARCHAR2 IN DEFAULT
FLAGS BINARY_INTEGER IN DEFAULT
RELATIVE_FNO BINARY_INTEGER IN DEFAULT
BLOCK_START BINARY_INTEGER IN DEFAULT
BLOCK_END BINARY_INTEGER IN DEFAULT
CORRUPT_COUNT BINARY_INTEGER OUT
PROCEDURE DUMP_ORPHAN_KEYS
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
SCHEMA_NAME VARCHAR2 IN
OBJECT_NAME VARCHAR2 IN
PARTITION_NAME VARCHAR2 IN DEFAULT
OBJECT_TYPE BINARY_INTEGER IN DEFAULT
REPAIR_TABLE_NAME VARCHAR2 IN DEFAULT
ORPHAN_TABLE_NAME VARCHAR2 IN DEFAULT
FLAGS BINARY_INTEGER IN DEFAULT
KEY_COUNT BINARY_INTEGER OUT
PROCEDURE FIX_CORRUPT_BLOCKS
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
SCHEMA_NAME VARCHAR2 IN
OBJECT_NAME VARCHAR2 IN
PARTITION_NAME VARCHAR2 IN DEFAULT
OBJECT_TYPE BINARY_INTEGER IN DEFAULT
REPAIR_TABLE_NAME VARCHAR2 IN DEFAULT
FLAGS BINARY_INTEGER IN DEFAULT
FIX_COUNT BINARY_INTEGER OUT
FUNCTION ONLINE_INDEX_CLEAN RETURNS BOOLEAN
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
OBJECT_ID BINARY_INTEGER IN DEFAULT
WAIT_FOR_LOCK BINARY_INTEGER IN DEFAULT
PROCEDURE REBUILD_FREELISTS
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
SCHEMA_NAME VARCHAR2 IN
OBJECT_NAME VARCHAR2 IN
PARTITION_NAME VARCHAR2 IN DEFAULT
OBJECT_TYPE BINARY_INTEGER IN DEFAULT
PROCEDURE REBUILD_SHC_INDEX
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
SEGMENT_OWNER VARCHAR2 IN
CLUSTER_NAME VARCHAR2 IN
PROCEDURE SEGMENT_FIX_STATUS
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
SEGMENT_OWNER VARCHAR2 IN
SEGMENT_NAME VARCHAR2 IN
SEGMENT_TYPE BINARY_INTEGER IN DEFAULT
FILE_NUMBER BINARY_INTEGER IN DEFAULT
BLOCK_NUMBER BINARY_INTEGER IN DEFAULT
STATUS_VALUE BINARY_INTEGER IN DEFAULT
PARTITION_NAME VARCHAR2 IN DEFAULT
PROCEDURE SKIP_CORRUPT_BLOCKS
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
SCHEMA_NAME VARCHAR2 IN
OBJECT_NAME VARCHAR2 IN
OBJECT_TYPE BINARY_INTEGER IN DEFAULT
FLAGS BINARY_INTEGER IN DEFAULT
SQL>
先用dbms_repair.admin建立 孤表和修复表
ADMIN_TABLES :Provides administrative functions (create, drop, purge) for repair or orphan key tables.
Note: These tables are always created in the SYS schema.
CHECK_OBJECT :Detects and reports corruptions in a table or index
DUMP_ORPHAN_KEYS :Reports on index entries that point to rows in corrupt data blocks
FIX_CORRUPT_BLOCKS :Marks blocks as software corrupt that have been previously identified as corrupt by the CHECK_OBJECT procedure
REBUILD_FREELISTS :Rebuilds the free lists of the object
SEGMENT_FIX_STATUS :Provides the capability to fix the corrupted state of a bitmap entry when segment space management is AUTO
SKIP_CORRUPT_BLOCKS: When used, ignores blocks marked corrupt during table and index scans. If not used, you get error ORA-1578 when encountering blocks
marked corrupt.
s.
1 begin
2 dbms_repair.admin_tables(table_name=>'REPAIR_tb',ta ble_type=>dbms_repair.re
pair_table,action=>dbms_repair.create_action,tables pace=>'USERS');
3* end;
SQL> /
PL/SQL 过程已成功完成。
repair table必须要有REPAIR_前缀(否则报错ORA-24129: 表名 repair_tb 没有以前缀 REPAIR_ 开始)
table_type=>dbms_repair.orphan_table:记录坏块检查结果
table_type=>dbms_repair.repair_table:与index有关系,记录坏块在index中的KEY VALUE
SQL> desc REPAIR_tb
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
OBJECT_ID NOT NULL NUMBER
TABLESPACE_ID NOT NULL NUMBER
RELATIVE_FILE_ID NOT NULL NUMBER
BLOCK_ID NOT NULL NUMBER
CORRUPT_TYPE NOT NULL NUMBER
SCHEMA_NAME NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
BASEOBJECT_NAME VARCHAR2(30)
PARTITION_NAME VARCHAR2(30)
CORRUPT_DESCRIPTION VARCHAR2(2000)
REPAIR_DESCRIPTION VARCHAR2(200)
MARKED_CORRUPT NOT NULL VARCHAR2(10)
CHECK_TIMESTAMP NOT NULL DATE
FIX_TIMESTAMP DATE
REFORMAT_TIMESTAMP DATE
建立好的结构
检查坏块
SQL> SET SERVEROUTPUT ON
1 DECLARE num_corrupt INT;
2 BEGIN
3 num_corrupt := 0;
4 DBMS_REPAIR.CHECK_OBJECT (
5 SCHEMA_NAME => 'XH',
6 OBJECT_NAME => 'SS',
7 REPAIR_TABLE_NAME => 'REPAIR_TB',
8 CORRUPT_COUNT => num_corrupt);
9 DBMS_OUTPUT.PUT_LINE('number corrupt: ' || TO_CHAR (num_corrupt));
10* END;
SQL> /
number corrupt: 2
有2个坏块
SQL> select object_name,block_id,MARKED_CORRUPT from repair_tb;
OBJECT_NAME BLOCK_ID MARKED_COR
------------------------------ ---------- ----------
SS 84 TRUE
SS 85 TRUE
84,85为坏块
1 DECLARE num_fix INT;
2 BEGIN
3 num_fix := 0;
4 DBMS_REPAIR.FIX_CORRUPT_BLOCKS (
5 SCHEMA_NAME => 'XH',
6 OBJECT_NAME=> 'SS',
7 OBJECT_TYPE => dbms_repair.table_object,
8 REPAIR_TABLE_NAME => 'REPAIR_TB',
9 FIX_COUNT=> num_fix);
10 DBMS_OUTPUT.PUT_LINE('num fix: ' || TO_CHAR(num_fix));
11* END;
SQL> /
num fix: 0
PL/SQL 过程已成功完成。
在check阶段已经标记为损坏,所以修正阶段 返回为0
跳过坏块
1 BEGIN
2 DBMS_REPAIR.SKIP_CORRUPT_BLOCKS (
3 SCHEMA_NAME => 'XH',
4 OBJECT_NAME => 'SS',
5 OBJECT_TYPE => dbms_repair.table_object,
6 FLAGS => dbms_repair.skip_flag);
7* END;
SQL> /
PL/SQL 过程已成功完成。
SQL> conn xh/a831115
已连接。
SQL> select count(*) from ss;
COUNT(*)
----------
108
可以看到正好丢了 2行的数据(建立表时每行对应一个块)
另外如果有INDEX的话要执行
用来保存坏块对应index的 key value(否则不一直FTS 报错,INDEX SCAN 不报错)
SET SERVEROUTPUT ON
DECLARE num_orphans INT;
BEGIN
num_orphans := 0;
DBMS_REPAIR.DUMP_ORPHAN_KEYS (
SCHEMA_NAME => 'XH',
OBJECT_NAME => 'IND_SS',
OBJECT_TYPE => dbms_repair.index_object,
REPAIR_TABLE_NAME => 'REPAIR_TB',
ORPHAN_TABLE_NAME=> 'ORPHAN_KEY_TABLE',
KEY_COUNT => num_orphans);
DBMS_OUTPUT.PUT_LINE('orphan key count: ' || TO_CHAR(num_orphans));
END;
/
建立玩上面的表 执行后
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
~~~~~~~~~~~~~~~在制造坏块
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 104858304 bytes
Database Buffers 176160768 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn xh/a831115
已连接。
SQL> select count(*) from ss;
COUNT(*)
----------
106~~~~~~~~~~~~~~~~~~~~~将自己跳过坏块(奇怪)
SQL> select object_name,block_id from repair_tb;
OBJECT_NAME BLOCK_ID
------------------------------ ----------
SS 84
SS 85
中还是记录2个坏块
SQL> host dbv file=e:/datafile/ss.dbf feedback=100
DBVERIFY: Release 10.2.0.1.0 - Production on 星期二 10月 27 23:19:31 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved. DBVERIFY - 开始验证: FILE = e:/datafile/ss.dbf
页 46 标记为损坏
Corrupt block relative dba: 0x01c0002e (file 7, block 46)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x01c0002e
last change scn: 0x0000.0050f73b seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xf73b0602
check value in block header: 0x970d
computed block checksum: 0xc6af
页 49 标记为损坏
Corrupt block relative dba: 0x01c00031 (file 7, block 49)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x01c00031
last change scn: 0x0000.0050f749 seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xf7490602
check value in block header: 0xdb0c
computed block checksum: 0xe2ff
页 84 标记为损坏
Corrupt block relative dba: 0x01c00054 (file 7, block 84)
Bad check value found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x01c00054
last change scn: 0x0000.0050f794 seq: 0x2 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xf7940602
check value in block header: 0xdd2c
computed block checksum: 0x777d
页 85 流入 - 很可能是介质损坏
Corrupt block relative dba: 0x01c00055 (file 7, block 85)
Fractured block found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x01c00055
last change scn: 0xad00.0050f796 seq: 0xad flg: 0xa4
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xf7960602
check value in block header: 0xdb18
computed block checksum: 0xb2f4
..
DBVERIFY - 验证完成
检查的页总数: 128
处理的页总数 (数据): 106
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 18
处理的总页数 (段) : 0
失败的总页数 (段) : 0
空的页总数: 0
标记为损坏的总页数: 4
流入的页总数: 1
最高块 SCN : 5306362 (0.5306362)
检查出4个,oracle自动执行掉过坏块操作了??
1 BEGIN
2 DBMS_REPAIR.ADMIN_TABLES (
3 TABLE_NAME => 'REPAIR_TB',
4 TABLE_TYPE => dbms_repair.repair_table,
5 ACTION => dbms_repair.purge_action
6 );
7* END;
SQL> /
PL/SQL 过程已成功完成。
SQL> select object_name,block_id from repair_tb;
OBJECT_NAME BLOCK_ID
------------------------------ ----------
SS 84
SS 85
1 BEGIN
2 DBMS_REPAIR.ADMIN_TABLES (
3 TABLE_NAME => 'REPAIR_TB',
4 TABLE_TYPE => dbms_repair.repair_table,
5 ACTION => dbms_repair.drop_action);
6* END;
7 /
PL/SQL 过程已成功完成。
SQL> select object_name,block_id from repair_tb;
select object_name,block_id from repair_tb
*
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~破坏
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 104858304 bytes
Database Buffers 176160768 bytes
Redo Buffers 7139328 bytes
SQL> conn xh/a831115
已连接。
SQL> select count(*) from ss;
COUNT(*)
----------
105
晕了 oracle还是自己解决了
原因:
SQL> select skip_corrupt from all_tables where table_name='SS';
SKIP_COR
--------
ENABLED
SKIP_CORRUPT VARCHAR2(8) Whether the Oracle Database ignores blocks marked corrupt during table and index scans (ENABLED) or raises an error (DISABLED). To
enable this feature, run the DBMS_REPAIR.SKIP_CORRUPT_BLOCKS procedure
用event解决:
SQL> create tablespace sss datafile 'e:/datafile/sss.dbf' size 1m;
表空间已创建。
SQL> create table sss (a char(2000), b char(2000), c char(2000) ) tablespace sss
;
表已创建。
SQL> ed
已写入 file afiedt.buf
1 declare
2 begin
3 for i in 1..1000 loop
4 insert into sss values('a','b','c');
5 commit;
6 end loop;
7* end;
SQL> /
declare
*
第 1 行出现错误:
ORA-01653: 表 XH.SSS 无法通过 8 (在表空间 SSS 中) 扩展
ORA-06512: 在 line 4
SQL> select count(*) from sss;
COUNT(*)
----------
110
SQL> select skip_corrupt from all_tables where table_name='SSS';
SKIP_COR
--------
DISABLED
SQL> conn xh/a831115
已连接。
SQL> select count(*) from sss;
select count(*) from sss
*
第 1 行出现错误:
ORA-01578: ORACLE 数据块损坏 (文件号 8, 块号 43)
ORA-01110: 数据文件 8: 'E:/DATAFILE/SSS.DBF'
SQL> host exp xh/a831115 file=e:/sss.dmp tables=SSS
Export: Release 10.2.0.1.0 - Production on 星期二 10月 27 23:39:46 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径...
. . 正在导出表 SSS
EXP-00056: 遇到 ORACLE 错误 1578
ORA-01578: ORACLE 数据块损坏 (文件号 8, 块号 43)
ORA-01110: 数据文件 8: 'E:/DATAFILE/SSS.DBF'
导出成功终止, 但出现警告。
SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10';
系统已更改。
SQL> host exp xh/a831115 file=e:/sss.dmp tables=SSS
Export: Release 10.2.0.1.0 - Production on 星期二 10月 27 23:40:44 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径...
. . 正在导出表 SSS导出了 109 行
成功终止导出, 没有出现警告。
可以看到 导出时有1row是 丢失的
SQL> host imp xh/a831115 file=e:/sss.dmp tables=SSS
Import: Release 10.2.0.1.0 - Production on 星期二 10月 27 23:41:20 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
经由常规路径由 EXPORT:V10.02.01 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 XH 的对象导入到 XH
. 正在将 XH 的对象导入到 XH
. . 正在导入表 "SSS"导入了 109 行
成功终止导入, 没有出现警告。
SQL> select count(*) from sss;
COUNT(*)
----------
109
丢失1 rows
SQL> conn / as sysdba
已连接。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~块损坏
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 117441216 bytes
Database Buffers 163577856 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn xh/a831115
已连接。
SQL> select count(*) from sss;
select count(*) from sss
*
第 1 行出现错误:
ORA-01578: ORACLE 数据块损坏 (文件号 8, 块号 34)
ORA-01110: 数据文件 8: 'E:/DATAFILE/SSS.DBF'
SQL> alter session set events '10231 trace name context forever, level 10';~~~~~直接使用事件
会话已更改。
SQL> select count(*) from sss;
COUNT(*)
----------
108
- oracle实验记录 (恢复,备份-含坏块数据文件)
- Oracle恢复实验(三):恢复未备份的数据文件。
- oracle 备份恢复实验
- oracle无备份丢失数据文件的恢复
- oracle数据文件被删除没备份恢复
- oracle备份之rman_恢复数据文件
- ORACLE备份恢复杂谈记录
- oracle恢复利用重建数据文件恢复无备份的已失败的数据文件
- oracle部分数据文件损坏无备份的恢复
- Oracle DB备份恢复篇之丢失数据文件
- Oracle归档模式有备份,丢失数据文件的恢复
- Oracle归档模式无备份,丢失数据文件的恢复
- Oracle 数据文件在无备份情况下的恢复
- oracle dataguard 实验(恢复备份至异机)
- oracle 热备份与恢复实验
- Oracle 备份恢复 31个实验 准备工作
- 无备份数据文件的恢复
- MongoDB数据文件备份与恢复
- Html文件转CHM文件类--------用C#实现将html文件转换为chm文件
- FlyPlan强力更新通告
- CodeSmith 基础教程(转载)
- 今天终于开博了,欢迎各位访问!
- eWebEditor编辑——JSP数据内容
- oracle实验记录 (恢复,备份-含坏块数据文件)
- C#文件(夹)复制
- 将递归转化成迭代的通用技术
- Error: Failed to create feature class. Table already registered
- 多空间目录
- 如何查看端口+如何关闭开放端口
- js打开新窗口
- Android应用程序上传错误The package name of your apk may not begin with any of the following values:[com.android, com.google, android, co
- 剖析C++标准库智能指针(std::auto_ptr)