Logical block corruption in an unused block which is a part of index

Hi All,
During RMAN backup level 0 I am getting a corrupted block my DB:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on t20 channel at 07/22/2009 21:30:49
ORA-19566: exceeded limit of 0 corrupt blocks for file /oracle/oradata/DB2/plind05_02.dbf
SQL> select * from v$database_block_corruption;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTIO
2950 1879477 1 1.0124E+13 LOGICAL
SQL> SELECT tablespace_name, partition_name,segment_type, owner, segment_name FROM dba_extents WHERE file_id = 2950 and 1879477 between block_id AND block_id + blocks - 1;
no rows selected
So this block does not belong to any object.
SQL > select * from dba_free_space where file_id= 2950 and 1879477 between block_id and block_id blocks -1;+
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
USAGIDX_200907 2950 1879433 1048576 128 909
But it exists in dba_free_space so it belongs to file space usage bitmap.
DB Verify shows:
myserver:/oracle/rman/DB2:DBINST1> dbv file=/oracle/oradata/DB2/plind05_02.dbf BLOCKSIZE=8192
DBVERIFY: Release 10.2.0.4.0 - Production on Wed Jul 29 13:47:38 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /oracle/oradata/DB2/plind05_02.dbf
Block Checking: DBA = -480465494, Block Type = KTB-managed data block
**** row 2: key out of order
---- end index block validation
Page 1879477 failed with check code 6401
DBVERIFY - Verification complete
Total Pages Examined : 4194176
Total Pages Processed (Data) : 0
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 3404935
Total Pages Failing (Index): 1
Total Pages Processed (Other): 569
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 788672
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 1795222745 (2360.1795222745)
Now, I have identified that this block belongs to an index subpartition so I have rebuild it with alter index ... rebuild subpartition... However, the RMAN backup still fails and DBV still reports an error.
I know that we could simply recreate the index but the problem is that its quite big (>6GB and table is >7TB).
My strong feeling is that the cause of this is that corrupted blocks will still be reported by RMAN and DBV until they are reused and reformatted.
My question is:
How can I reuse or reformat a block which does not belong to any object?

Hi,
Yes you're right, you need to reformat that block.
For that you need to allocate that block to a table, and fill that table with data until high water mark goes higher than block 1879477.
This isthe way I've done it once:
1) check the free space size below that block:
select sum(bytes)/1024/1024 before from dba_free_space where file_id=1879477 and block_id <= 1503738;
Let's say it is 6000 MB
2) create a dummy table, allocate enough extents to fill the size returned from the previous query
This does not format blocks, but the advantage of allocate extents is that you can specify size and datafile:
alter table allocate extents size 6000M datafile '/oracle/oradata/DB2/plind05_02.dbf';
you can check dba_extents to see if it covers block 1879477. If not, try to add a little more extents.
3) fill the table with data to fill those extents.
One idea is to insert one rows into the table, then use 'alter table test minimize records_per_block;' so that each block will have 2 rows maximum.
check the number of blocks (from dba_segments). Say you have 768000 blocks. Then you need to insert 768000/2 rows:
insert into ... select ... from dual connect by level < (768000/2)
4) check the high water mark has reach the end of all extents (compare dba_tables.blocks and dba_segemnts.blocks)
5) if not enough, try to add a little more rows.
Be careful that you don't go too far (especially if you have extensible datafile). Unfortunately, maxextents is ignored on LMT :(
6) now, your block should be reformatted. Just drop the dummy table.
Regards,
Franck.

Similar Messages

  • Block corruption in Free Space

    Hi,
    Environment:-
    Oralce 10.2.0
    Windows platform
    I am facing problem of Logical block corruption.
    RMAN validate block corruption (DBVerify as well) But no entry in Alert log file.
    When I check Which segment has block corruption I found that block corruption are in free blocks of tablespace (DBA_FREE_SPACE).
    To Fix it I create table and allocate corrupted block to that table. I confirm corrupted block allocation in table (using DBA_EXTENTS).
    But when I insert rows in that table to reuse corrupted block Oracle give error of ora-1578 Block corruption, and I am not able to reuse corrupted block(as many expert suggest to overcome block corruption in free space).
    I dropped table and recreate and repeat this process many times but still no success.
    So. can anybody help me on this.
    I appreciate your efforts and time you spend to read this
    Thanks

    Hello,
    Please check the link i posted.
    Example: Detecting Corruption
    The CHECK_OBJECT procedure checks the specified object, and populates the repair table with information about corruptions and repair directives. You can optionally specify a range, partition name, or subpartition name when you want to check a portion of an object.
    Validation consists of checking all blocks in the object that have not previously been marked corrupt. For each block, the transaction and data layer portions are checked for self consistency. During CHECK_OBJECT, if a block is encountered that has a corrupt buffer cache header, then that block is skipped.
    The following is an example of executing the CHECK_OBJECT procedure for the scott.dept table.
    SET SERVEROUTPUT ON
    DECLARE num_corrupt INT;
    BEGIN
    num_corrupt := 0;
    DBMS_REPAIR.CHECK_OBJECT (
    SCHEMA_NAME => 'SCOTT',
    OBJECT_NAME => 'DEPT',
    REPAIR_TABLE_NAME => 'REPAIR_TABLE',
    CORRUPT_COUNT => num_corrupt);
    DBMS_OUTPUT.PUT_LINE('number corrupt: ' || TO_CHAR (num_corrupt));
    END;
    SQL*Plus outputs the following line, indicating one corruption:
    number corrupt: 1

  • DB block corruption

    Hi All
    Is there any specific reason or what have possible to cause on the data block corruption in the oracle database.

    Block corruption is while the data is being written to the data blocks, if the write to the block fails abruptly, I mean that there is a partial write in the block, may be because of power disruption or I/O problem, leaving no time for header to be updated, or row data to be populated, oracle leaves the block corrupt.In case of block corruption you can normally use the database unless you try to read that particular block, against which it shoots up the block corruption error.Generally block corruption occurs if write fails on the block, when the transaction is being committed
    ORA-01578:
    ORACLE data block corrupted (file # string, block # string)
    Whenever we encounter above error message mean we have BLOCK CORRUPTION.
    We can find detail information about block corruption in alert.log file
    Two types of block corruption can happens
    - Physical corruption (media corrupt)
    - Logical corruption (soft corrupt)
    Physical corruption can be caused by defected memory boards, controllers or broken sectors on a hard disk;
    Logical corruption can among other reasons be caused by an attempt to recover through a NOLOGGING action.

  • Data Block Corruption in sysaux01

    dear all,
    analyze table SYSMAN.MGMT_METRICS_RAW validate structure cascade ;
    ORA-01578: ORACLE data block corrupted (file # 3, block # 31263)
    ORA-01110: data file 3: '/u01/app/oracle/oradata/denimlhr/sysaux01.dbf'
    We create 'REPAIR_TEST' Table by follwoing comand
    begin
    dbms_repair.admin_tables(
    table_name => 'REPAIR_TEST',
    table_type => dbms_repair.repair_table,
    action => dbms_repair.create_action,
    tablespace => 'SYSAUX'
    end;
    We execute the following quey
    declare corr_count binary_integer;
    begin
    corr_count := 0;
    dbms_repair.CHECK_OBJECT (
    schema_name => 'SYSMAN',
    object_name => 'MGMT_METRICS_RAW',
    partition_name => null,
    object_type => dbms_repair.table_object,
    repair_table_name => 'REPAIR_TEST',
    flags => null,
    relative_fno => null,
    block_start => null,
    block_end => null,
    corrupt_count => corr_count
    dbms_output.put_line(to_char(corr_count));
    end;
    NOW THE FOLLOWING ERROR IS Occuring .
    ORA-24123: feature IOT support is not yet implemented
    ORA-06512: at "SYS.DBMS_REPAIR", line 293
    ORA-06512: at line 6
    please Advise
    Regards/Waseem

    What's your db version?
    Which error now you want to track ?The block corruption one or the one which is in bold?
    IF the one wich is in bold is the issue than here is what Oracle says about it,
    ORA-24123:     feature string is not yet implemented
    Cause:     An attempt was made to use the specified feature, but the feature is not yet implemented.
    Action:     Do not attempt to use the feature.
    Aman....

  • 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.

  • Block corruption recovery!!

    Hi. all.
    I am testing a recovery in the event of block corruption.
    As far as I know, the solution to block corruption is as followings:
    1. BlockRecover command (RMAN)
    2. drop the table and import from backup dump file
    3. DBMS_REPAIR package
    4. complete recovery from online full backup
    My question is whether No. 4 is possible or not.
    step 1 : bring the datafile offline
    step 2 : restore the datafile from the last backup(online backup)
    step 3: recover the datafile, applying archive logs and online redo logs
    step 4 : bring the datafile online
    The above steps are enough for block corruption recovery?
    I need to make a document about block corruption issue, but
    I have no experience of recovering block corruption.
    Thanks in advance.
    Best Regards.

    If few blocks are corrupted, it is advisable to run the BMR (block media recover, staring with 9i). This option provides the availability of other data present in datafile.
    Option 4 is okay when most of the data block in a datafile got corrupted.
    To know how many blocks got corrupted in the datafile, run the following:
    SELECT * FROM V$DATABASE_BLOCK_CORRUPTION;
    SELECT * FROM V$COPY_CORRUPTION;
    SELECT * FROM V$BACKUP_CORRUPTION;
    You need to look into corrution_type and blocks columns in the v$database_block_corruption view as it gives the reason for block corruption and number of blocks are corrupted in a datafile.
    Jaffar

  • OSB Unused block compression and Undo backup compression

    Dear all.
    I know that osb backup software is faster than other vendor software especially oracle database backup area.
    There are two special method (Unused block compression and Undo backup compression)
    But, normally in case of comparable product using same RMAN API(Veritas/Legato etc...), they only backup used block and skip unused block, right?
    I'm confused, what is different from used block only backup and unused block compression.
    Please explain detail about unused block compression and Undo backup compression.
    Sorry about my poor knowledge.
    Thanks.

    This is explained in detail in the OSB technical white paper:
    http://www.oracle.com/technetwork/products/secure-backup/learnmore/osb-103-twp-166804.pdf
    Let me know if you have any questions
    Donna

  • Diff between logical and physical block corruption

    What is the difference between Physical and Logical block corruption.
    Dbverify utility, analyze command is used to check the logical block corruption not the physical one am i correct??
    When i get
    ORA-01578: ORACLE data block corrupted (file # 9, block # 13)
    ORA-01110: data file 9: '/oracle/dbs/tbs_91.f'
    ORA-01578: ORACLE data block corrupted (file # 2, block # 19)
    ORA-01110: data file 2: '/oracle/dbs/tbs_21.f'
    How to conform that this a logical or physical block corruption???
    please through some light regarding this....
    kumaresh

    the following link may help u
    http://download-east.oracle.com/docs/cd/B19306_01/backup.102/b14191/rcmconc1012.htm

  • Logical block corruption

    Hi all,
    i have database 11.2.0.1.0 on linux 5. on this database we found so many block corruption with are related to indexes.
    some of the indexes rebuiled, and rebuilded indexes are working fine. But we have so many indexes corrupted.
    SQL> select count(*) from v$database_block_corruption;
    COUNT(*)
    2347
    SQL>
    i verified by from RMAN logical check also.
    if i keep on rebuilding these indexes it will take long time and maily may impact on performance.
    Could you please suggest what is the best possible ways to get out from this.
    thanks a lot.

    899329 wrote:
    Hi all,
    i have database 11.2.0.1.0 on linux 5. on this database we found so many block corruption with are related to indexes.
    some of the indexes rebuiled, and rebuilded indexes are working fine. But we have so many indexes corrupted.
    SQL> select count(*) from v$database_block_corruption;
    COUNT(*)
    2347
    SQL>
    i verified by from RMAN logical check also.
    if i keep on rebuilding these indexes it will take long time and maily may impact on performance.
    Could you please suggest what is the best possible ways to get out from this.
    thanks a lot.Replace the sick disk.

  • Logical Block corruption - not enough RMAN backups

    I have to deal with logical block corruption but these guys do not have enough rman backups to go back enough to recover blocks.
    All bad blocks are in SYSAUX and it seems because of it EM doesn't work as it's suppose to do. I dropped and recreated EM repository hoping it will clean itself but .... no.
    Any ideas?
    Oracle Linux 4.7 i386
    Oracle 10.2.0.4

    OCCUPANT_NAME OCCUPANT_DESC SCHEMA_NAME MOVE_PROCEDURE MOVE_PROCEDURE_DESC SPACE_USAGE_KBYTES
    EM Enterprise Manager Repository SYSMAN emd_maintenance.move_em_tblspc Move Procedure for Enterprise Manager Repository 52800
    EM_MONITORING_USER Enterprise Manager Monitoring User DBSNMP *** MOVE PROCEDURE NOT APPLICABLE *** 1600

  • Data block corrupted on standby database (logical corruption)

    Hi all,
    we are getting the below error on our DRSITE,it is MANUAL PHYSCIAL STANDBY DATABSE...
    The following error has occurred:
    ORA-01578: ORACLE data block corrupted (file # 3, block # 3236947)
    ORA-01110: data file 3: '/bkp/oradata/orcl_raw_cadata01'
    ORA-26040: Data block was loaded using the NOLOGGING option
    I have checked in the Primary database, that there are some object which are not being logged into the redo logfiles.....
    SQL> select table_name,INDEX_NAME,logging from dba_indexes where logging='NO'
    TABLE_NAME INDEX_NAME LOG
    MENU_MENUS NUX_MENU_MENUS_01 NO
    MENU_USER_MENUS MENU_USER_MENUS_X NO
    OM_CITY IDM_OM_CITY_CITY_NAME NO
    OM_EMPLOYER                    EMPLR_CODE_PK                  NO
    OM_EMPLOYER                    IDM_EMPLR_EMPLR_NAME           NOOM_STUDENT_HEAD OM_STUDENT_HEAD_HEAD_UK01 NO
    OT_DAK_ENTRY_DETL DED_SYS_ID_PK NO
    OT_DAK_ENTRY_HEAD DEH_SYS_ID_PK NO
    OT_DAK_ENTRY_HEAD IDM_DEH_DT_APPL_REGION NO
    OT_DAK_ENTRY_HEAD IDM_DEH_REGION_CODE NO
    OT_DAK_REFUNDS_DETL DRD_SYS_ID_PK NO
    TABLE_NAME INDEX_NAME LOG
    OT_MEM_FEE_COL_DETL IDM_MFCD_MFCH_SYS_ID NO
    OM_STUDENT_HEAD IDM_STUD_COURSE NO
    13 rows selected.
    so the main problem is in the OM_EMPOYER tables if i would delete the indexes from that table recreate it again with the logging clause,and then apply the archvied logs to the DRSITE.WILL THE problem will resolve.
    Pls suggest me...

    Hi..
    Firstly how did you confirm that it was that index only.Can you post the output of
    SELECT tablespace_name, segment_type, owner, segment_name
    FROM dba_extents WHERE file_id = 3 and 3236947 between block_id
    AND block_id + blocks - 1;
    This query can take time, if are sure that its the index don't fire this command .
    Secondly, when you will drop and recreate the index, it will be logged into the redo logfile.This information will be be logged in to an the archivelog file as its the replica of the redo logfile. Then when you apply this archive log maually, it will drop that index and then recreate it using the same sql.
    HTH
    Anand

  • RMAN logical backup containing unused blocks

    Dear Experts
    When i taking logical backup of datafile from RMAN utility i notify that it will also backed up all unused blocks from datafile, so what i need to do, how to avoid that unused block from being backed up while taking logical backup of datafiles.
    System details as follows
    HP Itanium server
    OS - Redhet Linux 5
    DB - Oracle10g
    Suggest me urgent.

    Here i am gonna show you the backup statistics for only those problematic datafiles
    DFNAME                                    DATAFILE_BLCKS     BLOCKS          DIFF
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744     9818          1685926
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          8527          1707697
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          9727          1612289
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          9808          1612208
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          24823          1670921
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          19891          1696333
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          20591          1601425
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          17026          1604990
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          21239          1674505
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          17843          1698381
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          19820          1602196
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          14429          1607587
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          33885          1661859
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          41480          1674744
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          32338          1589678
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          26288          1595728
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          10504          1685240
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          18169          1698055
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          16195          1605821
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          11974          1610042
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          16938          1678806
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          25688          1690536
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          30653          1591363
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          20611          1601405
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          965385          730359
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          1010354          705870
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          1004034          617982
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          1695397          347
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          1713435          2789
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          1621255          761
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          1620287          1729
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          1695397          347
    /san_index/oradata/orcl/rajemitra_index5.dbf     1171456          1170831          625
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          1695397          347
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          1713470          2754
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          1621261          755
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          1620364          1652
    /san_index/oradata/orcl/rajemitra_index5.dbf     1171456          48547          1122909
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          47875          1647869
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          19725          1696499
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          26205          1595811
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          56040          1565976
    /san_index/oradata/orcl/rajemitra_index5.dbf     1171456          31859          1139597
    /san_index/oradata/orcl/rajemitra_index1.dbf     1695744          29509          1666235
    /san_index/oradata/orcl/rajemitra_index2.dbf     1716224          20767          1695457
    /san_index/oradata/orcl/rajemitra_index3.dbf     1622016          13210          1608806
    /san_index/oradata/orcl/rajemitra_index4.dbf     1622016          31411          1590605

  • Checking block corruption, why in alert it is saying Error in trace file

    Hi,
    I am using Oracle 10g 10.2.0.1 with linux 32 bit
    I wanted to check block corruption using RMAN by following statement
    backup validate check logical database;
    when i executed the statement, following was the output
    Starting backup at 09-MAY-08
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: sid=91 devtype=DISK
    channel ORA_DISK_1: starting full datafile backupset
    channel ORA_DISK_1: specifying datafile(s) in backupset
    input datafile fno=00004 name=/u01/app/oracle/oradata/test/users01.dbf
    input datafile fno=00008 name=/u01/app/oracle/oradata/test/workflowuser
    input datafile fno=00001 name=/u01/app/oracle/oradata/test/system01.dbf
    input datafile fno=00003 name=/u01/app/oracle/oradata/test/sysaux01.dbf
    input datafile fno=00010 name=/u01/app/oracle/oradata/test/ifan
    input datafile fno=00002 name=/u01/app/oracle/oradata/test/undotbs01.dbf
    input datafile fno=00007 name=/u01/app/oracle/oradata/test/taker
    input datafile fno=00009 name=/u01/app/oracle/oradata/test/testing1
    input datafile fno=00005 name=/u01/app/oracle/oradata/test/brokerdb
    input datafile fno=00006 name=/u01/app/oracle/oradata/test/moneio
    input datafile fno=00011 name=/u01/app/oracle/oradata/test/web1
    input datafile fno=00012 name=/u01/app/oracle/oradata/test/e1
    input datafile fno=00013 name=/u01/app/oracle/oradata/test/ind1
    channel ORA_DISK_1: backup set complete, elapsed time: 00:06:57
    channel ORA_DISK_1: starting full datafile backupset
    channel ORA_DISK_1: specifying datafile(s) in backupset
    including current control file in backupset
    including current SPFILE in backupset
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
    Finished backup at 09-MAY-08
    and when i do the following query
    select * from v$database_block_corruption in sqlplus
    then there was no row
    so it means there is no logical corruption, but when i am looking at alert log file it is giving following lines
    Fri May 9 10:14:04 2008
    Errors in file /u01/app/oracle/admin/test/udump/test_ora_6606.trc:
    Fri May 9 10:14:04 2008
    Errors in file /u01/app/oracle/admin/test/udump/test_ora_6606.trc:
    Fri May 9 10:14:04 2008
    Errors in file /u01/app/oracle/admin/test/udump/test_ora_6606.trc
    and in above trace file following contents
    /u01/app/oracle/admin/test4/udump/test_ora_6606.trc
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1
    System name: Linux
    Node name: test
    Release: 2.6.18-5-686
    Version: #1 SMP Wed Oct 3 00:12:50 UTC 2007
    Machine: i686
    Instance name: test
    Redo thread mounted by this instance: 1
    Oracle process number: 61
    Unix process pid: 6606, image: oracle@test (TNS V1-V3)
    *** 2008-05-09 10:14:04.093
    *** ACTION NAME:(0000040 STARTED19) 2008-05-09 10:14:04.071
    *** MODULE NAME:(backup full datafile) 2008-05-09 10:14:04.071
    *** SERVICE NAME:(SYS$USERS) 2008-05-09 10:14:04.071
    *** SESSION ID:(91.40318) 2008-05-09 10:14:04.071
    Is it normal, why the in alert file it is saying that Error in.
    And it did not create any backupset in folder of flash recovery but in Enterprise manager it is showing last backup on 09-may-2008, why ?
    Regards,

    See logical corruption is normally termed as the internal inconsistancy within the block which is not caused by Oracle but by the user.So if you find internal inconsistancy than the best option is to look at the user and ask him to get the values sorted out.If the internal inconsistancy is some thig like index fragmentation sort of things or index entry pointing to a null rowid than they are termed as the logical corruption and they should not impact your normal as he data is already there and there is no issue in reading the block as such.
    The term "corrupted blocks" I would call both in the tables and backup for those data blocks which are unreadable by Oracle which actualy is Physical corruption.
    If i am doing the checking at 2:00 am, does it take more than two hours.I didnt understand this.
    what can we do for Physical corruptionThis will need the block to be recovered with the Block Recover command of RMAN and a good backup.Read about it here,
    http://download.oracle.com/docs/cd/B19306_01/backup.102/b14194/rcmsynta010.htm
    About the Logical and Physical corruption checks , check here
    http://download-west.oracle.com/docs/cd/B19306_01/backup.102/b14191/rcmconc1012.htm
    Aman....

  • How to respond to physical block corruption??

    Hi, all.
    As far as I know, there are two types of block corruption.
    1. logical block corruption
    2. physical block corruption
    In case of logical block corruption, there are a few method of how to take care of it.
    such as BMR with rman, media recovery, and dbms package.
    In case of physical block corruption, how can I respond to this type of errors?
    Does physical block corruption of a disk mean disk failure??
    If so, I have to replace the disk? Or, is there any other way to solve
    this type of errors?
    In addition, how can I know that the block corruption is caused by logical problems
    or physical problems??
    Thanks and Regards.

    > In case of physical block corruption, how can I respond to this type of
    errors?
    Round around in circles, screaming at the top of your voice "we're all going to die!".
    Hey, why that funny looks? It works. And it scares the stuffings out of management and colleagues... ;-)
    > Does physical block corruption of a disk mean disk failure??
    If by physical corruption you mean that reading a data block results in I/O errors and a corrupt/incomplete read buffer, then yes. The "disk" is failing - or more correctly, the I/O h/w is failing. It may not be the disk itself. It could be a problem with the HBA, a controller card, etc.
    In exceptional cases it may not even be a h/w issue. It could be a s/w induced error. I once got physical I/O errors reported by Oracle. The problem was traced to an incompatibility between the ASMlib kernel module and EMC Powerpath. The SAN disks & h/w were fine.
    > If so, I have to replace the disk? Or, is there any other way to solve
    this type of errors?
    There should be some kind of diagnostics you can run on the disks to determine if they are failing. Simply replacing a disk because there seems to be a physical corruption problem may not solve the problem itself.
    You need to identify the actual problem. Which means looking at all Oracle traces/dumps in this regard, looking at the kernel logs, manually dumping blocks to see the results, using whatever I/O & disk diagnostic tools available, etc.
    > In addition, how can I know that the block corruption is caused by logical
    problems or physical problems??
    That depends on what you define as logical and physical corruption. The latter means to me that I cannot get the data off the disk without some kind of I/O error. Logical means that the data can be read just fine, but is garbage. Which could simply mean GIGO without implying any kind of underlaying h/w failure.

  • Frequent  block Corruption....

    Hi,
    Oracle documents mentioned , block corruption rarely happens but i have to frequently face this problem ,mostly logical corruption. And when this happens i have to recover that datafile from the backup which is very much time consuming and loss to business.
    What should i do to prevent these corruption....both logical and physical???
    Can anyone share their experience to solve the problem taking proper precaution??
    Thanks and Regards,

    844860 wrote:
    I am not sure...how to find the answer???Perhaps there was no block corruption? After all, you have the best h/w on the market and how could it cause corrupted data blocks when an Oracle I/O call give it a data block to write to disk?
    Or perhaps you are lying to yourself about this "best in the market" b/s?
    Block corruption means that the data block Oracle writes from memory to disk, does not arrive on the disk intact - or that the block is afterwards read from disk 'incorrectly' and arrives in memory as a corrupted block.
    If this happens frequently, there are two basic core issues:
    - this is h/w related (old failing disks, errors in storage system, etc)
    - this is s/w related (the I/O fabric layer and driver used for I/O is faulty/buggy)
    The h/w related one is usually easy to diagnose as h/w tests and probes can be done (e.g. running smartctl for SMART analysis of disks).
    The s/w related one is IMO a bit more difficult to diagnose. I have seen this with using ASMLib with certain 3rd party driver software, with older OFED driver version for SRP (Scsi Remote direct memory access Protocol), and so on.
    Bottom line is that block corruption generates errors and you need to look from the top of the s/w stack down to bottom of the h/w stack to see where these errors are being recorded and what the errors are saying is wrong.

Maybe you are looking for

  • Tunes disappear from folder - but still play in iTunes???

    I can play songs in iTunes that have disappeared from the iTunes music folder. Maybe I'm fundamentally misunderstanding something, but this has me baffled. Here's what's happened: I was looking at my iTunes music folder in Finder. I double-clicked on

  • How can I upgrade from Infinity to 56K dial-up?

    I have had Infinity for about a month. At first everything was great, 38Mbps. I am about 25m from the cabinet where the optical fibre is terminated so I expected this to be quite consistent. Seven days ago the speed dropped to about 5Mbps and over th

  • Image Loaded From Database not Visible in JLabel

    import java.sql.*; import javax.swing.*; import java.awt.*; public class consqlimage      public consqlimage()           try                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");                Connection con = DriverManager.getConnection("jd

  • Adding Text to a Slideshow of images....

    Hi, I am still on iDVD 4.0.1 so could somebody please answer a couple of, hopefully, easy questions to help make my mind up about whether I should opt to buy the new iLife package (currently on version 06). I have created a slideshow and want to add

  • Copy and paste from premiere

    hey guys, copy and paste into after effects worked like a charm with CS5.5, but now when i copy and paste to CS6 is gives me a After Effects Error 17::18: zero denominator converting ratio denominators the're m4v files, but that's never been a proble