查看: 1048|回复: 0

[原创] 非归档模式下,无备份删除数据文件,通过redo进行recover丢失的数据文件会存在nolo...

[复制链接]
论坛徽章:
21
娜美
日期:2017-06-26 15:18:15火眼金睛
日期:2018-04-30 22:00:00目光如炬
日期:2018-07-29 22:00:00火眼金睛
日期:2018-08-31 22:00:00目光如炬
日期:2018-09-02 22:00:00目光如炬
日期:2018-09-16 22:00:01火眼金睛
日期:2018-09-30 22:00:00目光如炬
日期:2018-10-14 22:00:00火眼金睛
日期:2018-11-30 22:00:01目光如炬
日期:2018-04-29 22:00:00
发表于 2019-1-25 17:09 | 显示全部楼层 |阅读模式


非归档模式下,无备份删除数据文件,通过redo进行recover丢失的数据文件会存在nologging坏块问题!

作者简介:
----------------------------------------------------------------------
@ 孙显鹏,海天起点oracle技术专家,十年从业经验
@ 精通oracle内部原理,擅长调优和解决疑难问题
@ 致力于帮助客户解决生产中的问题,提高生产效率。
@ 爱好:书法,周易,中医。微信:sunyunyi_sun
@ 易曰:精义入神,以致用也!
@ 调优乃燮理阴阳何其难也!
----------------------------------------------------------------------



环境:12.2(最新补丁) + LINUX 6.8

1:cdb归档模式,redo可用,无备份情况下,删除数据文件,恢复操作:(非归档模式也可以恢复)

SQL> conn / as sysdba
Connected.
SQL>
SQL> create tablespace test datafile '/u01/app/oracle/oradata/orcl/test.dbf' size 50m;

Tablespace created.

SQL> create table tb_test tablespace test as select * from dba_objects;

Table created.

SQL> ! rm -f /u01/app/oracle/oradata/orcl/test.dbf;

SQL> select count(*) from tb_test;

  COUNT(*)
----------
     26622

SQL> alter system checkpoint;
alter system checkpoint
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 3992
Session ID: 33 Serial number: 54353


SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 2147483648 bytes
Fixed Size                  8794848 bytes
Variable Size             603983136 bytes
Database Buffers         1526726656 bytes
Redo Buffers                7979008 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 20 - see DBWR trace file
ORA-01110: data file 20: '/u01/app/oracle/oradata/orcl/test.dbf'


[oracle@db12c ~]$ rman target /

Recovery Manager: Release 12.2.0.1.0 - Production on Wed Jan 23 07:20:24 2019

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1525968913, not open)

RMAN> list backup of datafile 20;

using target database control file instead of recovery catalog
specification does not match any backup in the repository

RMAN> restore datafile 20;

Starting restore at 23-JAN-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=42 device type=DISK

creating datafile file number=20 name=/u01/app/oracle/oradata/orcl/test.dbf
restore not done; all files read only, offline, excluded, or already restored
Finished restore at 23-JAN-19

RMAN> recover datafile 20;

Starting recover at 23-JAN-19
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 23-JAN-19

SQL> alter database open;

Database altered.

SQL>  select count(*) from tb_test;

  COUNT(*)
----------
     26622

非归档模式:
1:修改数据库为非归档模式
2:重复上面的步骤,建立test02表空间,建立tb_sun 表,(先在test表空间建立tb_test02表)

发现alter日志报错:存在坏块:
2019-01-24T00:32:18.025397+08:00
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29567.trc  (incident=67610) (PDBNAME=CDB$ROOT):
ORA-01578: ORACLE data block corrupted (file # 20, block # 643)
ORA-01110: data file 20: '/u01/app/oracle/oradata/orcl/test.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29567.trc  (incident=67611) (PDBNAME=CDB$ROOT):
ORA-01578: ORACLE data block corrupted (file # 21, block # 131)
ORA-01110: data file 21: '/u01/app/oracle/oradata/orcl/test02.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option

[root@db12c orcl]# more /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_1587.trc

DDE rules only execution for: ORA 1110
----- START Event Driven Actions Dump ----
---- END Event Driven Actions Dump ----
----- START DDE Actions Dump -----
Executing SYNC actions
----- START DDE Action: 'DB_STRUCTURE_INTEGRITY_CHECK' (Async) -----
Successfully dispatched
----- END DDE Action: 'DB_STRUCTURE_INTEGRITY_CHECK' (SUCCESS, 1 csec) -----
Executing ASYNC actions
----- END DDE Actions Dump (total 1 csec) -----
Byte offset to file# 20 block# 643 is 5267456
DDE: Problem Key 'ORA 1578' was flood controlled (0x4) (incident: 67628)
ORA-01578: ORACLE data block corrupted (file # 20, block # 643)
ORA-01110: data file 20: '/u01/app/oracle/oradata/orcl/test.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
Action (ID=34340903) was flood controlled by a FC Qualifier
DDE: Problem Key 'ORA 1110' was flood controlled (0x5) (no incident)
ORA-01110: data file 21: '/u01/app/oracle/oradata/orcl/test02.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
Byte offset to file# 21 block# 131 is 1073152

*** 2019-01-24T01:02:25.853433+08:00
DDE: Problem Key 'ORA 1578' was flood controlled (0x4) (incident: 67629)
ORA-01578: ORACLE data block corrupted (file # 21, block # 131)
ORA-01110: data file 21: '/u01/app/oracle/oradata/orcl/test02.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
Action (ID=34340903) was flood controlled by a FC Qualifier

DDE 为oracle数据库自动检测数据块的完整性过程。

RMAN> validate database nonlogged block;

Starting validate at 24-JAN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=36 device type=DISK
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: validation complete, elapsed time: 00:00:45
List of Datafiles
=================
File Status Nonlogged Blocks Blocks Examined Blocks Skipped
---- ------ ---------------- --------------- --------------
1    OK     0                121599          0            
3    OK     0                121599          0            
5    OK     0                153599          0            
7    OK     0                639             0            
20   OK     474              6399            0            
21   OK     474              2559            0            

Details of nonlogged blocks can be queried from v$nonlogged_block view

查询v$nonlogged_block:

SQL> set lines 1200
SQL> /

     FILE#     BLOCK# SCN_TO_TIMESTAMP(NONLOGGED_START_CHANGE#)
---------- ---------- ---------------------------------------------------------------------------
        20        643 23-JAN-19 07.37.21.000000000 AM
        20        770 23-JAN-19 07.37.21.000000000 AM
        20        657 23-JAN-19 07.37.21.000000000 AM
        20        737 23-JAN-19 07.37.21.000000000 AM
        20        673 23-JAN-19 07.37.21.000000000 AM
        20       1026 23-JAN-19 07.37.21.000000000 AM
        20        689 23-JAN-19 07.37.21.000000000 AM
        20        753 23-JAN-19 07.37.21.000000000 AM
        20        705 23-JAN-19 07.37.21.000000000 AM
        20        898 23-JAN-19 07.37.21.000000000 AM
        20        721 23-JAN-19 07.37.21.000000000 AM

     FILE#     BLOCK# SCN_TO_TIMESTAMP(NONLOGGED_START_CHANGE#)
---------- ---------- ---------------------------------------------------------------------------
        21        131 23-JAN-19 07.42.17.000000000 AM
        21        258 23-JAN-19 07.42.17.000000000 AM
        21        145 23-JAN-19 07.42.17.000000000 AM
        21        225 23-JAN-19 07.42.17.000000000 AM
        21        161 23-JAN-19 07.42.17.000000000 AM
        21        514 23-JAN-19 07.42.17.000000000 AM
        21        177 23-JAN-19 07.42.17.000000000 AM
        21        241 23-JAN-19 07.42.17.000000000 AM
        21        193 23-JAN-19 07.42.17.000000000 AM
        21        386 23-JAN-19 07.42.17.000000000 AM
        21        209 23-JAN-19 07.42.17.000000000 AM

22 rows selected.


但是:

set lines 1200 pages 1200
col table_name for a30
select table_name from dba_tables where LOGGING='NO' and table_name like 'TB%';

no rows selected

查询块分布图:

col segment_name for a30
col segment_type for a115
select segment_name,file_id,extent_id,block_id,blocks
from dba_extents where segment_name is not null and file_id =20
/

SEGMENT_NAME                      FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS
------------------------------ ---------- ---------- ---------- ----------
TB_TEST                                20          0        128          8
TB_TEST                                20          1        136          8
TB_TEST                                20          2        144          8
TB_TEST                                20          3        152          8
TB_TEST                                20          4        160          8
TB_TEST                                20          5        168          8
TB_TEST                                20          6        176          8
TB_TEST                                20          7        184          8
TB_TEST                                20          8        192          8
TB_TEST                                20          9        200          8
TB_TEST                                20         10        208          8
TB_TEST                                20         11        216          8
TB_TEST                                20         12        224          8
TB_TEST                                20         13        232          8
TB_TEST                                20         14        240          8
TB_TEST                                20         15        248          8
TB_TEST                                20         16        256        128
TB_TEST                                20         17        384        128
TB_TEST                                20         18        512        128
TB_TEST02                              20          0        640          8
TB_TEST02                              20          1        648          8
TB_TEST02                              20          2        656          8
TB_TEST02                              20          3        664          8
TB_TEST02                              20          4        672          8
TB_TEST02                              20          5        680          8
TB_TEST02                              20          6        688          8
TB_TEST02                              20          7        696          8
TB_TEST02                              20          8        704          8
TB_TEST02                              20          9        712          8
TB_TEST02                              20         10        720          8
TB_TEST02                              20         11        728          8
TB_TEST02                              20         12        736          8
TB_TEST02                              20         13        744          8
TB_TEST02                              20         14        752          8
TB_TEST02                              20         15        760          8
TB_TEST02                              20         16        768        128
TB_TEST02                              20         17        896        128
TB_TEST02                              20         18       1024        128

38 rows selected.



col segment_name for a30
col segment_type for a115
select segment_name,file_id,extent_id,block_id,blocks
from dba_extents where segment_name is not null and file_id =21
/
SEGMENT_NAME                      FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS
------------------------------ ---------- ---------- ---------- ----------
TB_SUN                                 21          0        128          8
TB_SUN                                 21          1        136          8
TB_SUN                                 21          2        144          8
TB_SUN                                 21          3        152          8
TB_SUN                                 21          4        160          8
TB_SUN                                 21          5        168          8
TB_SUN                                 21          6        176          8
TB_SUN                                 21          7        184          8
TB_SUN                                 21          8        192          8
TB_SUN                                 21          9        200          8
TB_SUN                                 21         10        208          8
TB_SUN                                 21         11        216          8
TB_SUN                                 21         12        224          8
TB_SUN                                 21         13        232          8
TB_SUN                                 21         14        240          8
TB_SUN                                 21         15        248          8
TB_SUN                                 21         16        256        128
TB_SUN                                 21         17        384        128
TB_SUN                                 21         18        512        128

19 rows selected.


通过上面的查询看到tb_test02和tb_sun 表存在坏块!


SQL> select * from tb_test02;
select * from tb_test02
       *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 20, block # 643)
ORA-01110: data file 20: '/u01/app/oracle/oradata/orcl/test.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option

select * from tb_sun

SQL> select * from tb_sun;
select * from tb_sun
       *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 21, block # 131)
ORA-01110: data file 21: '/u01/app/oracle/oradata/orcl/test02.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option



也就是说,非归档模式下,无备份删除数据文件,通过redo进行recover丢失的数据文件会存在nologging坏块问题。

SQL> drop table tb_test02;

Table dropped.

SQL> drop table tb_sun;

Table dropped.

RMAN> validate database nonlogged block;

Starting validate at 24-JAN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=36 device type=DISK
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: validation complete, elapsed time: 00:00:45
List of Datafiles
=================
File Status Nonlogged Blocks Blocks Examined Blocks Skipped
---- ------ ---------------- --------------- --------------
1    OK     0                121599          0            
3    OK     0                121599          0            
5    OK     0                153599          0            
7    OK     0                639             0            
20   OK     474              6399            0            
21   OK     474              2559            0            

Details of nonlogged blocks can be queried from v$nonlogged_block view

Finished validate at 24-JAN-19

再次验证还是存在坏块

dump 数据库看看:

TRACE_FILE
----------------------------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_16663.trc

SQL> alter system dump datafile 20 block 643;

System altered.

Count of ofsmtab$: 0 entries

*** 2019-01-24T02:46:41.841046+08:00 (PDB$SEED(2))
7FFD2B5749FB41A5E0530138A8C0A9CE

*** 2019-01-24T02:48:24.641709+08:00 (CDB$ROOT(1))
01/24/2019 02:46:41
Start dump data blocks tsn: 5 file#:20 minblk 643 maxblk 643
Block dump from cache:
Dump of buffer cache at level 3 for pdb=1 tsn=5 rdba=83886723
Block dump from disk:
buffer tsn: 5 rdba: 0x05000283 (20/643)
scn: 0x15fe75 seq: 0xff flg: 0x04 tail: 0xfe7500ff
frmt: 0x02 chkval: 0xa196 type: 0x00=unknown
Hex dump of block: st=0, typ_found=0
Dump of memory from 0x00007FFFF3E70000 to 0x00007FFFF3E72000
7FFFF3E70000 0000A200 05000283 0015FE75 04FF0000  [........u.......]
7FFFF3E70010 0000A196 FFFFFFFF FFFFFFFF FFFFFFFF  [................]
7FFFF3E70020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF  [................]
        Repeat 508 times
7FFFF3E71FF0 FFFFFFFF FFFFFFFF FFFFFFFF FE7500FF  [..............u.]
End dump data blocks tsn: 5 file#: 20 minblk 643 maxblk 643

seq: 0xff:表示坏块


说明即使drop表,块的seq标志位还是0xff。


我们可以再次做实验,详细记录每个步骤:

drop tablespace test including contents;
drop tablespace test02 including contents;


SQL> shut immediate;
SQL> startup mount;
ORACLE instance started.
SQL> alter database noarchivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> ! rm -f /u01/app/oracle/oradata/orcl/test.dbf
SQL> create tablespace test datafile '/u01/app/oracle/oradata/orcl/test.dbf' size 50m;
Tablespace created.
SQL> create table tb_test tablespace test as select * from dba_objects;
Table created.

col segment_name for a30
col segment_type for a115
select segment_name,file_id,extent_id,block_id,blocks
from dba_extents where segment_name is not null and file_id =22
SEGMENT_NAME                      FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS
------------------------------ ---------- ---------- ---------- ----------
TB_TEST                                22          0        128          8
TB_TEST                                22          1        136          8
TB_TEST                                22          2        144          8
TB_TEST                                22          3        152          8
TB_TEST                                22          4        160          8
TB_TEST                                22          5        168          8
TB_TEST                                22          6        176          8
TB_TEST                                22          7        184          8
TB_TEST                                22          8        192          8
TB_TEST                                22          9        200          8
TB_TEST                                22         10        208          8
TB_TEST                                22         11        216          8
TB_TEST                                22         12        224          8
TB_TEST                                22         13        232          8
TB_TEST                                22         14        240          8
TB_TEST                                22         15        248          8
TB_TEST                                22         16        256        128
TB_TEST                                22         17        384        128
TB_TEST                                22         18        512        128

19 rows selected.

SQL> alter system flush buffer_cache;

System altered.

SQL> alter system checkpoint;

System altered.
TRACE_FILE
----------------------------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_21591.trc

SQL> alter system dump datafile 22 block 136;  

System altered.

*** 2019-01-24T03:20:47.805253+08:00 (CDB$ROOT(1))
Start dump data blocks tsn: 5 file#:22 minblk 136 maxblk 136
Block dump from cache:
Dump of buffer cache at level 3 for pdb=1 tsn=5 rdba=92274824
Block dump from disk:
buffer tsn: 5 rdba: 0x05800088 (22/136)
scn: 0x1d76d5 seq: 0x02 flg: 0x04 tail: 0x76d50602
frmt: 0x02 chkval: 0x23d0 type: 0x06=trans data
Hex dump of block: st=0, typ_found=1


SQL> ! rm -f /u01/app/oracle/oradata/orcl/test.dbf;

SQL> shut immediate;
ORA-03113: end-of-file on communication channel
Process ID: 21591
Session ID: 33 Serial number: 52005


SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 2147483648 bytes
Fixed Size                  8794848 bytes
Variable Size             603983136 bytes
Database Buffers         1526726656 bytes
Redo Buffers                7979008 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 22 - see DBWR trace file
ORA-01110: data file 22: '/u01/app/oracle/oradata/orcl/test.dbf'


RMAN> list backup of datafile 22;

using target database control file instead of recovery catalog
specification does not match any backup in the repository

RMAN> restore datafile 22;

Starting restore at 24-JAN-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=36 device type=DISK

creating datafile file number=22 name=/u01/app/oracle/oradata/orcl/test.dbf
restore not done; all files read only, offline, excluded, or already restored
Finished restore at 24-JAN-19

RMAN> recover datafile 22;

Starting recover at 24-JAN-19
using channel ORA_DISK_1

starting media recovery
media recovery complete, elapsed time: 00:00:00

Finished recover at 24-JAN-19


SQL> alter database open;

Database altered.


TRACE_FILE
----------------------------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_22721.trc

SQL> alter system dump datafile 22 block 136;  

System altered.

DDE: Problem Key 'ORA 1110' was flood controlled (0x1) (no incident)
ORA-01110: data file 22: '/u01/app/oracle/oradata/orcl/test.dbf'
ORA-01157: cannot identify/lock data file 22 - see DBWR trace file
ORA-01110: data file 22: '/u01/app/oracle/oradata/orcl/test.dbf'

*** 2019-01-24T03:24:05.101183+08:00 (CDB$ROOT(1))
Thread 1 checkpoint: logseq 25, block 94068, scn 0x00000000001d7770
kctdrsrt: on-disk rba 25.94113.0
  cache-low rba: logseq 25, block 94082
    on-disk rba: logseq 25, block 94113, scn 0x00000000001d77a6
Synchronized sync destination connectivity mask for thread 1 is 0x0
  start recovery at logseq 25, block 94082, scn 0
Using largest hash table of 262144 entries (2Mb), htbl_size = 2097232, max_alloc = 1073729536
==== Redo read statistics for thread 1 ====
Total physical reads (from disk and memory): 226Kb
-- Redo read_disk statistics --
Read rate (ASYNC): 226Kb in 0.03s => 7.36 Mb/sec
Longest record: 1Kb, moves: 0/726 (0%)
Change moves: 2/3 (66%), moved: 0Mb
Longest LWN: 170Kb, moves: 0/17 (0%), moved: 0Mb
Last redo scn: 0x00000000001d7938 (1931576)
----------------------------------------------
----- Recovery Hash Table Statistics ---------
Hash table buckets = 262144
Longest hash chain = 0
Average hash chain = 0/0 = 0.0
Max compares per lookup = 0
Avg compares per lookup = 0/0 = 0.0
----------------------------------------------
Completed recovery checkpoint
----- Recovery Hash Table Statistics ---------
Hash table buckets = 262144
Longest hash chain = 0
Average hash chain = 0/0 = 0.0
Max compares per lookup = 0
Avg compares per lookup = 0/0 = 0.0
----------------------------------------------
Recovery sets nab of thread 1 seq 25 to 94534 with 8 zeroblks
Count of ofsmtab$: 0 entries

*** 2019-01-24T03:24:07.193779+08:00 (PDB$SEED(2))
7FFD2B5749FB41A5E0530138A8C0A9CE

*** 2019-01-24T03:24:28.312580+08:00 (CDB$ROOT(1))
01/24/2019 03:24:07
Start dump data blocks tsn: 5 file#:22 minblk 136 maxblk 136
Block dump from disk:
buffer tsn: 5 rdba: 0x05800088 (22/136)
scn: 0x1d76d5 seq: 0xff flg: 0x04 tail: 0x76d500ff
frmt: 0x02 chkval: 0xa315 type: 0x00=unknown
Hex dump of block: st=0, typ_found=0
Dump of memory from 0x00007FFFF3CC3000 to 0x00007FFFF3CC5000
7FFFF3CC3000 0000A200 05800088 001D76D5 04FF0000  [.........v......]
7FFFF3CC3010 0000A315 FFFFFFFF FFFFFFFF FFFFFFFF  [................]
7FFFF3CC3020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF  [................]
        Repeat 508 times
7FFFF3CC4FF0 FFFFFFFF FFFFFFFF FFFFFFFF 76D500FF  [...............v]
End dump data blocks tsn: 5 file#: 22 minblk 136 maxblk 136

seq: 0xff : 出现坏块!!!


SQL> shut immedaite;
SQL> startup mount;
ORACLE instance started.

RMAN> validate database nonlogged block;

Starting validate at 24-JAN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=36 device type=DISK
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: validation complete, elapsed time: 00:01:25
List of Datafiles
=================
File Status Nonlogged Blocks Blocks Examined Blocks Skipped
---- ------ ---------------- --------------- --------------
1    OK     0                121599          0            
3    OK     0                121599          0            
5    OK     0                153599          0            
7    OK     0                639             0            
22   OK     476              6399            0            

Details of nonlogged blocks can be queried from v$nonlogged_block view

日志:
2019-01-24T03:29:16.617372+08:00
Finished Nonlogged Block Replacement recovery(validate) on file 22. 476 blocks found
Started Nonlogged Block Replacement recovery(validate) on file 7 (ospid 23743 rcvid 14066990438897416487)
Finished Nonlogged Block Replacement recovery(validate) on file 7. 0 blocks found


SQL> alter database open;

Database altered.

col segment_name for a30
col segment_type for a115
select segment_name,file_id,extent_id,block_id,blocks
from dba_extents where segment_name is not null and file_id =22
SEGMENT_NAME                      FILE_ID  EXTENT_ID   BLOCK_ID     BLOCKS
------------------------------ ---------- ---------- ---------- ----------
TB_TEST                                22          0        128          8
TB_TEST                                22          1        136          8
TB_TEST                                22          2        144          8
TB_TEST                                22          3        152          8
TB_TEST                                22          4        160          8
TB_TEST                                22          5        168          8
TB_TEST                                22          6        176          8
TB_TEST                                22          7        184          8
TB_TEST                                22          8        192          8
TB_TEST                                22          9        200          8
TB_TEST                                22         10        208          8
TB_TEST                                22         11        216          8
TB_TEST                                22         12        224          8
TB_TEST                                22         13        232          8
TB_TEST                                22         14        240          8
TB_TEST                                22         15        248          8
TB_TEST                                22         16        256        128
TB_TEST                                22         17        384        128
TB_TEST                                22         18        512        128


dbv file=/u01/app/oracle/oradata/orcl/test.dbf blocksize=8192;

DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/orcl/test.dbf

DBV-00201: Block, DBA 92274819, marked corrupt for invalid redo application

DBV-00201: Block, DBA 92274820, marked corrupt for invalid redo application

DBV-00201: Block, DBA 92274821, marked corrupt for invalid redo application

DBV-00201: Block, DBA 92274822, marked corrupt for invalid redo application

DBV-00201: Block, DBA 92274823, marked corrupt for invalid redo application
....
DBV-00201: Block, DBA 92275306, marked corrupt for invalid redo application

DBV-00201: Block, DBA 92275307, marked corrupt for invalid redo application


DBVERIFY - Verification complete

Total Pages Examined         : 6400
Total Pages Processed (Data) : 0
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 619
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 5781
Total Pages Marked Corrupt   : 476  ------------476个坏块
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 1931013 (0.1931013)


select file#,block#
from v$database_block_corruption
where file#=22
order by 1,2
/
no rows selected

SQL> select file#, block#
  2  from v$nonlogged_block
  3  where file#=22
  4  order by 1,2
  5  /

     FILE#     BLOCK#
---------- ----------
        22        131
        22        145
        22        161
        22        177
        22        193
        22        209
        22        225
        22        241
        22        258
        22        386
        22        514

11 rows selected. 这里只记录了11个块。日志中显示476个块。

dump 128号块:正常!
*** 2019-01-24T03:58:55.504074+08:00 (CDB$ROOT(1))
Start dump data blocks tsn: 5 file#:22 minblk 128 maxblk 128
Block dump from cache:
Dump of buffer cache at level 3 for pdb=1 tsn=5 rdba=92274816
Block dump from disk:
buffer tsn: 5 rdba: 0x05800080 (22/128)
scn: 0x1d7701 seq: 0x03 flg: 0x04 tail: 0x77012003
frmt: 0x02 chkval: 0x9962 type: 0x20=FIRST LEVEL BITMAP BLOCK
Hex dump of block: st=0, typ_found=1

dump 511号块:坏块

*** 2019-01-24T03:54:56.768100+08:00 (CDB$ROOT(1))
Start dump data blocks tsn: 5 file#:22 minblk 511 maxblk 511
Block dump from cache:
Dump of buffer cache at level 3 for pdb=1 tsn=5 rdba=92275199
Block dump from disk:
buffer tsn: 5 rdba: 0x058001ff (22/511)
scn: 0x1d7700 seq: 0xff flg: 0x04 tail: 0x770000ff
frmt: 0x02 chkval: 0xa262 type: 0x00=unknown
Hex dump of block: st=0, typ_found=0
Dump of memory from 0x00007FFFF3E70000 to 0x00007FFFF3E72000
7FFFF3E70000 0000A200 058001FF 001D7700 04FF0000  [.........w......]
7FFFF3E70010 0000A262 FFFFFFFF FFFFFFFF FFFFFFFF  [b...............]
7FFFF3E70020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF  [................]
        Repeat 508 times
7FFFF3E71FF0 FFFFFFFF FFFFFFFF FFFFFFFF 770000FF  [...............w]
End dump data blocks tsn: 5 file#: 22 minblk 511 maxblk 511

dump 512 号块:正常

*** 2019-01-24T03:54:07.346471+08:00 (CDB$ROOT(1))
Start dump data blocks tsn: 5 file#:22 minblk 512 maxblk 512
Block dump from cache:
Dump of buffer cache at level 3 for pdb=1 tsn=5 rdba=92275200
Block dump from disk:
buffer tsn: 5 rdba: 0x05800200 (22/512)
scn: 0x1d7701 seq: 0x01 flg: 0x04 tail: 0x77012001
frmt: 0x02 chkval: 0x9c2c type: 0x20=FIRST LEVEL BITMAP BLOCK
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007FFFF3E70000 to 0x00007FFFF3E72000

也就是说从128号块到511号块中间存在476个块是坏块!


最后提醒大家,强烈建议开启归档模式,归档模式下下即使丢失文件,无备份也是可以恢复的,
前提是建立数据文件后的redo日志完好无损,恢复后不会存在问题。非归档模式下这种情况
可以恢复但是会导致nologging坏块问题。

另外12c后的pdb,无备份,删除数据文件,即使在归档模式下也无法恢复!切记!!限于篇幅这里
不列出测试过程。

所以,12c后存在pdb时,建议pdb添加数据文件后,尽快备份数据库!这样更安全!


记录在案!


2019年1月份
孙显鹏!




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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表