프린트 하기

OS환경 : Oracle Linux 7.5 (64bit)


DB 환경 : Oracle Database 19.7.0.0


방법 : rman block corruption 복구 테스트, 블록손상

block corruption시 rman 을 이용한 복구 방법에 대해 작성함



테스트 환경 구성

테스트 테이블 스페이스 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SQL> create tablespace corrupt datafile '/app/oracle/oradata/ORCL/corrupt01.dbf' size 16m autoextend on;
 
Tablespace created.
 
SQL> select name from v$tablespace;
 
NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
CORRUPT
 
6 rows selected.



테스트 유저 및 테이블 생성

1
2
3
4
5
6
7
SQL> create user cuser identified by cuser account unlock default tablespace corrupt quota unlimited on corrupt;
 
User created.
 
SQL> grant resource, connect to cuser;
 
Grant succeeded.



테스트 데이터 삽입

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL> alter session set current_schema=cuser; 
 
SQL> create table maxtest (cola number, colb number, colc number);
 
SQL>
declare
type tbl_ins is table of maxtest%rowtype index by binary_integer;
w_ins tbl_ins;
begin
for i in 1..100000 loop 
   w_ins(i).cola :=i;
   w_ins(i).colb :=10;
   w_ins(i).colc :=99;
end loop;
   forall i in 1..100000 insert into maxtest values w_ins(i);
   commit;
end;
/
 
SQL> create index maxtest_idx on maxtest(cola) tablespace corrupt;
 
Index created.



rman 백업

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
RMAN> backup database;
 
Starting backup at 13-JUL-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=71 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=00001 name=/app/oracle/oradata/ORCL/system01.dbf
input datafile file number=00003 name=/app/oracle/oradata/ORCL/undotbs01.dbf
input datafile file number=00002 name=/app/oracle/oradata/ORCL/sysaux01.dbf
input datafile file number=00005 name=/app/oracle/oradata/ORCL/corrupt01.dbf
input datafile file number=00004 name=/app/oracle/oradata/ORCL/users01.dbf
channel ORA_DISK_1: starting piece 1 at 13-JUL-20
channel ORA_DISK_1: finished piece 1 at 13-JUL-20
piece handle=/app/oracle/rman/ORCL_24v57aqa_1_1_20200713.bk tag=TAG20200713T160530 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
Finished backup at 13-JUL-20
 
Starting Control File and SPFILE Autobackup at 13-JUL-20
piece handle=/app/oracle/rman/db_ctl_c-1572570942-20200713-04 comment=NONE
Finished Control File and SPFILE Autobackup at 13-JUL-20



rman 백업 내역 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
RMAN> list backup;
 
 
List of Backup Sets
===================
 
 
BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
18      Full    1.33G      DISK        00:00:06     13-JUL-20      
        BP Key18   Status: AVAILABLE  Compressed: NO  Tag: TAG20200713T160530
        Piece Name: /app/oracle/rman/ORCL_24v57aqa_1_1_20200713.bk
  List of Datafiles in backup set 18
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
  1       Full 2648566    13-JUL-20              NO    /app/oracle/oradata/ORCL/system01.dbf
  2       Full 2648566    13-JUL-20              NO    /app/oracle/oradata/ORCL/sysaux01.dbf
  3       Full 2648566    13-JUL-20              NO    /app/oracle/oradata/ORCL/undotbs01.dbf
  4       Full 2648566    13-JUL-20              NO    /app/oracle/oradata/ORCL/users01.dbf
  5       Full 2648566    13-JUL-20              NO    /app/oracle/oradata/ORCL/corrupt01.dbf
 
BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
19      Full    10.27M     DISK        00:00:00     13-JUL-20      
        BP Key19   Status: AVAILABLE  Compressed: NO  Tag: TAG20200713T160537
        Piece Name: /app/oracle/rman/db_ctl_c-1572570942-20200713-04
  SPFILE Included: Modification time: 13-JUL-20
  SPFILE db_unique_name: ORCL
  Control File Included: Ckp SCN: 2648576      Ckp time: 13-JUL-20



손상된 블록 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
RMAN> validate database; 
 
Starting validate at 13-JUL-20
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=00001 name=/app/oracle/oradata/ORCL/system01.dbf
input datafile file number=00003 name=/app/oracle/oradata/ORCL/undotbs01.dbf
input datafile file number=00002 name=/app/oracle/oradata/ORCL/sysaux01.dbf
input datafile file number=00005 name=/app/oracle/oradata/ORCL/corrupt01.dbf
input datafile file number=00004 name=/app/oracle/oradata/ORCL/users01.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:07
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
1    OK     0              17516        136962          2648540   
  File Name: /app/oracle/oradata/ORCL/system01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              100674          
  Index      0              12721           
  Other      0              6049            
 
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
2    OK     0              16779        71690           2648480   
  File Name: /app/oracle/oradata/ORCL/sysaux01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              7829            
  Index      0              5701            
  Other      0              41371           
 
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
3    OK     0              2            118421          2648540   
  File Name: /app/oracle/oradata/ORCL/undotbs01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              0               
  Index      0              0               
  Other      0              118398          
 
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
4    OK     0              77           641             1060405   
  File Name: /app/oracle/oradata/ORCL/users01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              70              
  Index      0              17              
  Other      0              476             
 
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
5    OK     0              1430         2048            2648534   
  File Name: /app/oracle/oradata/ORCL/corrupt01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              244             
  Index      0              223             
  Other      0              151             
 
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
including current control file for validation
including current SPFILE in backup set
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Control File and SPFILE
===============================
File Type    Status Blocks Failing Blocks Examined
------------ ------ -------------- ---------------
SPFILE       OK     0              2               
Control File OK     0              650             
Finished validate at 13-JUL-20

손상된 블록이 없음

Blocks Failing = 0



장애 발생

corrupt01.dbf 파일을 block curruption 시키기 위해 hex code를 수정함

SCP툴을 이용해 windows 로 corrupt01.dbf 파일 이동 후 

울트라 에딧등 에디터 프로그램을 이용해 헥사코드를 수정함

내용 중간에 ddddddddddddddddddd를 반복적으로 넣어줌



편집 및 저장 후 다시 SCP툴을 이용해 해당 dbf파일을 기존 위치로 이동



손상된 블록 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
RMAN> validate tablespace corrupt;
 
Starting validate at 13-JUL-20
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=00005 name=/app/oracle/oradata/ORCL/corrupt01.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
---- ------ -------------- ------------ --------------- ----------
5    FAILED 0              1427         2048            2648534   
  File Name: /app/oracle/oradata/ORCL/corrupt01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       1              244             
  Index      0              223             
  Other      3              154             
 
validate found one or more corrupt blocks
See trace file /app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_27855.trc for details
Finished validate at 13-JUL-20

손상된 데이터블록 1건과 기타 블록 3건이 존재함



해결 방법 : Rman 을 이용해 복원

손상된 블록 목록 확인

1
2
3
4
5
6
7
8
SQL> select * from v$database_block_corruption order by 1,2,3,4;
 
     FILE#     BLOCK#      BLOCKS CORRUPTION_CHANGE# CORRUPTIO      CON_ID
---------- ---------- ---------- ------------------ --------- ----------
     5      307           1          0 CHECKSUM           0
     5      697           1          0 CHECKSUM           0
     5      916           1          0 CHECKSUM           0
     5     1622           1          0 CHECKSUM           0

datafile 5번에 4개 블록이 손상됨



손상된 블록 목록 상세 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
SQL> 
col owner for a10
col segment_name for a10
col partition_name for a10
SELECT e.owner, e.segment_type, e.segment_name, e.partition_name, c.file#
       , greatest(e.block_id, c.block#) s_blk#
       , least(e.block_id+e.blocks-1, c.block#+c.blocks-1) e_dblk#
       , least(e.block_id+e.blocks-1, c.block#+c.blocks-1)
       - greatest(e.block_id, c.block#) + 1 blk_corrupt
      , null description
FROM dba_extents e, v$database_block_corruption c
WHERE e.file_id = c.file#
AND e.block_id <= c.block# + c.blocks - 1 
AND e.block_id + e.blocks - 1 >= c.block#
UNION
SELECT s.owner, s.segment_type, s.segment_name, s.partition_name, c.file#
       , header_block s_blk#
       , header_block e_blk#
       , 1 blk_corrupt
       , 'Segment Header' description
FROM dba_segments s, v$database_block_corruption c
WHERE s.header_file = c.file#
AND s.header_block between c.block# and c.block# + c.blocks - 1
UNION
SELECT null owner, null segment_type, null segment_name, null partition_name, c.file#
       , greatest(f.block_id, c.block#) s_blk#
       , least(f.block_id+f.blocks-1, c.block#+c.blocks-1) e_blk#
       , least(f.block_id+f.blocks-1, c.block#+c.blocks-1)
       - greatest(f.block_id, c.block#) + 1 blk_corrupt
       , 'Free Block' description
FROM dba_free_space f, v$database_block_corruption c
WHERE f.file_id = c.file#
AND f.block_id <= c.block# + c.blocks - 1
AND f.block_id + f.blocks - 1 >= c.block#
order by file#, s_blk#
;
 
OWNER       SEGMENT_TYPE       SEGMENT_NA PARTITION_    FILE#       S_BLK#    E_DBLK#  BLK_CORRUPT  DESCRIPTION
---------- ------------------ ---------- ---------- ---------- ---------- ---------- -----------  --------------
CUSER       TABLE                MAXTEST                 5          307        307           1
                                                         5          697        697           1          Free Block
                                                         5          916        916           1          Free Block
                                                         5         1622       1622           1          Free Block

cuser 의 maxtest 테이블이라는 정보가 나옴



failure 확인

1
2
3
4
5
6
7
8
9
10
RMAN> list failure;
 
Database Role: PRIMARY
 
List of Database Failures
=========================
 
Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
1521       HIGH     OPEN      13-JUL-20     Datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' contains one or more corrupt blocks

목록에 블록을 손상시킨 데이터파일이 나옴



failure 상세 내용 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
RMAN> list failure 1521 detail;
 
Database Role: PRIMARY
 
List of Database Failures
=========================
 
Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
1521       HIGH     OPEN      13-JUL-20     Datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' contains one or more corrupt blocks
  Impact: Some objects in tablespace   might be unavailable
  List of child failures for parent failure ID 1521
  Failure ID Priority Status    Time Detected Summary
  ---------- -------- --------- ------------- -------
  1642       HIGH     OPEN      13-JUL-20     Block 1622 in datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' is media corrupt
    Impact: Object   owned by   might be unavailable
  1636       HIGH     OPEN      13-JUL-20     Block 916 in datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' is media corrupt
    Impact: Object   owned by   might be unavailable
  1630       HIGH     OPEN      13-JUL-20     Block 697 in datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' is media corrupt
    Impact: Object   owned by   might be unavailable
  1624       HIGH     OPEN      13-JUL-20     Block 307 in datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' is media corrupt
    Impact: Object MAXTEST owned by CUSER might be unavailable



failure advisor 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
RMAN> advise failure;
 
Database Role: PRIMARY
 
List of Database Failures
=========================
 
Failure ID Priority Status    Time Detected Summary
---------- -------- --------- ------------- -------
1521       HIGH     OPEN      13-JUL-20     Datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' contains one or more corrupt blocks
  Impact: Some objects in tablespace   might be unavailable
  List of child failures for parent failure ID 1521
  Failure ID Priority Status    Time Detected Summary
  ---------- -------- --------- ------------- -------
  1642       HIGH     OPEN      13-JUL-20     Block 1622 in datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' is media corrupt
    Impact: Object   owned by   might be unavailable
  1636       HIGH     OPEN      13-JUL-20     Block 916 in datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' is media corrupt
    Impact: Object   owned by   might be unavailable
  1630       HIGH     OPEN      13-JUL-20     Block 697 in datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' is media corrupt
    Impact: Object   owned by   might be unavailable
  1624       HIGH     OPEN      13-JUL-20     Block 307 in datafile 5'/app/oracle/oradata/ORCL/corrupt01.dbf' is media corrupt
    Impact: Object MAXTEST owned by CUSER might be unavailable
 
analyzing automatic repair options; this may take some time
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=81 device type=DISK
analyzing automatic repair options complete
 
Mandatory Manual Actions
========================
no manual actions available
 
Optional Manual Actions
=======================
no manual actions available
 
Automated Repair Options
========================
Option Repair Description
------ ------------------
1      Recover multiple corrupt blocks in datafile 5  
  Strategy: The repair includes complete media recovery with no data loss
  Repair script: /app/oracle/diag/rdbms/orcl/orcl/hm/reco_2810289569.hm

37~43 번째 줄에 자동 수리 옵션이 나와있음

복구하는 스크립트까지 제공함



해당 스크립트 확인

1
2
3
$ cat /app/oracle/diag/rdbms/orcl/orcl/hm/reco_2810289569.hm
   # block media recovery for multiple blocks
   recover datafile 5 block 3076979161622;

datafile 5번의 block 307, 697, 916, 1622에 대한 recover 구문이 존재함



해당 구문 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
RMAN> recover datafile 5 block 3076979161622;
 
Starting recover at 13-JUL-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=71 device type=DISK
 
channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00005
channel ORA_DISK_1: reading from backup piece /app/oracle/rman/ORCL_24v57aqa_1_1_20200713.bk
channel ORA_DISK_1: piece handle=/app/oracle/rman/ORCL_24v57aqa_1_1_20200713.bk tag=TAG20200713T160530
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:01
 
starting media recovery
media recovery complete, elapsed time: 00:00:01
 
Finished recover at 13-JUL-20

recover 구문이 완료됨



손상된 블록 재확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
RMAN> validate tablespace corrupt;
 
Starting validate at 13-JUL-20
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=00005 name=/app/oracle/oradata/ORCL/corrupt01.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
---- ------ -------------- ------------ --------------- ----------
5    OK     0              1427         2051            2648534   
  File Name: /app/oracle/oradata/ORCL/corrupt01.dbf
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              244             
  Index      0              223             
  Other      0              154             
 
Finished validate at 13-JUL-20

Blocks Failing이 모두 0으로 나옴

복구완료



참고

해당 trace 파일 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
$ cat /app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_27855.trc
Trace file /app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_27855.trc
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Build label:    RDBMS_19.3.0.0.0DBRU_LINUX.X64_190417
ORACLE_HOME:    /app/oracle/product/19c
System name:    Linux
Node name:    oel7
Release:    4.14.35-1818.3.3.el7uek.x86_64
Version:    #2 SMP Mon Sep 24 14:45:01 PDT 2018
Machine:    x86_64
Instance name: orcl
Redo thread mounted by this instance: 1
Oracle process number: 58
Unix process pid: 25398, image: oracle@oel7 (TNS V1-V3)
 
 
*** 2020-07-13T15:36:55.849213+09:00
*** SESSION ID:(73.68422020-07-13T15:36:55.849227+09:00
*** CLIENT ID:() 2020-07-13T15:36:55.849230+09:00
*** SERVICE NAME:(SYS$USERS) 2020-07-13T15:36:55.849233+09:00
*** MODULE NAME:(backup full datafile) 2020-07-13T15:36:55.849236+09:00
*** ACTION NAME:(0000015 STARTED19) 2020-07-13T15:36:55.849239+09:00
*** CLIENT DRIVER:() 2020-07-13T15:36:55.849242+09:00
 
kcbtse_print_kod: printing kcbtekod structure 0x7f079b852354
--kcbtekod_ena=0 kcbtekod_flag=0x0 kcbtekod_mkloc=0x0
--kcbtekod_key=0000000000000000000000000000000000000000000000000000000000000000
--kcbtekod_mkeyid=00000000000000000000000000000000
kcbtse_print_kod: printing kcbtekod structure 0x7f079b84f054
--kcbtekod_ena=0 kcbtekod_flag=0x0 kcbtekod_mkloc=0x0
--kcbtekod_key=0000000000000000000000000000000000000000000000000000000000000000
--kcbtekod_mkeyid=00000000000000000000000000000000
Hex dump of (file 5, block 791)
Dump of memory from 0x00007F079AB55000 to 0x00007F079AB57000
7F079AB55000 0000A200 00000317 00000000 05010000  [................]
7F079AB55010 0000A417 00000000 00000000 00000000  [................]
7F079AB55020 00000000 00000000 00000000 00000000  [................]
        Repeat 376 times
7F079AB567B0 00000000 00000000 00000000 64646400  [.............ddd]
7F079AB567C0 64646464 64646464 64646464 64646464  [dddddddddddddddd]
        Repeat 2 times
7F079AB567F0 64646464 64646464 64646464 00000000  [dddddddddddd....]
7F079AB56800 00000000 00000000 00000000 00000000  [................]
        Repeat 126 times
7F079AB56FF0 00000000 00000000 00000000 00000001  [................]
Corrupt block relative dba: 0x01400317 (file 5, block 791)
Bad check value found during validation
Data in bad block:
 type: 0 format: 2 rdba: 0x00000317
 last change scn: 0x0000.0000.00000000 seq: 0x1 flg: 0x05
 spare3: 0x0
 consistency value in tail: 0x00000001
 check value in block header: 0xa417
 computed block checksum: 0x64
2020-07-13 15:36:55.859*:KRB:krb.c@3417:krbrrhv(): Reread of blocknum=791, file=/app/oracle/oradata/ORCL/corrupt01.dbf. found same corrupt data
2020-07-13 15:36:55.859*:KRB:krb.c@3417:krbrrhv(): Reread of blocknum=791, file=/app/oracle/oradata/ORCL/corrupt01.dbf. found same corrupt data
2020-07-13 15:36:55.859*:KRB:krb.c@3417:krbrrhv(): Reread of blocknum=791, file=/app/oracle/oradata/ORCL/corrupt01.dbf. found same corrupt data
2020-07-13 15:36:55.859*:KRB:krb.c@3417:krbrrhv(): Reread of blocknum=791, file=/app/oracle/oradata/ORCL/corrupt01.dbf. found same corrupt data
2020-07-13 15:36:55.859*:KRB:krb.c@3417:krbrrhv(): Reread of blocknum=791, file=/app/oracle/oradata/ORCL/corrupt01.dbf. found same corrupt data
dbkh_create_finding: BEGIN
dbkhu_prepare_default_msgobj: BEGIN
dbkhu_prepare_default_msgobj:; name_id=25, type=2, flags=1
dbkhu_get_default_msg_def: BEGIN
dbkhu_get_default_msg_def: END
dbkhu_prepare_default_msgobj:: MSG PARAMS-1; i=2
dbkhu_prepare_default_msgobj: END
dbkhu_prepare_default_msgobj: BEGIN
dbkhu_prepare_default_msgobj:; name_id=25, type=2, flags=2
dbkhu_get_default_msg_def: BEGIN
dbkhu_get_default_msg_def: END
dbkhu_prepare_default_msgobj:: MSG PARAMS-2; i=1
dbkhu_prepare_default_msgobj: END
dbkhu_prepare_default_msgobj: BEGIN
dbkhu_prepare_default_msgobj:; name_id=26, type=2, flags=1
dbkhu_get_default_msg_def: BEGIN
dbkhu_get_default_msg_def: END
dbkhu_prepare_default_msgobj:: MSG PARAMS-1; i=3
dbkhu_prepare_default_msgobj: END
dbkhu_prepare_default_msgobj: BEGIN
dbkhu_prepare_default_msgobj:; name_id=26, type=2, flags=2
dbkhu_get_default_msg_def: BEGIN
dbkhu_get_default_msg_def: END
dbkhu_prepare_default_msgobj:: MSG PARAMS-2; i=2
dbkhu_prepare_default_msgobj: END
dbkh_create_finding: END

dddd를 추가한 내용이 trace 에 나옴



이 기능은 Oracle Standard Edition에서는 사용할 수 없음



참조 : https://positivemh.tistory.com/567

https://blog.pythian.com/oracle-free-block-corruption-test-case/

https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-0F9EB85D-4610-4EDF-89C2-4916A0E7AC87