Does oracle import datapump fix block corruption?
Dear all,
I am having a data block corruption on production. I want to export this DB and import it to a test environment using datapump, in order to do some tests on it.
However I am concerned whether impdp will resolve this scenario... and therefore I will lose my test case...
so will oracle import datapump fix block corruption?
Thank you
so will oracle import datapump fix block corruption?.No. It detects Logical corruption (corruption and the corrupted segment will not be exported or imported.
Fix the issue by identifying the segment.
Get the block information from your alert.log
select segment_type,owner.segment_name
from dba_extents
where file_id = [&file_id] and [&block] between block_id and block_id+blocks -1; if it is index then drop and recreate index
if it is table and you have backup of that table then restore backup on another database and exp/imp the table.
Similar Messages
-
Finding and fixing block corruption in oracle 10g
10.2.0.5.6
OS: Hp-unix
databases files on RAW.
DB Size: 10 TBs+
We had a SAN outage recently. The DB is back online. We want to check for block corruption to be on the safe side. We are planning to take a SAN EMC BCV copy of prod to run this. Looking for opinioms on the best way.Production is up and running. This is just a sanity check.
We are NOT using RMAN for backups. We do a BCV copy and then back that up and archive logs to tape.
RMAN: Can we do this from the control files? Do we have to set anything up? Is this the best way?
DBMS_REPAIR: I have not used this. We don't even have the package installed. I can install it.
DB_VERIFY: not sure if this is a good option or not. Is this current? I know I'll have to do it file by file and grep the logs. I have used this in the past, but its been a while.
Performance issues, CPU, I/O don't matter. We are doing a BCV copy and then mounting the DB on a new server.Guess2 wrote:
10.2.0.5.6
OS: Hp-unix
databases files on RAW.
DB Size: 10 TBs+
We had a SAN outage recently. The DB is back online. We want to check for block corruption to be on the safe side. We are planning to take a SAN EMC BCV copy of prod to run this. Looking for opinioms on the best way.Production is up and running. This is just a sanity check.
We are NOT using RMAN for backups. We do a BCV copy and then back that up and archive logs to tape.
RMAN: Can we do this from the control files? Do we have to set anything up? Is this the best way?
DBMS_REPAIR: I have not used this. We don't even have the package installed. I can install it.
DB_VERIFY: not sure if this is a good option or not. Is this current? I know I'll have to do it file by file and grep the logs. I have used this in the past, but its been a while.
Performance issues, CPU, I/O don't matter. We are doing a BCV copy and then mounting the DB on a new server.
bcm@bcm-laptop:~$ dbv -help
DBVERIFY: Release 11.2.0.1.0 - Production on Mon May 21 07:29:42 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Keyword Description (Default)
FILE File to Verify (NONE)
START Start Block (First Block of File)
END End Block (Last Block of File)
BLOCKSIZE Logical Block Size (8192)
LOGFILE Output Log (NONE)
FEEDBACK Display Progress (0)
PARFILE Parameter File (NONE)
USERID Username/Password (NONE)
SEGMENT_ID Segment ID (tsn.relfile.block) (NONE)
HIGH_SCN Highest Block SCN To Verify (NONE)
(scn_wrap.scn_base OR scn) can be done against any datafile; open or closed, production or clone
Handle: Guess2
Status Level: Newbie
Registered: Aug 5, 2000
Total Posts: 454
Total Questions: 212 (201 unresolved)
WHY so MANY unanswered questions?
Edited by: sb92075 on May 21, 2012 7:31 AM -
Does Import/Export Utility check for Block corruption?
Hi All,
Just a quick question I have is does Import/Export Utiligy check for any block corruption while importing or exporting?
If yes then does it do automatically or we have do set some parameter explicitly.
I am using oracel version 9.2.0.6.
Thx in advance.Hi yingkuan/kanchan
Thx for your prompt reply. Still I am not clear as you said that export check for the block corruption error and if there is any it will display the error message in log file. But does it copy corrupted block or skip that block or mark that block as corrupted?
Thx in advance.
- Mehul -
Help Fix 26473 Corrupt blocks in system09.dbf
How to Format Corrupted Block Not Part of Any Segment [ID 336133.1]
I'm following the above doc to fix 26K corrupt blocks in system09.dbf
in Step 7 of the Doc it says:
+" First find the *extent size* by querying dba_free_space "+
+65536 = If its 64 K+
+1048576 = 1M+
I'm getting 891559936 with the following query:
SQL> Select bytes from dba_free_space where file_id= 352 and 192128 between block_id and block_id + blocks -1;
BYTES
891559936
What will be my extent size?
I'm lost on how to proceed with the following steps:
BEGIN
for i in 1..1000000 loop
EXECUTE IMMEDIATE 'alter table apps.s allocate extent (DATAFILE '||'''/oracle/KPSO/db/apps_st/data/system09.dbf''' ||'SIZE 64K) ';
end loop;
end ;
+/+
Note you need to change accordingly the size (1M ,64K or 128k) and the value of for loop
can be changed as per requirement.
Thanks.
-Joey->
currently doing another round of steps 5-9 to see if it will wipe out all the corrupt blocks.Just want to give an update:
Datafile was completely free of corruption after 2 more passes ..
$ dbv file=/oracle/KPSO/db/apps_st/data/system09.dbf blocksize=8192
DBVERIFY: Release 11.1.0.7.0 - Production on Thu Mar 22 05:08:56 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /oracle/KPSO/db/apps_st/data/system09.dbf
DBVERIFY - Verification complete
Total Pages Examined : 192128
Total Pages Processed (Data) : 160979
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 26455
Total Pages Failing (Index): 0
Total Pages Processed (Other): 2124
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 2570
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 3757005752 (1388.3757005752) -
BLOCK CORRUPTION (ORA-1578) 처리 (ORACLE 8I NEW FEATURE)
제품 : ORACLE SERVER
작성날짜 : 2002-05-31
BLOCK CORRUPTION (ORA-1578) 처리 (ORACLE 8I NEW FEATURE)
========================================================
PURPOSE
Block Corruption의 처리 방안에 대해 알아본다.
Problem Description
block corruption 시 10210, 10211,10231 의 event 를 사용해서
해당 block 을 skip 할 수도 있지만 V8.1 이상에서는
dbms_repair.fix_corrupt_blocks ,
dbms_repair.skip_corrupt_block 를 이용하여
corrupt가 발생한 block을 detect하고 skip, 또는 repair해주는 방안이
제시되고 있다.
Workaround
Solution Description
- 먼저 detecting 을 위해 db_block_checking =true 를 init.ora 에 set
- dbms_repair 의 package 를 사용하는데 이 package 는 dbmsrpr.sql,
prvtrpr.plb를 수행한다 .
- sys 로 접속하여 package 를 실행한다.
다음의 예제를 살펴보자
T1 테이블에 corrupt 된 block 이 있다고 가정한다.
SQL> desc t1
Name Null? Type
COL1 NOT NULL NUMBER(38)
COL2 CHAR(512)
SQL> analyze table t1 validate structure;
analyze table t1 validate structure
ERROR at line 1:
ORA-01498: block check failure - see trace file
이때 ANALYZE로 부터 발생된 trace file 에 corrupt 된 block 에 3 row 의
(nrows = 3) data 가 있음을 알수 있다고 가정하자.
DBMS_REPAIR.ADMIN_TABLES (repair and orphan key)
================================================
ADMIN_TABLES 은 table 을 위한 repair table과,인덱스를 위한 orphan key
tables을 제공한다.
SQL> @adminCreate
SQL> connect sys/change_on_install
Connected.
SQL>
SQL> -- Repair Table
SQL>
SQL> declare
2 begin
3 -- Create repair table
4 dbms_repair.admin_tables (
5 -- table_name => 'REPAIR_TABLE',
6 table_type => dbms_repair.repair_table,
7 action => dbms_repair.create_action,
8 tablespace => 'USERS'); -- default TS of SYS if not specified
9 end;
10 /
PL/SQL procedure successfully completed.
SQL> select owner, object_name, object_type
2 from dba_objects
3 where object_name like '%REPAIR_TABLE';
OWNER OBJECT_NAME OBJECT_TYPE
SYS DBA_REPAIR_TABLE VIEW
SYS REPAIR_TABLE TABLE
SQL>
SQL> -- Orphan Key Table
SQL>
SQL> declare
2 begin
3 -- Create orphan key table
4 dbms_repair.admin_tables (
5 table_type => dbms_repair.orphan_table,
6 action => dbms_repair.create_action,
7 tablespace => 'USERS'); -- default TS of SYS if not specified
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> select owner, object_name, object_type
2 from dba_objects
3 where object_name like '%ORPHAN_KEY_TABLE';
OWNER OBJECT_NAME OBJECT_TYPE
SYS DBA_ORPHAN_KEY_TABLE VIEW
SYS ORPHAN_KEY_TABLE TABLE
DBMS_REPAIR.CHECK_OBJECT
=========================
CHECK_OBJECT procedure 는 기술된 object를 check 하고, repair 를 위한 정보를 수집하기 위함이다.
SQL> @checkObject
SQL> set serveroutput on
SQL>
SQL> declare
2 rpr_count int;
3 begin
4 rpr_count := 0;
5 dbms_repair.check_object (
6 schema_name => 'SYSTEM',
7 object_name => 'T1',
8 repair_table_name => 'REPAIR_TABLE',
9 corrupt_count => rpr_count);
10 dbms_output.put_line('repair count: ' || to_char(rpr_count));
11 end;
12 /
repair count: 1
PL/SQL procedure successfully completed.
SQL> desc repair_table
Name Null? Type
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> select object_name, block_id, corrupt_type, marked_corrupt,
2 corrupt_description, repair_description
3 from repair_table;
OBJECT_NAME BLOCK_ID CORRUPT_TYPE MARKED_COR
CORRUPT_DESCRIPTION
REPAIR_DESCRIPTION
T1 3 1 FALSE
kdbchk: row locked by non-existent transaction
table=0 slot=0
lockid=32 ktbbhitc=1
mark block software corrupt
Data Extraction
===============
repair table에 의하면 file 6 ,block 3 에 corrupt 이 났음을 알수 있다
그러나 아직 이 block 은 corrupt 로 mark 되어 있지 않으므로 필요 data 를
추출하여야 한다.
1. ALTER SYSTEM DUMP (nrows = 3) 에 의해 block안에 있는 row수를 결정한다.
2. corrupt object를 select 하여 가능한 정보를 추출한다.
SQL> -- The following query can be used to salvage data from a corrupt block.
SQL> -- Creating a temporary table facilitates data insertion.
SQL> create table temp_t1 as
2 select * from system.t1
3 where dbms_rowid.rowid_block_number(rowid) = 3
4 and dbms_rowid.rowid_to_absolute_fno (rowid, 'SYSTEM','T1') = 6;
Table created.
SQL> select col1 from temp_t1;
COL1
2
3
DBMS_REPAIR.FIX_CORRUPT_BLOCKS (ORA-1578)
============================================
FIX_CORRUPT_BLOCKS procedure는 repair table 의 정보를 이용하여 corrupt
blocks 을 fix 한다
그러나 아직 full table scan 시 여전히 error 가 발생한다
SQL> declare
2 fix_count int;
3 begin
4 fix_count := 0;
5 dbms_repair.fix_corrupt_blocks (
6 schema_name => 'SYSTEM',
7 object_name => 'T1',
8 object_type => dbms_repair.table_object,
9 repair_table_name => 'REPAIR_TABLE',
10 fix_count => fix_count);
11 dbms_output.put_line('fix count: ' || to_char(fix_count));
12 end;
13 /
fix count: 1
PL/SQL procedure successfully completed.
SQL> select object_name, block_id, marked_corrupt
2 from repair_table;
OBJECT_NAME BLOCK_ID MARKED_COR
T1 3 TRUE
SQL> select * from system.t1;
select * from system.t1
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 6, block # 3)
ORA-01110: data file 6: '/tmp/ts_corrupt.dbf'
DBMS_REPAIR.DUMP_ORPHAN_KEYS
==============================
DUMP_ORPHAN_KEYS는 corrupt data 에 해당하는 index 를 나타내 준다
SQL> select index_name from dba_indexes
2 where table_name in (select distinct object_name from repair_table);
INDEX_NAME
T1_PK
SQL> @dumpOrphanKeys
SQL> set serveroutput on
SQL>
SQL> declare
2 key_count int;
3 begin
4 key_count := 0;
5 dbms_repair.dump_orphan_keys (
6 schema_name => 'SYSTEM',
7 object_name => 'T1_PK',
8 object_type => dbms_repair.index_object,
9 repair_table_name => 'REPAIR_TABLE',
10 orphan_table_name => 'ORPHAN_KEY_TABLE',
11 key_count => key_count);
12 dbms_output.put_line('orphan key count: ' || to_char(key_count));
13 end;
14 /
orphan key count: 3
PL/SQL procedure successfully completed.
SQL> desc orphan_key_table
Name Null? Type
SCHEMA_NAME NOT NULL VARCHAR2(30)
INDEX_NAME NOT NULL VARCHAR2(30)
IPART_NAME VARCHAR2(30)
INDEX_ID NOT NULL NUMBER
TABLE_NAME NOT NULL VARCHAR2(30)
PART_NAME VARCHAR2(30)
TABLE_ID NOT NULL NUMBER
KEYROWID NOT NULL ROWID
KEY NOT NULL ROWID
DUMP_TIMESTAMP NOT NULL DATE
SQL> select index_name, count(*) from orphan_key_table
2 group by index_name;
INDEX_NAME COUNT(*)
T1_PK 3
Note: orphan key table의 index 는 다시 rebuild 되어야 한다.
DBMS_REPAIR.SKIP_CORRUPT_BLOCKS
===============================
SKIP_CORRUPT_BLOCKS 은 table 과 index 의 corrupt block 을 skip 하는 것을 enable/disable 을 실시한다.
Suggestion: SKIP_CORRUPT_BLOCKS 가 enabled되면 orphan key table의 모든
index 는 모두 rebuild 되어야 한다. ( all index associated with object
if DUMP_ORPHAN_KEYS was omitted).
SQL> @skipCorruptBlocks
SQL> declare
2 begin
3 dbms_repair.skip_corrupt_blocks (
4 schema_name => 'SYSTEM',
5 object_name => 'T1',
6 object_type => dbms_repair.table_object,
7 flags => dbms_repair.skip_flag);
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> select table_name, skip_corrupt from dba_tables
2 where table_name = 'T1';
TABLE_NAME SKIP_COR
T1 ENABLED
SQL> -- rows in corrupt block skipped, no errors on full table scan
SQL> select * from system.t1;
COL1 COL2
4 dddd
5 eeee
--> Notice the pk index has not yet been corrected.
SQL> insert into system.t1 values (1,'aaaa');
insert into system.t1 values (1,'aaaa')
SQL> select * from system.t1 where col1 = 1;
no rows selected
DBMS_REPAIR.REBUILD_FREELISTS
===============================
REBUILD_FREELISTS rebuilds freelists for the specified object.
SQL> declare
2 begin
3 dbms_repair.rebuild_freelists (
4 schema_name => 'SYSTEM',
5 object_name => 'T1',
6 object_type => dbms_repair.table_object);
7 end;
8 /
PL/SQL procedure successfully completed.
Rebuild Index
=============
Note: Every index identified in the orphan key table should be rebuilt to
ensure consistent results.
SQL> alter index system.t1_pk rebuild online;
Index altered.
SQL> insert into system.t1 values (1, 'aaaa');
1 row created.
SQL> select * from system.t1;
COL1 COL2
4 dddd
5 eeee
1 aaaa
Reference Document
------------------Try look to alert<SID>.log file for full error report (you could paste it here).
Also from alert log you could get real values for db_block_buffers and shared_pool_size parameters that used during instance startup. -
Hi,
I am running into a data corruption issue.
My database is:
SQL> select banner from v$version;
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
The following information is written to the alert.log File
alert.log File
Mon Nov 07 17:24:12 2011
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_1 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =27
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production.
ORACLE_HOME = /home/oracle/dbhome
System name: Linux
Node name: dbl-ora
Release: 2.6.18-274.3.1.el5 (This is rhel5.7 or CentOs5.7)
Version: #1 SMP Tue Sep 6 20:14:03 EDT 2011
Machine: i686 / vm
Mon Nov 07 19:42:14 2011
Corrupt Block Found
TSN = 0, TSNAME = SYSTEM
RFN = 1, BLK = 52346, RDBA = 4246650
OBJN = 225, OBJD = 225, OBJECT = IDL_UB1$, SUBOBJECT =
SEGMENT OWNER = SYS, SEGMENT TYPE = Table Segment
Errors in file /home/oracle/diag/rdbms/ora11/K/trace/K_ora_5425.trc (incident=11053):
ORA-01578: ORACLE data block corrupted (file # 1, block # 52346)
ORA-01110: data file 1: '/home/oracle/oradata/ora11/system01.dbf'
Incident details in: /home/oracle/diag/rdbms/ora11/K/incident/incdir_11053/K_ora_5425_i11053.trc
I was even able to detect the row that is generating the issue.
In my case the obj# 33573 until 33577 are causing the issue,
though I have no idea what sort of objects are affected.
SQL> select * from idl_ub1$ where obj#=33572;
OBJ# PART VERSION PIECE# LENGTH P
33572 1 0 0 9032 F
SQL> select * from idl_ub1$ where obj#=33573;
ERROR:
ORA-01578: ORACLE data block corrupted (file # 1, block # 52346)
ORA-01110: data file 1: '/home/oracle/oradata/ora11/system01.dbf'
no rows selected
SQL> select * from idl_ub1$ where obj#=33577;
ERROR:
ORA-01578: ORACLE data block corrupted (file # 1, block # 52358)
ORA-01110: data file 1: '/home/oracle/oradata/ora11/system01.dbf'
no rows selected
SQL> select * from idl_ub1$ where obj#=33578;
OBJ# PART VERSION PIECE# LENGTH P
33578 1 0 0 9032 F
Any idea, how to fix this problem without recreating the whole database?
Thanks in advance.
wmager
Edited by: magerxr on Nov 7, 2011 8:27 AMmagerxr wrote:
Thanks again for your quick advise.
Here comes the result of dbv against my system tablespace.
[oracle@dbl-ora ~]$ dbv FILE=/home/oracle/oradata/ora11/system01.dbf
DBVERIFY: Release 11.2.0.3.0 - Production on Mon Nov 7 22:39:11 2011
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
DBVERIFY - Verification starting : FILE = /home/oracle/oradata/ora11/system01.dbf
Page 52346 is influx - most likely media corrupt
Corrupt block relative dba: 0x0040cc7a (file 1, block 52346)
Fractured block found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x0040cc7a
last change scn: 0x0000.0010acfa seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x00000000
check value in block header: 0x8fda
computed block checksum: 0xaafbselect owner, segment_type, segment_name from dba_extents
where file_id = 1 and 52346 between block_id and block_id+blocks-1;
>
Page 52347 is marked corrupt
Corrupt block relative dba: 0x0040cc7b (file 1, block 52347)
Bad header found during dbv:
Data in bad block:
type: 1 format: 6 rdba: 0x0000a206
last change scn: 0xacfa.0040cc7b seq: 0x10 flg: 0x00
spare1: 0xfa spare2: 0xac spare3: 0x401
consistency value in tail: 0x00000000
check value in block header: 0x0
block checksum disabled
select owner, segment_type, segment_name from dba_extents
where file_id = 1 and 52347 between block_id and block_id+blocks-1;
Page 52361 is marked corrupt
Corrupt block relative dba: 0x0040cc89 (file 1, block 52361)
Bad header found during dbv:
Data in bad block:
type: 1 format: 6 rdba: 0x0000a206
last change scn: 0xacfb.0040cc89 seq: 0x10 flg: 0x00
spare1: 0xfb spare2: 0xac spare3: 0x401
consistency value in tail: 0x32298500
check value in block header: 0x0
block checksum disabled
select owner, segment_type, segment_name from dba_extents
where file_id = 1 and 52361 between block_id and block_id+blocks-1;
>
>
DBVERIFY - Verification complete
Total Pages Examined : 122880
Total Pages Processed (Data) : 81298
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 22307
Total Pages Failing (Index): 0
Total Pages Processed (Other): 3349
Total Pages Processed (Seg) : 1
Total Pages Failing (Seg) : 0
Total Pages Empty : 15910
Total Pages Marked Corrupt : 16
Total Pages Influx : 1
Total Pages Encrypted : 0
Highest block SCN : 4064615 (0.4064615)post results from 3 SQL above -
(oracle) block corruption
Hi Everybody,
Recently, my site has a development database that encountered block corruption in the system tablespace. I have verified this by using Oracle utility DBVERIFY on the system datafile.
We have no backup at all for this development database. So database recovery from backup is impossible for us.
I understand that there's a package called DBMS_REPAIR that can be used to repair corrupted blocks. I tried using this, but the process failed because it could not access the system tablespace (which is corrupted) to create a table used by the package.
Does anyone know if I could overcome this problem and repair the corrupted blocks on the system tablespace?
Also, I would like to understand what are the possible causes of block corruption. My site's Oracle Server and databases are installed on Windows 2000 platform.
Please help answer my queries if you can. Thank you!
nullIam sorry that I have not seen this posting until today .
When there is a block corruption export will fail with error.
The best method is to replace this file with a backup file and roll forward.
null -
Block Corruption in empty pages in Oracle 11g
I am using Oracle 11.1.0.7.1 on HP UNIX 11i.
On several occasions, I have been seen that block corruptions are reported by rman. I have never seen this problem in previous release of databases; but I have seen it more than once in Oracle 11g.
However, when I run dbv command; I do not see any corruption in data and index blocks; so my conclusion is block corruption is in empty pages.
Anyone has ideas why block corruption occurs in Oracle 11g. Has Oracle’s algorithm for checking block corruption have changed in 11g; I.e.; these corruptions existed in older Oracle releases but not reported by rman,
Another strange thing I noticed:
1. When doing export backup, export backup reports about corrupted blocks.
2. When I do expdp no errors are reported.
So question is why is exp command checking empty blocks?
Any insights in above will be appreciated.Can some one explain following ooutput from dbv; what is difference in
total pages failing and corrupt pages. I see
total pages marked corrupt as 1345; yet I do not see any data or index
pages marked corrupt; and there is only 1 empty page. So where are
those 1345 corrupt pages.
DBVERIFY - Verification complete
Total Pages Examined : 371200
Total Pages Processed (Data) : 328622
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 38
Total Pages Failing (Index): 0
Total Pages Processed (Other): 41194
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 1
Total Pages Marked Corrupt : 1345
Total Pages Influx : 0
Total Pages Encrypted : 0
Highest block SCN : 3430163491 (2476.3430163491)
DBVERIFY: Release 11.1.0.7.0 - Production on Sat Aug 14 00:25:24 2010 -
ORA-01578: ORACLE data block corrupted on tables in sysaux tablespace
Dear Experts,
From the alert log file we noticed data block corruptions on one of our datafiles. After further investigation, we realized that the corruptions were on 3 of the AWR related tables in the SYSAUX tablespace:
1. WRH$_LIBRARYCACHE
2. WRH$_TEMPSTATXS
3. WRI$_ALERT_OUTSTANDING
The bad news is that we may not have a valid rman backup to do the recovery due to the retention policy - RECOVERY WINDOW OF 2 DAYS. Since this is a development database with limited monitoring, we did not discover the corruption until 6 days later. The issue happened about 6 days ago (about Christmas time).
So, what are our recovery options? Can someone advice? We are thinking about drop and recreate the 3 affected v$WR* tables, but not quite sure about the impact to the system if we drop and recreate the 3 objects. Did someone experience this type of recovery. If you did, what are your approaches?
We are running oracle 10.2.0.3 version.
I greatly appreciate your input and suggestion. Thanks!!!as long as you have a backup of ur database before christmas, you can use the " MAXDAYS " cmd to get ur backup working so long as you have not used delete obsolote....had a same sistuation....where i had a backup and trying to restore it ...kept saying no valid backup...after going thru some stuff...found the MAXDAYS cmd to use my backup...here is an example ...
$ rman target /
Recovery Manager: Release 10.2.0.2.0 - Production on Sun Apr 6 09:05:44 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database (not started)
RMAN> SET DBID=1528894801
executing command: SET DBID
RMAN> startup force nomount;
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/db_1/dbs/initsameera.ora'
starting Oracle instance without parameter file for retrival of spfile
Oracle instance started
Total System Global Area 159383552 bytes
Fixed Size 1259672 bytes
Variable Size 58722152 bytes
Database Buffers 92274688 bytes
Redo Buffers 7127040 bytes
RMAN> set controlfile autobackup format for device type disk to '/u99/backup/sameera/control_spfile_%F';
executing command: SET CONTROLFILE AUTOBACKUP FORMAT
using target database control file instead of recovery catalog
RMAN> run
2> {
3> allocate channel p1 type disk;
4> restore spfile to pfile '/u01/app/oracle/product/10.2.0/db_1/dbs/initsameera.ora' from autobackup;
5> shutdown abort;
6> }
allocated channel: p1
channel p1: sid=36 devtype=DISK
Starting restore at 06-APR-08
channel p1: looking for autobackup on day: 20080406
channel p1: looking for autobackup on day: 20080405
channel p1: looking for autobackup on day: 20080404
channel p1: looking for autobackup on day: 20080403
channel p1: looking for autobackup on day: 20080402
channel p1: looking for autobackup on day: 20080401
channel p1: looking for autobackup on day: 20080331
channel p1: no autobackup in 7 days found
released channel: p1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/06/2008 09:09:09
RMAN-06172: no autobackup found or specified handle is not a valid copy or piece
Solution:
RMAN> shutdown abort;
RMAN> EXIT;
$ ps -ef |grep pmon
oracle 2891 2856 0 09:05 pts/1 00:00:00 grep pmon
oracle 7448 1 0 Apr05 ? 00:00:00 ora_pmon_primary
$export ORACLE_SID=sameera
$ rman target /
Recovery Manager: Release 10.2.0.2.0 - Production on Sun Apr 6 09:05:44 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database (not started)
RMAN> SET DBID=1528894801
executing command: SET DBID
RMAN> startup force nomount;
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/10.2.0/db_1/db s/initsameera.ora'
starting Oracle instance without parameter file for retrival of spfile
Oracle instance started
Total System Global Area 159383552 bytes
Fixed Size 1259672 bytes
Variable Size 58722152 bytes
Database Buffers 92274688 bytes
Redo Buffers 7127040 bytes
RMAN> set controlfile autobackup format for device type disk to '/u99/backup/sameera/control_spfile_%F';
executing command: SET CONTROLFILE AUTOBACKUP FORMAT
using target database control file instead of recovery catalog
RMAN> run
2> {
3> allocate channel p1 type disk;
4> restore spfile to pfile '/u01/app/oracle/product/10.2.0/db_1/dbs/initsameera.ora' from autobackup maxdays 15;
5> shutdown abort;
6> }
released channel: ORA_DISK_1
allocated channel: p1
channel p1: sid=36 devtype=DISK
Starting restore at 06-APR-08
channel p1: looking for autobackup on day: 20080406
channel p1: looking for autobackup on day: 20080405
channel p1: looking for autobackup on day: 20080404
channel p1: looking for autobackup on day: 20080403
channel p1: looking for autobackup on day: 20080402
channel p1: looking for autobackup on day: 20080401
channel p1: looking for autobackup on day: 20080331
channel p1: looking for autobackup on day: 20080330
channel p1: looking for autobackup on day: 20080329
channel p1: looking for autobackup on day: 20080328
channel p1: looking for autobackup on day: 20080327
channel p1: looking for autobackup on day: 20080326
channel p1: looking for autobackup on day: 20080325
channel p1: looking for autobackup on day: 20080324
channel p1: looking for autobackup on day: 20080323
channel p1: autobackup found: /u99/backup/sameera/control_spfile_c-1528894801-20080323-00
channel p1: SPFILE restore from autobackup complete
Finished restore at 06-APR-08
Oracle instance shut down
Check to make sure if initsameera.ora exists in $ORACLE_HOME/dbs location.
$ cd $ORACLE_HOME/dbs
$ ls -ltr
total 7052
-rw-r----- 1 oracle oinstall 2560 Apr 5 13:21 spfileprimary.ora
-rw-r----- 1 oracle oinstall 7061504 Apr 5 13:23 snapcf_primary.f
-rw-rw---- 1 oracle oinstall 1544 Apr 5 18:42 hc_sameera.dat
-rw-r--r-- 1 oracle oinstall 1087 Apr 6 09:12 initsameera.ora
$ pwd
/u01/app/oracle/product/10.2.0/db_1/dbs
$ -
Impact on import if there is a block corruption error in exported dump file
Hi All
I got an exported file(exp utility) from production database and in the log it is showing the error
EXP-00056: ORACLE error 1578 encountered
ORA-01578: ORACLE data block corrupted (file # 29, block # 387036)
ORA-01110: data file 29: '+ORAFILES/prod/datafile/data.1750.715846723'
ORA-26040: Data block was loaded using the NOLOGGING option
There were two such errors. At the end of the export it is giving the message "Export terminated successfully with warnings"
I want to if I do an import using imp will there be any issues with the import.
will the import complete successfully.
The database version is 10.2.0.2.0
Regards,
Samrat
Edited by: Samrat Kumar on May 18, 2010 11:23 PMYou may try the import and hope it works out, but you and your DBA should address the ORA-26040 error message. Identify the segments that relate to both errors you encountered (using file id and block number) and figure out the what you may want to do if those are not index segments. Here is a link to a similar issue:
ORA-26040: Data block was loaded using the NOLOGGING option
Good Luck -
Question on fixing a corrupt block with dbms_repair?
I am not using RMAN.
Can I fix a corrupt block with dbms_repair.
I know the table, file, block id.
FILE_ID = 3
Block ID = 1555205
Table: ARFCSDATA1) This is what I did so far
BEGIN
DBMS_REPAIR.ADMIN_TABLES (
TABLE_NAME => 'REPAIR_TABLE',
TABLE_TYPE => dbms_repair.repair_table,
ACTION => dbms_repair.create_action,
TABLESPACE => 'PSAPD3P');
END;
SET SERVEROUTPUT ON
DECLARE num_corrupt INT;
BEGIN
num_corrupt := 0;
DBMS_REPAIR.CHECK_OBJECT (
SCHEMA_NAME => 'SAPD3P',
OBJECT_NAME => 'ARFCSDATA',
REPAIR_TABLE_NAME => 'REPAIR_TABLE',
CORRUPT_COUNT => num_corrupt);
DBMS_OUTPUT.PUT_LINE('number corrupt: ' || TO_CHAR (num_corrupt));
END;
It is still running after an hour.
2) What does FIX_CORRUPT_BLOCKS actually do? -
Oracle 10g + VMware Workstation 6.5 = data block corruption?
I'm trying to run Oracle 10g on VMWare Workstation 6.5 (host and guest are windows 2003)
I've noticed a couple times that I easily get block corruptions and wonder if there are some settings to lower the risk.
Note this is a DEV machine, not a production machine.
I don't know if Oracle supports the set up but I'm sure many people are running Oracle in Vmware so I'm looking to those who have done so successfully.
Anyone know of special precautions in either Vmware or Oracle config to limit the risk on block corruption?
According to VMWare, ESX is a perfect platorm so maybe I should move from Workstation to ESX, maybe it has to do with Windows in VM and Linux would work better.
Anyone has some info on why Oracle has block corruption on VMware Workstation (windows/windows)?
Other people with positive/negative experience on VMWare Workstation (mention OS's and Oracle version please)
(before someone tells me it's not supported, also see these pages on vmware.com:
http://blogs.vmware.com/performance/2007/11/ten-reasons-why.html
http://blogs.vmware.com/oracle/2009/03/a-perspective-support-for-vmware-with-oracle.html)
Edited by: phmeert on Feb 26, 2010 4:27 PMWell, it's indeed not for production, I use it for product demos and small development tasks, there is no critical data in my database but I wished I could run Oracle inside a VM on my laptop...
It works reasonably well (I even have run multiple VM's (Workstation) with Oracle insde on 1 laptop (4 GB Ram, Core Duo), but sooner or later it gives some problems. If there is any setting that can lower the risk would be great.
I was thinking of installing ORacle VM but apparently my laptop is not compatible with that (nor with ESX for that matter).
Anyone use plain Xen (which seems to support any processor) + Oracle on Linux ??
I can't install Oracle natively on the machine directly since I need the capabilities of a VM in respect of easy backup + I have many different applications and databases so depending on what I need to show, I just start a different VM
The VM provides the capabilities to move back to previous situation, exchaning demos with collegues, have multiple parallel copies with different configurations (depending on customer), etc...
... installing natively is too much of hassle, we used to swap hard disks but that's a pain when the hardware changes, at least with VMWare WS you can run it on pretty much any computer.
How do other people deal with this type of situation?? We have ESX on a hosted environment but internet access is not always available...
It seems stable enough to run my demos (I'm doing this for quite a while but the block corruption seems to happen sooner or later)
The problem is that I first need to get the demo installed without corruptions. Once it's installed I can just restart from that situation over and over again, but obviously I don't want to run the risk of having a disk corruption in the middle of a demo. -
Oracle 11g: Block Corruption in SYSAUX File
Hello All,
I am facing Data corruption issue in the SYSAUX file.
We are using Oracle 11G (Microsoft 32 bit) and our system is running in noarchivelog mode.
Following are the errors in the alert log.
e:\sc\sc15.2\databases\oracleconfig\diag\rdbms\enmscsdb\nm45\trace\nm45_p000_5944.trc
Corrupt block relative dba: 0x0088a9f8 (file 2, block 567800)
Fractured block found during buffer read
Data in bad block:
type: 6 format: 2 rdba: 0x0088a9f8
last change scn: 0x0000.0b3bb7c7 seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xc7000601
check value in block header: 0xee6b
computed block checksum: 0x72c6
Reread of rdba: 0x0088a9f8 (file 2, block 567800) found same corrupted data
Thu Jan 22 16:46:44 2009
SMON: Restarting fast_start parallel rollback
SMON: ignoring slave err,downgrading to serial rollback
ORACLE Instance nm45 (pid = 12) - Error 1578 encountered while recovering transaction (9, 11) on object 458.
Errors in file e:\sc\sc15.2\databases\oracleconfig\diag\rdbms\enmscsdb\nm45\trace\nm45_smon_6492.trc:
ORA-01578: ORACLE data block corrupted (file # 2, block # 567800)
ORA-01110: data file 2: 'E:\SC\SC15.2\DATABASES\ORACLECONFIG\SYSAUXNM45.ORA'
Thu Jan 22 16:46:45 2009
Trace dumping is performing id=[cdmp_20090122164645]
Corrupt Block Found
TSN = 1, TSNAME = SYSAUX
RFN = 2, BLK = 567800, RDBA = 8956408
OBJN = 458, OBJD = 458, OBJECT = I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST, SUBOBJECT =
SEGMENT OWNER = SYS, SEGMENT TYPE = Index Segment
Following query indicates the corruption is in index.
SQL> SELECT tablespace_name, segment_type, owner, segment_name FROM dba_extents
WHERE file_id = 2 and 567800 between block_id AND block_id + blocks - 1;
TABLESPACE_NAME SEGMENT_TYPE OWNER
SEGMENT_NAME
SYSAUX INDEX SYS
I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST
==============
DBverify output:
==============
E:\SC\SC15.2\Databases\OracleConfig>dbv file=SYSAUXNM45.ORA blocksize=8192
DBVERIFY: Release 11.1.0.7.0 - Production on Thu Jan 22 16:59:11 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = E:\SC\SC15.2\Databases\OracleConfig/SY
SAUXNM45.ORA
DBV-00200: Block, DBA 8956312, already marked corrupt
Page 567800 is influx - most likely media corrupt
Corrupt block relative dba: 0x0088a9f8 (file 2, block 567800)
Fractured block found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x0088a9f8
last change scn: 0x0000.0b3bb7c7 seq: 0x1 flg: 0x04
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0xc7000601
check value in block header: 0xee6b
computed block checksum: 0x72c6
DBVERIFY - Verification complete
Total Pages Examined : 1623864
Total Pages Processed (Data) : 540984
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 964944
Total Pages Failing (Index): 0
Total Pages Processed (Other): 17849
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 100086
Total Pages Marked Corrupt : 2
Total Pages Influx : 1
Total Pages Encrypted : 0
Highest block SCN : 190789648 (0.190789648)
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
2 567800 1 0 FRACTURED
2 567704 1 0 FRACTURED
How to resolve this issue.
Thanks
With Regards
Hemant Joshi.Drop and re-creating the index would be better than re-building the index.
Check the metalink note: Identify the corruption extension using RMAN/DBV/ANALYZE etc - 836658.1
Note 28814.1 - Handling Oracle Block Corruptions in Oracle7/8/8i/9i/10g
Note 472231.1 - How to identify all the Corrupted Objects in the Database reported by RMAN
ORA-1578 Main Reference Index for Solutions -830997.1 -
Need advice on ORA-01578: ORACLE data block corrupted
We have a development database server version- 10.2.0.3 with materialized views refresh as complete every morning. Yesterday we had a power failure and the server went down and database was shutdown unexpectedly.
When we restarted the database after the server restarted, we found some of the datablocks got corrupted . Following were the exceptions that we saw in the alert.log.
Errors in file /i01_01/app/oracle/product/10.2.0/db_1/admin/orcl9/bdump/orcl9_smon_7547.trc:
ORA-01578: ORACLE data block corrupted (file # 11, block # 257712)
ORA-01110: data file 11: '/i01_01/app/oracle/product/10.2.0/oradata/orcl9/ts_gen_data_02.dbf'
ORACLE Instance orcl9 (pid = 8) - Error 1578 encountered while recovering transaction (9, 38) on object 54463
I tried the following query to see the segment type.
select owner, segment_name, segment_type from dba_extents where file_id =11 and 257712 between block_id and block_id + blocks - 1;
OWNER
SEGMENT_NAME
SEGMENT_TYPE
VISH
INVENTORY_TXN
TABLE
where " INVENTORY_TXN " is a materialized view that was using the block that got corrupted. I can always recreate the MV by dropping and recreating it. Will it solve the problem???
If not, how can I recover/repair the block.???
Can anyone advice on this. Thanks very much in advance.To recover a corrupted block,the best way out is to use Blockrecover command of RMAN. So you would need RmAN backup to perform the operation.But first ypu you need to ensure that this is a persistent error or not? Is this error is coming repeatedly or just once it happened?
About Blockrecover command,read here,
http://download.oracle.com/docs/cd/B19306_01/backup.102/b14191/rcmrecov005.htm#BRADV157
HTH
Aman.... -
Is it possible to import a Fixed Text file that does not have a header?
I'm trying to import a Fixed Text file through Import Manager, but the text file I am receiving does not have a header on it (the first row is valid data). When I try importing this, Import Manager uses the first row of data as the headings. Is there any way to turn this off and tell Import Manager there is no header data in the file?
Thanks!Hi Ryan ,ur requirement can be met only when u import the file as ODBC .for this follow the below steps.
1)Go to control panel,in ur settings,select administrative tools
2) In that select DATA SOURCE(ODBC ).
3)Go to SYSTEM DSN tab select tab .
4)Select ur file type MICROSOFT TEST DRIVER (.txt,.csv)
5)Double click on "Import DSN" and in the blank give the name of DATA SOURCE NAME any name u want to give.
6)Uncheck the use current directory box and select the directory ur file is it will automatically show ur source file select it and click ok.
7) Now when u import ur file as ODBC give the name of ur DATA source name which u have given and it will show ur file in the source preview itself .
In this way u can import ur file as ODBC.
Hope this may help u.
Regards
Ankit
Maybe you are looking for
-
Efficient ways to make stopmotion animation in Flash
Hello, I'm new to Flash (using Flash CS5.5 on Mac OSX) and am trying to make a stop motion animation using photos that were created in a layered psd file and then turned into individual jpegs. There are many of them (400 and will be more) and I'm try
-
Hi I am new to TRM and have run into the following problem. I have configured the Site and the WH and am performing System guided Putaway (PTWY_SG). As required in WM for the source and destination storage type i have maintained separate confirmation
-
Storing Brushes actions and images in the cloud
I just want to know the pros and cons of this as I am looking to upload all my brushes, actions, styles and stock images so that I can access them from home and work thus keeping them in one location. Does anyone use it for this? or do people use it
-
Discoverer Admin. in multiple installation home?
It forgives, but this text is translated into the English. I wait that they understand. It would like to know if has skill to install the Discoverer Admin. in multiple installation home? I wait that they have understood. Yours truly iMaster_br Brazil
-
Workspace 940406121245604 has no privileges to parse as schema MYAPP.
When I try to run the application, I get the error message Workspace 940406121245604 has no privileges to parse as schema MYAPP. Anyone know how to grant the privileges? Thanks in advance. MKBH