重慶分公司
重慶分公司
檢測(cè)數(shù)據(jù)塊損壞(BlockCorruption)
數(shù)據(jù)塊的損壞分兩種情況,第一種是物理性的,第二種是邏輯性的。物理性一般指數(shù)據(jù)塊頭部不可以訪問(wèn)、數(shù)據(jù)塊校驗(yàn)值不合法。邏輯性一般是在物理性結(jié)構(gòu)完整的情況下,數(shù)據(jù)的內(nèi)容在含義上不正確,比如保存了不允許的字段值。下面分別用兩種情況說(shuō)明數(shù)據(jù)塊的物理錯(cuò)誤和數(shù)據(jù)的邏輯錯(cuò)誤
一、數(shù)據(jù)塊物理錯(cuò)誤: physical bad block,物理性一般指數(shù)據(jù)塊頭部不可以訪問(wèn)、數(shù)據(jù)塊校驗(yàn)值不合法
--創(chuàng)建表空間test SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------/u01/app/oracle/oradata/DBdb/system01.dbf/u01/app/oracle/oradata/DBdb/sysaux01.dbf/u01/app/oracle/oradata/DBdb/undotbs01.dbf/u01/app/oracle/oradata/DBdb/users01.dbf/u01/app/oracle/oradata/DBdb/example01.dbfSQL> create tablespace test datafile '/u01/app/oracle/oradata/DBdb/test.dbf' size 10m;Tablespace created.--創(chuàng)建表test,使用表空間testSQL> create table scott.test tablespace test as select * from dba_objects where rownum <=100;Table created.
SQL> col name for a70
SQL> set lines 200 pages 999
SQL> select f.file#,
2 t.name tablespace,
3 f.name,
4 trunc(f.bytes / 1048576, 2) size_mb,
5 to_char(f.creation_time, 'yyyy-mm-dd') creation_time,
6 status
7 from v$datafile f, v$tablespace t
8 where f.ts# = t.ts#
9 order by f.creation_time;
FILE# TABLESPACE NAME SIZE_MB CREATION_T STATUS
----- ---------- ------------------------------------------ ---------- ---------- -------
1 SYSTEM /u01/app/oracle/oradata/DBdb/system01.dbf 2800 2013-08-24 SYSTEM
2 SYSAUX /u01/app/oracle/oradata/DBdb/sysaux01.dbf 710 2013-08-24 ONLINE
4 USERS /u01/app/oracle/oradata/DBdb/users01.dbf 3058.75 2013-08-24 ONLINE
3 UNDOTBS1 /u01/app/oracle/oradata/DBdb/undotbs01.dbf 2965 2013-08-24 ONLINE
5 EXAMPLE /u01/app/oracle/oradata/DBdb/example01.dbf 338.75 2017-04-27 ONLINE
6 TEST /u01/app/oracle/oradata/DBdb/test.dbf 10 2018-01-26 ONLINE
6 rows selected.
--test表從數(shù)據(jù)塊128號(hào)開(kāi)始的8個(gè)塊(128-135),數(shù)據(jù)文件是6號(hào)。 SQL> set lines 200SQL> col name for a50SQL> select a.file_id,a.block_id,a.blocks,b.name fromdba_extents a,v$datafile b where a.file_id=b.file# and a.owner='SCOTT' and a.segment_name='TEST'; FILE_ID BLOCK_ID BLOCKS NAME---------- ---------- ---------- -------------------------------------------------- 6 128 8 /u01/app/oracle/oradata/DBdb/test.dbf --test所有的行保存在131和132數(shù)據(jù)塊中 SQL> select distinct dbms_rowid.rowid_block_number(rowid) from scott.test; DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)------------------------------------132131 --改變132數(shù)據(jù)塊的內(nèi)容 [oracle@wang ~]$ dd of=/u01/app/oracle/oradata/DBdb/test.dbf bs=8192 conv=notrunc seek=132 <> abcdefghijklmnopqrstuvwxyz
> EOF
0+1 records in
0+1 records out
27 bytes (27 B) copied, 8.484e-05 s, 318 kB/s
[oracle@wang~]$
二、數(shù)據(jù)邏輯錯(cuò)誤:logical bad block,邏輯性一般是在物理性結(jié)構(gòu)完整的情況下,數(shù)據(jù)的內(nèi)容在含義上不正確
--創(chuàng)建range分區(qū)表
SQL> create table scott.emp1 (empno number(4),ename varchar2(10),deptno number(2)) partition by range (deptno)
(partition p1 values less than (10) tablespace users,partition p2 values less than (20) tablespace users, partition p3 values less than (30)) tablespace users;
Table created.
SQL> conn scott/tiger;
Connected.
SQL>
SQL> select EMPNO,ENAME,DEPTNO from EMP;
EMPNO ENAME DEPTNO
---------- ---------- ----------
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7876 ADAMS 20
7900 JAMES 30
EMPNO ENAME DEPTNO
---------- ---------- ----------
7902 FORD 20
7934 MILLER 10
13 rows selected.
SQL> insert into scott.emp1 select EMPNO,ENAME,DEPTNO from SCOTT.EMP where deptno<30;
7 rows created.
SQL> commit;
Commit
--EMP1表從數(shù)據(jù)塊40576號(hào)開(kāi)始的1024個(gè)塊(40576+1024=41600)以及從數(shù)據(jù)塊41600號(hào)開(kāi)始的1024個(gè)塊(41600+1024=42624),數(shù)據(jù)文件是4號(hào)。
SQL> select a.file_id,a.block_id,a.blocks,b.name from dba_extents a,v$datafile b where a.file_id=b.file# and a.owner='SCOTT' and a.segment_name='EMP1';
FILE_ID BLOCK_ID BLOCKS NAME
---------- ---------- ---------- --------------------------------------------------
4 40576 1024 /u01/app/oracle/oradata/DBdb/users01.dbf
4 41600 1024 /u01/app/oracle/oradata/DBdb/users01.dbf
--deptno是30的記錄不能插入emp1表
SQL> insert into scott.emp1 values(1000,'SCOTT',30);
insert into scott.emp1 values(1000,'SCOTT',30)
*
ERROR at line 1:
ORA-14400: inserted partition key does not map to any partition
--使用交換分區(qū)的方式讓emp1表接受deptno為30的行
SQL> create table scott.emp2 (empno number(4),ename varchar2(10),deptno number(2)) tablespace users;
Table created.
SQL> insert into scott.emp2 values(1000,'SCOTT',30);
1 row created.
SQL> alter table scott.emp1 exchange partition p3 with table scott.emp2 without validation;
Table altered.
SQL> --deptno為30的記錄已插入emp1表
SQL> select * from scott.emp1 partition (p3);
EMPNO ENAME DEPTNO
---------- ---------- ----------
1000 SCOTT 30
SQL> select * from scott.emp1;
EMPNO ENAME DEPTNO
---------- ---------- ----------
7782 CLARK 10
7839 KING 10
7934 MILLER 10
1000 SCOTT 30
SQL> select * from scott.emp2;
EMPNO ENAME DEPTNO
---------- ---------- ----------
7566 JONES 20
7788 SCOTT 20
7876 ADAMS 20
7902 FORD 20
三、oracle提供了很多工具用來(lái)檢查數(shù)據(jù)塊是否損壞,有的可以從物理層面上檢查,有的可以從邏輯層面上檢測(cè)
1.1 DBVERIFY工具,數(shù)據(jù)塊的物理錯(cuò)誤可以通過(guò)DBV命令檢查出來(lái)
DBVerify - Identify Datafile Block Corruptions
DBVERIFY identifiesPhysical and Logical Intra Block Corruptionsby default. Dbverify cannot be run for the whole database in a single command. It does not need a database connection either:
[oracle@wang ~]$ dbv file=/u01/app/oracle/oradata/DBdb/test.dbfblocksize=8192
DBVERIFY: Release 11.2.0.4.0 - Production on Wed Nov 8 22:57:05 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/DBdb/test.dbf
Page 132 is marked ---檢查test表空間的數(shù)據(jù)文件可以發(fā)現(xiàn)132塊已經(jīng)損壞。
Corrupt block relative dba: 0x01800084 (file 6, block 132) --file 6, block 132,與我們自己手工破壞的塊號(hào)匹配(scott.test表)
Bad header found during dbv:
Data in bad block:
type: 97 format: 2 rdba: 0x68676665
last change scn: 0x6e6d.6c6b6a69 seq: 0x6f flg: 0x70
spare1: 0x63 spare2: 0x64 spare3: 0x7473
consistency value in tail: 0x658b0602
check value in block header: 0x7271
block checksum disabled
DBVERIFY - Verification complete
Total Pages Examined : 1280
Total Pages Processed (Data) : 1
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing (Index): 0
Total Pages Processed (Other): 130
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 1148
Total Pages Marked Corrupt : 1
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 4023695 (0.4023695)
[oracle@wang ~]$
--檢查users表空間的數(shù)據(jù)文件沒(méi)有發(fā)現(xiàn)邏輯錯(cuò)誤
[oracle@wang ~]$dbv file=/u01/app/oracle/oradata/DBdb/users01.dbf blocksize=8192
DBVERIFY: Release 11.2.0.4.0 - Production on Wed Nov 8 23:01:07 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/DBdb/users01.dbf
DBVERIFY - Verification complete
Total Pages Examined : 391520
Total Pages Processed (Data) : 290743
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 12935
Total Pages Failing (Index): 0
Total Pages Processed (Other): 67340
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 20502
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 4024489 (0.4024489)
[oracle@wang~]$
1.2 RMAN的backup命令
RMAN - Identify Datafile Block Corruptions
To identify both Physical and Logical Block Corruptions use the "CHECK LOGICAL" option. The next command checks the complete database for both corruptionswithout actually doing a backup:
添加check logical選項(xiàng)可以檢查邏輯壞塊;
$ rman target /
RMAN> backupcheck logicalvalidate
The next command checks the complete database for both corruptions in a backup:
$ rman target /
RMAN> backupcheck logical database
檢查壞塊,示例:
backup check logical validate datafile 6;
validate check logical datafile 6;
validate database; --驗(yàn)證整個(gè)數(shù)據(jù)庫(kù)
validate backupset 22; --驗(yàn)證某個(gè)備份文件
validate tablespace users; --驗(yàn)證某個(gè)表空間
validate datafile 1; --驗(yàn)證某個(gè)數(shù)據(jù)文件
validate datafile 1 block 10; --驗(yàn)證某個(gè)數(shù)據(jù)文件中的某個(gè)塊
validate check logical datafile 1 BLOCK 5 TO 20; --檢查數(shù)據(jù)文件 1 中的數(shù)據(jù)塊 5 到 20
backup validate database; --驗(yàn)證所有文件,包括數(shù)據(jù)文件、控制文件、參數(shù)文件
backup validate datafile 6; --驗(yàn)證6號(hào)數(shù)據(jù)文件
backup validate datafile 4; --驗(yàn)證4號(hào)數(shù)據(jù)文件
注意:這個(gè)命令只是檢查數(shù)據(jù)庫(kù)的壞塊,而不會(huì)真正進(jìn)行備份。從 11g 開(kāi)始可以省略 backup 子句,而直接使用命令"validate check logical database"。
如果由于缺失文件導(dǎo)致命令失敗,可以增加 'SKIP INACCESSIBLE' 子句來(lái)避免這個(gè)問(wèn)題,為了加快檢查速度,可以設(shè)置 PARALLELISM 指定多個(gè)通道:
壞塊信息會(huì)被記錄在視圖 V$DATABASE_BLOCK_CORRUPTION 中。使用如上validate 子句檢查數(shù)據(jù)文件等后 RMAN 會(huì)生成一個(gè) trace 文件,詳細(xì)描述壞塊信息
或者備份數(shù)據(jù)文件,也可以檢查出壞塊。
v$database_block_corruption查看backup操作發(fā)現(xiàn)的損壞
V$DATABASE_BLOCK_CORRUPTION displays information about database blocks that were corrupted after the last backup. 此視圖只顯示上次備份后損壞的數(shù)據(jù)庫(kù)塊的信息。
參考:http://www.linuxidc.com/Linux/2014-08/105897.htm
1.2.1使用rman備份檢查壞塊:
[oracle@wang ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Wed Nov 8 23:07:46 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DBDB (DBID=3282897732)
RMAN>backup datafile 6;
Starting backup at 08-NOV-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=31 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/u01/app/oracle/oradata/DBdb/test.dbf
channel ORA_DISK_1: starting piece 1 at 08-NOV-17
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 11/08/2017 23:07:52
ORA-19566:exceeded limit of 0 corrupt blocks for file /u01/app/oracle/oradata/DBdb/test.dbf
RMAN>
驗(yàn)證說(shuō)明;備份test表空間數(shù)據(jù)文件時(shí)報(bào)錯(cuò),備份要求數(shù)據(jù)塊0錯(cuò)誤??梢允褂靡晥Dv$database_block_corruption查看backup操作發(fā)現(xiàn)的損壞的塊。
V$DATABASE_BLOCK_CORRUPTION displays information about database blocks that were corrupted after the last backup.
查詢?nèi)缦拢?/strong>
SQL> select * fromv$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
6 132 1 0 CORRUPT
物理壞塊被發(fā)現(xiàn)
RMAN> backup datafile 4;
Starting backup at 26-JAN-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00004 name=/u01/app/oracle/oradata/DBdb/users01.dbf
channel ORA_DISK_1: starting piece 1 at 26-JAN-18
channel ORA_DISK_1: finished piece 1 at 26-JAN-18
piece handle=/u01/app/oracle/fast_recovery_area/DBDB/newback/DBDB/backupset/2018_01_26/o1_mf_nnndf_TAG20180126T065941_f6nrbxnx_.bkp tag=TAG20180126T065941 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 26-JAN-18
RMAN>
--再次檢查視圖:
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
6 132 1 0 CORRUPT
邏輯壞塊未被檢測(cè)出來(lái);
1.2.2 使用 validate check logical子句檢查邏輯及物理壞塊
RMAN> validate check logical datafile 6;
Starting validate at 26-JAN-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00006 name=/u01/app/oracle/oradata/DBdb/test.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
6 FAILED 0 1148 1280 4177988
File Name: /u01/app/oracle/oradata/DBdb/test.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 1
Index 0 0
Other 1 131
validate found one or more corrupt blocks
See trace file /u01/app/oracle/diag/rdbms/dbdb/DBdb/trace/DBdb_ora_32387.trc for details
Finished validate at 26-JAN-18
RMAN> validate check logical datafile 4;
Starting validate at 26-JAN-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00004 name=/u01/app/oracle/oradata/DBdb/users01.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:45
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
4 OK 0 21386 391549 4178643
File Name: /u01/app/oracle/oradata/DBdb/users01.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 241463
Index 0 55618
Other 0 73053
Finished validate at 26-JAN-18
RMAN>
未檢查出邏輯壞塊。。。。。。。。。。。。。
1.3 exp/expdp命令
exp/expdp命令導(dǎo)出數(shù)據(jù)庫(kù)時(shí)會(huì)完全掃描每個(gè)數(shù)據(jù)塊,所以也會(huì)檢查出數(shù)據(jù)塊的物理錯(cuò)誤。
[oracle@wang ~]$ exp scott/tiger owner=scott
Export: Release 11.2.0.4.0 - Production on Thu Nov 9 00:16:08 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user SCOTT
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user SCOTT
About to export SCOTT's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export SCOTT's tables via Conventional Path ...
. . exporting table BONUS 0 rows exported
. . exporting table DEPT 4 rows exported
. . exporting table EMP 13 rows exported
. . exporting table EMP1
. . exporting partition P1 0 rows exported
. . exporting partition P2 3 rows exported
. . exporting partition P3 1 rows exported --邏輯錯(cuò)誤沒(méi)檢查出來(lái)。
. . exporting table EMP2 4 rows exported
. . exporting table GRADES 0 rows exported
. . exporting table JOBS 13 rows exported
. . exporting table STUDENT 0 rows exported
. . exporting table TEST
EXP-00056: ORACLE error 1578 encountered
ORA-01578: ORACLE data block corrupted (file # 6, block # 132) --檢測(cè)出6號(hào)數(shù)據(jù)文件的132號(hào)塊損壞
ORA-01110: data file 6: '/u01/app/oracle/oradata/DBdb/test.dbf'
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
. exporting referential integrity constraints
. exporting triggers
. exporting indextypes
. exporting bitmap, functional and extensible indexes
. exporting posttables actions
. exporting materialized views
. exporting snapshot logs
. exporting job queues
. exporting refresh groups and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully with warnings.
1.4 ANALYZE語(yǔ)句
analyze... validate staructure語(yǔ)句可以分析表和索引的邏輯完整性,所以能夠檢測(cè)出上面例子中分區(qū)表的邏輯錯(cuò)誤。
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">
--analyze語(yǔ)句要求有一張保存分析結(jié)果的表,執(zhí)行utlvalid.sql腳本建立invalid_rows表保存分析結(jié)果。
QL> @?/rdbms/admin/utlvalid.sql
Table creat
新聞名稱:檢測(cè)數(shù)據(jù)塊損壞(BlockCorruption)
網(wǎng)站地址:http://weahome.cn/article/jhiehs.html
-
在線咨詢
微信咨詢
電話咨詢
-
028-86922220(工作日)
18980820575(7×24)
-
提交需求
-
返回頂部