Oracle 비 압축 파일 모드 Media Recovery 오류 -- ORA - 26040
시스템 환경:
운영 체제: Linux RH 55
Oracle: Oracle 11gR2
아 날로 그 사례:
1. 데이터베이스 모드 보기
18:12:36 SYS@ prod>archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /dsk4/arch1
Oldest online log sequence 1
Current log sequence 3
2. 새로운 Tablespace 만 들 기
18:13:19 SYS@ prod>create tablespace tbs2
18:13:30 2 datafile '/u01/app/oracle/oradata/prod/tbs2.dbf' size 10m;
Tablespace created.
3. 데이터베이스 에 대한 냉 방 준비
[oracle@rh6 ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Thu Jul 24 18:14:30 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: PROD (DBID=239333010)
RMAN> run {
2> shutdown immediate;
3> startup mount;
4> backup database format '/dsk3/bak/%s_%d.bak';
5> alter database open;
6> }
4, 백업 완료 새로운 Tablesapce 에 Object 생 성
18:19:40 SYS@ prod>conn scott/tiger
Connected.
18:30:13 SCOTT@ prod>create table t1 tablespace tbs2 as select * from emp;
Table created.
Elapsed: 00:00:01.00
18:30:45 SCOTT@ prod>select count(*) from t1;
COUNT(*)
----------
14
Elapsed: 00:00:00.02
18:30:56 SCOTT@ prod>insert into t1 select * from t1 where rownum=1;
1 row created.
Elapsed: 00:00:00.02
18:31:16 SCOTT@ prod>commit;
Commit complete.
Elapsed: 00:00:00.04
18:31:18 SCOTT@ prod>insert into t1 select * from t1 where rownum=1;
1 row created.
Elapsed: 00:00:00.01
18:31:23 SCOTT@ prod>select count(*) from t1;
COUNT(*)
----------
16
5 、 Redo Log 정보 보기
18:32:14 SYS@ prod>select group#,sequence# ,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 4 CURRENT
2 2 INACTIVE
3 3 INACTIVE
Elapsed: 00:00:00.05
6. 아 날로 그 데이터 파일 파괴
[oracle@rh6 ~]$ rm /u01/app/oracle/oradata/prod/tbs2.dbf
18:32:28 SYS@ prod>shutdown abort
ORACLE instance shut down.
Instance 를 mount 로 다시 시작 하고 redo log 를 보 며 로그 에 switch 가 발생 하지 않 았 습 니 다.
18:33:06 SYS@ prod>startup mount;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 775948320 bytes
Database Buffers 54525952 bytes
Redo Buffers 2412544 bytes
Database mounted.
18:33:42 SYS@ prod>select group#,sequence# ,status from v$log;
GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 4 CURRENT
3 3 INACTIVE
2 2 INACTIVE
Open 데이터베이스 에서 데이터 파일 을 잃 어 버 리 는 오류 가 발생 했 습 니 다.
18:34:17 SYS@ prod>alter database open;
alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 9: '/u01/app/oracle/oradata/prod/tbs2.dbf'
7. Database 에 Media Recovery (로그 전환 이 없 기 때문에 complete recover)
[oracle@rh6 ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Thu Jul 24 18:34:35 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: PROD (DBID=239333010, not open)
RMAN> restore datafile 9;
Starting restore at 24-JUL-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=18 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00009 to /u01/app/oracle/oradata/prod/tbs2.dbf
channel ORA_DISK_1: reading from backup piece /dsk3/bak/34_PROD.bak
channel ORA_DISK_1: piece handle=/dsk3/bak/34_PROD.bak tag=TAG20140724T181640
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 24-JUL-14
RMAN> recover datafile 9;
Starting recover at 24-JUL-14
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:01
Finished recover at 24-JUL-14
경고 로그 보기:
Thu Jul 24 18:34:49 2014
Full restore complete of datafile 9 /u01/app/oracle/oradata/prod/tbs2.dbf. Elapsed time: 0:00:00
checkpoint is 2168258
Thu Jul 24 18:34:57 2014
alter database recover datafile list clear
Completed: alter database recover datafile list clear
alter database recover if needed
datafile 9
Media Recovery Start
Serial Media Recovery started
Recovery of Online Redo Log: Thread 1 Group 3 Seq 3 Reading mem 0
Mem# 0: /dsk1/oradata/prod/redo03a.log
Mem# 1: /dsk2/oradata/prod/redo03b.log
Recovery of Online Redo Log: Thread 1 Group 1 Seq 4 Reading mem 0
Mem# 0: /dsk1/oradata/prod/redo01a.log
Mem# 1: /dsk2/oradata/prod/redo01b.log
Media Recovery Complete (prod)
Completed: alter database recover if needed
datafile 9
group 1 과 3 을 통 해 media recovery 를 진행 하 였 습 니 다!
8. 데이터베이스 open, T1 에 접근 할 수 없 음 발견 (출현: ORA - 26040)
18:35:36 SYS@ prod>alter database open;
Database altered.
18:35:49 SYS@ prod>select count(*) from scott.t1;
select count(*) from scott.t1
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 9, block # 131)
ORA-01110: data file 9: '/u01/app/oracle/oradata/prod/tbs2.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
경고 로그 보기:
alter database open
Beginning crash recovery of 1 threads
Started redo scan
Completed redo scan
read 83 KB redo, 26 data blocks need recovery
Started redo application at
Thread 1: logseq 4, block 117
Recovery of Online Redo Log: Thread 1 Group 1 Seq 4 Reading mem 0
Mem# 0: /dsk1/oradata/prod/redo01a.log
Mem# 1: /dsk2/oradata/prod/redo01b.log
Completed redo application of 0.02MB
Completed crash recovery at
Thread 1: logseq 4, block 284, scn 2208986
26 data blocks read, 26 data blocks written, 83 redo k-bytes read
Thu Jul 24 18:35:45 2014
Thread 1 advanced to log sequence 5 (thread open)
Thread 1 opened at log sequence 5
Current log# 2 seq# 5 mem# 0: /dsk1/oradata/prod/redo02a.log
Current log# 2 seq# 5 mem# 1: /dsk2/oradata/prod/redo02b.log
Successful open of redo thread 1
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Thu Jul 24 18:35:45 2014
SMON: enabling cache recovery
Successfully onlined Undo Tablespace 5.
Verifying file header compatibility for 11g tablespace encryption..
Verifying 11g file header compatibility for tablespace encryption completed
SMON: enabling tx recovery
Database Characterset is ZHS16GBK
No Resource Manager plan active
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
Thu Jul 24 18:35:48 2014
QMNC started with pid=20, OS id=13934
Completed: alter database open
Thu Jul 24 18:35:54 2014
Starting background process CJQ0
Thu Jul 24 18:35:54 2014
CJQ0 started with pid=23, OS id=13946
Thu Jul 24 18:36:06 2014
Errors in file /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_ora_13932.trc (incident=139383):
ORA-01578: ORACLE data block corrupted (file # 9, block # 131)
ORA-01110: data file 9: '/u01/app/oracle/oradata/prod/tbs2.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
Incident details in: /u01/app/oracle/diag/rdbms/prod/prod/incident/incdir_139383/prod_ora_13932_i139383.trc
Errors in file /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_ora_13932.trc (incident=139384):
ORA-01578: ORACLE data block corrupted (file # 9, block # 131)
ORA-01110: data file 9: '/u01/app/oracle/oradata/prod/tbs2.dbf'
ORA-26040: Data block was loaded using the NOLOGGING option
Incident details in: /u01/app/oracle/diag/rdbms/prod/prod/incident/incdir_139384/prod_ora_13932_i139384.trc
Thu Jul 24 18:36:13 2014
Trace dumping is performing id=[cdmp_20140724183613]
Thu Jul 24 18:36:14 2014
Sweep [inc][139384]: completed
Sweep [inc][139383]: completed
Sweep [inc2][139383]: completed
Trace dumping is performing id=[cdmp_20140724183617]
Thu Jul 24 18:37:14 2014
Sweep [inc2][139384]: completed
9. DBV 를 통 해 데이터 파일 검증
[oracle@rh6 ~]$ dbv file=/u01/app/oracle/oradata/prod/tbs2.dbf blocksize=8192
DBVERIFY: Release 11.2.0.1.0 - Production on Thu Jul 24 18:45:59 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/prod/tbs2.dbf
DBV-00201: Block, DBA 37748867, marked corrupt for invalid redo application
DBVERIFY - Verification complete
Total Pages Examined : 1280
Total Pages Processed (Data) : 4
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing (Index): 0
Total Pages Processed (Other): 1274
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 2
Total Pages Marked Corrupt : 1
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 2188961 (0.2188961)
데이터 파일 9 에 논리 적 불량 블록 이 나 타 났 습 니 다!
10. 덤 프 데이터 블록
14:35:48 SYS@ prod>alter system dump datafile 9 block 131;
System altered.
데이터 블록 덤 프 정보:
[oracle@rh6 ~]$ cat /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_ora_2822.trc|more
Trace file /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_ora_2822.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1
System name: Linux
Node name: rh6
Release: 2.6.32-358.el6.x86_64
Version: #1 SMP Tue Jan 29 11:47:41 EST 2013
Machine: x86_64
Instance name: prod
Redo thread mounted by this instance: 1
Oracle process number: 29
Unix process pid: 2822, p_w_picpath: oracle@rh6 (TNS V1-V3)
*** 2014-07-25 14:37:54.634
*** SESSION ID:(28.16) 2014-07-25 14:37:54.634
*** CLIENT ID:() 2014-07-25 14:37:54.634
*** SERVICE NAME:(SYS$USERS) 2014-07-25 14:37:54.634
*** MODULE NAME:(sqlplus@rh6 (TNS V1-V3)) 2014-07-25 14:37:54.634
*** ACTION NAME:() 2014-07-25 14:37:54.634
Start dump data blocks tsn: 9 file#:9 minblk 131 maxblk 131
Block dump from cache:
Dump of buffer cache at level 4 for tsn=9, rdba=37748867
Block dump from disk:
buffer tsn: 9 rdba: 0x02400083 (9/131)
scn: 0x0000.00216666 seq: 0xff flg: 0x04 tail: 0x666600ff
frmt: 0x02 chkval: 0xa4e2 type: 0x00=unknown
Hex dump of block: st=0, typ_found=0
Dump of memory from 0x00007FDEF186CA00 to 0x00007FDEF186EA00
7FDEF186CA00 0000A200 02400083 00216666 04FF0000 [[email protected]!.....]
7FDEF186CA10 0000A4E2 FFFFFFFF FFFFFFFF FFFFFFFF [................]
7FDEF186CA20 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF [................]
Repeat 508 times
7FDEF186E9F0 FFFFFFFF FFFFFFFF FFFFFFFF 666600FF [..............ff]
End dump data blocks tsn: 9 file#: 9 minblk 131 maxblk 131
- block 131 은 머리 정 보 를 제외 하고 나머지 는 모두 'FFFFFF' 인 것 을 알 수 있 습 니 다. 논리 적 인 나 쁜 블록 이 어야 합 니 다!
11. 덤 프 에 대응 하 는 logfile
14:35:48 SYS@ prod>alter system dump logfile '/dsk1/oradata/prod/redo01a.log';
System altered.
14:35:53 SYS@ prod>alter system dump logfile '/dsk1/oradata/prod/redo03a.log';
System altered.
[oracle@rh6 ~]$ cat /u01/app/oracle/diag/rdbms/prod/prod/trace/prod_ora_2406.trc
DUMP OF REDO FROM FILE '/dsk1/oradata/prod/redo01a.log'
Opcodes *.*
RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
SCNs: scn: 0x0000.00000000 thru scn: 0xffff.ffffffff
Times: creation thru eternity
FILE HEADER:
Compatibility Vsn = 186646528=0xb200000
Db ID=239333010=0xe43ee92, Db Name='PROD'
Activation ID=264808982=0xfc8aa16
Control Seq=2747=0xabb, File size=102400=0x19000
File Number=1, Blksiz=512, File Type=2 LOG
descrip:"Thread 0001, Seq# 0000000004, SCN 0x000000216562-0x00000021b4dc"
thread: 1 nab: 0x11c seq: 0x00000004 hws: 0x6 eot: 0 dis: 0
resetlogs count: 0x32d7d50e scn: 0x0000.00206c24 (2124836)
prev resetlogs count: 0x32d7cc14 scn: 0x0000.0020680f (2123791)
Low scn: 0x0000.00216562 (2188642) 07/24/2014 18:27:42
Next scn: 0x0000.0021b4dc (2208988) 07/24/2014 18:35:45
Enabled scn: 0x0000.00206c24 (2124836) 07/15/2014 17:59:42
Thread closed scn: 0x0000.0021b4da (2208986) 07/24/2014 18:33:04
Disk cksum: 0x1af0 Calc cksum: 0x1af0
Terminal recovery stop scn: 0x0000.00000000
Terminal recovery 01/01/1988 00:00:00
Most recent redo scn: 0x0000.00000000
Largest LWN: 0 blocks
End-of-redo stream : No
Unprotected mode
Miscellaneous flags: 0x800000
Thread internal enable indicator: thr: 0, seq: 0 scn: 0x0000.00000000
REDO RECORD - Thread:1 RBA: 0x000004.000000c6.0198 LEN: 0x0034 VLD: 0x01
SCN: 0x0000.00216666 SUBSCN: 1 07/24/2014 18:30:45
CHANGE #1 INVLD AFN:9 DBA:0x02400083 BLKS:0x0001 OBJ:75139 SCN:0x0000.00216666 SEQ:1 OP:19.2 ENC:0
Direct Loader invalidate block range redo entry
REDO RECORD - Thread:1 RBA: 0x000006.000007b6.0110 LEN: 0x0034 VLD: 0x01
SCN: 0x0000.00220ad0 SUBSCN: 1 07/25/2014 14:22:51
CHANGE #1 INVLD AFN:2 DBA:0x0080f09c BLKS:0x0001 OBJ:6214 SCN:0x0000.00220ad0 SEQ:1 OP:19.2 ENC:0
Direct Loader invalidate block range redo entry
- redo 로그 에 "Direct Loader" 동작 을 기록 했다 (OBJ: 75139, OBJ: 6214)
대응 하 는 대상 보기:
14:29:23 SYS@ prod>select owner,object_id,object_name from dba_objects
15:18:47 2 where object_id=75139;
OWNER OBJECT_ID OBJECT_NAME
------------------------------ ---------- --------------------
SCOTT 75139 T1
Elapsed: 00:00:00.04
15:18:51 SYS@ prod>select owner,object_id,object_name from dba_objects
15:18:58 2 where object_id=6214;
OWNER OBJECT_ID OBJECT_NAME
------------------------------ ---------- --------------------
SYS 6214 SYS_LOB0000006213C00
038$$
Elapsed: 00:00:00.05
15:19:07 SYS@ prod>
이상 에서 정 보 를 보면 미디어 Recover 단계 에서 create table T1 as select * from 은 'Direct Loader' 를 사 용 했 고 압축 파일 이 아 닌 'nologging' 방식 을 사 용 했 을 것 입 니 다. 그래서 후속 적 인 Insert 데 이 터 는 redo log 를 통 해 복구 되 지 못 해 논리 적 인 나 쁜 블록 이 생 겼 습 니 다!
비고: (Maclean Liu 블 로그 관점 참조)
http://www.askmaclean.com/archives/nologging-unrecoverable.html
[데이터 복구] NOLOGGING UNRECOVERABLE ORA - 26040 분석
SQL> select count(*) from abc;select count(*) from abc* 1 :ORA-01578: ORACLE ( 17, 131)ORA-01110: 17:‘C:\APP\XIANGBLI\ORADATA\MACLEAN\DATAFILE\O1_MF_NLOGGING_9475OCS5_.DBF’ORA-26040: NOLOGGING
SQL> select UNRECOVERABLE_CHANGE# , UNRECOVERABLE_time from v$datafile where file#=17;
UNRECOVERABLE_CHANGE# UNRECOVERABLE_——————— ————–6486756 26-9 -13
( 17, 131) dump
*** 2013-09-26 10:07:46.584Start dump data blocks tsn: 17 file#:17 minblk 131 maxblk 131Block dump from cache:Dump of buffer cache at level 4 for pdb=0 tsn=17 rdba=71303299Block dump from disk:buffer tsn: 17 rdba: 0×04400083 (17/131)scn: 0×0.62faac seq: 0xff flg: 0×04 tail: 0xfaac00fffrmt: 0×02 chkval: 0xa2a1 type: 0×00=unknownHex dump of block: st=0, typ_found=0Dump of memory from 0x000000000BFF2200 to 0x000000000BFF420000BFF2200 0000A200 04400083 0062FAAC 04FF0000 [[email protected].....]00BFF2210 0000A2A1 FFFFFFFF FFFFFFFF FFFFFFFF [................]00BFF2220 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF [................]Repeat 508 times00BFF41F0 FFFFFFFF FFFFFFFF FFFFFFFF FAAC00FF [................]End dump data blocks tsn: 17 file#: 17 minblk 131 maxblk 131
scn: 0×0.62faac seq: 0xff
==》 SCN 6486700, 0XFF
dump redo logfile
REDO RECORD – Thread:1 RBA: 0×000074.00015418.0078 LEN: 0x003c VLD: 0×01 CON_UID: 0SCN: 0×0000.0062faac SUBSCN: 1 09/26/2013 10:04:39CHANGE #1 INVLD CON_ID:0 AFN:17 DBA:0×04400083 BLKS:0x000d OBJ:123054 SCN:0×0000.0062faac SEQ:1 OP:19.2 ENC:0Direct Loader invalidate block range redo entry
OP:19.2=》Layer 19 : Direct Loader Log Blocks – KCOCODLB Opcode 2 : Invalidate range – KCBLCOIR
==》 redo , redo logfile dump
recover redo, “Direct Loader invalidate block range redo entry” , kcbh 0XFF
Oracle SOFT Corrupt , nologging 。
Block is marked as SOFT Corrupt and has 0xff along the block. This is theformat used by Oracle to mark a block as corrupt due to redo invalidation(NOLOGGING).NOLOGGING OPERATION in redo:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Oracle 생성 향후 3일간의 전체 시점 (단계 상세)수요: X 좌표축 시간은 모두 정시 시간으로 앞으로 3일 동안의 예측을 보여준다(x 축은 앞으로 3일 동안의 정시 시간을 보여준다), 3시간마다 한 눈금, 가로 좌표는 모두 24개의 눈금을 보여준다 1단계: 현재 시...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.