USR02 table is corrupted

We use version 4.7X100 of SAP. The problem I have got is the USR02 table is corrupt and do not know what to do. For example, when I add new parameter in a user's master record, the rest of already existing parameters vanishes after saving the master record.

I assume that you are using SU01 / SU3 to modify the user master record (by adding some user parameters).
Or are you using BAP_USER_CHANGE?
Question: will <u>all</u> existing user parameters be removed? Or only some? Can you add them again or will they be refused (with some warning)?
Regards, Wolfgang
PS: You are referring to "user parameters".
    Those are not stored in table USR02 but in table USR05.

Similar Messages

  • How to check a XMLTYPE table for corrupted (not invalid!) XML records ??

    Hello,
    I'd like to get help on the following issue, please. I need to check the XML data in a number of tables with XMLTYPE data type. Some of the data is corrupted but in terms not that the XML format is wrong but there is no XML at all in the fields but just only, for example, control characters (no tags, no anything, just corrupted data).
    So, I have made a PL/SQL procedure cursor to get all the tables from a list, and then another cursor inside to browse each table for corrupted records. But can you help me how to check this? Any of the XML functions like for example: XMLIsValid, isFragment(), getrootelement(), etc. return to me an Oracle error "ORA-31011 XML parsing failed" and the procedure gets stuck on the first found bad record. But I need to continue and check all of them. Is it possible to get the ORA-31011 error with EXCEPTION, write to a logging table the corrupted record ID, and then continue?
    Here is my simple procedure:
    CREATE OR REPLACE PROCEDURE CHECKXML (v_schema in VARCHAR2)
    IS
         v_Message     VARCHAR2(254);
         sql_stmt1     VARCHAR2(1000);
         sql_stmt2     VARCHAR2(1000);
         c1           SYS_REFCURSOR;
         c2           SYS_REFCURSOR;
         cur_tab          varchar2(100);
         cur_appl     varchar2(100);
         cur_rec     varchar2(200);
         valid_flag     number;
         criteria     VARCHAR2(20);
         tab1          VARCHAR2(20);
         tab2          VARCHAR2(20);
    BEGIN
         criteria := 'XMLTYPE';
         sql_stmt1 := 'select id, path from ' || v_schema || '.stubfiles where type=:bcriteria';
         open c1 for sql_stmt1 using criteria;
         loop
         begin
              fetch c1 into cur_tab, cur_appl;
              exit when c1%notfound;
                   insert into system.log_table values (sysdate, v_schema, 'next table', 'id ' || cur_tab, 'appl ' || cur_appl, '');
              sql_stmt2 := 'select t.recid, t.xmlrecord.isFragment() from ' || v_schema || '.' || cur_tab || ' t';
              open c2 for sql_stmt2;
              loop
              begin
              fetch c2 into cur_rec, valid_flag;
                   exit when c2%notfound;
                   insert into system.log_table values (sysdate, v_Schema, 'next record', 'id ' || cur_tab, 'recid ' || cur_rec, 'valid ' || valid_flag);
                   commit;
              EXCEPTION
                   WHEN OTHERS THEN v_Message := sqlerrm;
                   dbms_output.put_line('Error for ' || cur_tab);
                   dbms_output.put_line('-' || v_Message);
                   insert into system.log_table values (sysdate, cur_tab, 'id err' || c_Row.ID,'appl err' || c_Row.path, v_Message,'');
              end;
              end loop;
              close c2;
              commit;
         end;
         end loop;
         close c1;
         commit;
    END CHECKXML;
    Thanks in advance
    Evgeni

    Hi
    Why do you use a GTT? Just keep your xml in memory...
    HTH
    Chris

  • Does a truncate table solve corrupt blocks in a table

    Hi Guys,
    Got a question:
    Does a truncate table solve corrupt blocks in a table?
    I have found corrupt blocks in rman, located them, they are in 1 table.
    And contacted the business, and have permission to drop and recreate the table,
    but my question is does truncate table drop storage also solves my problem?
    And will it let me to do a full backup without set max corrupt blocks?
    To my knowledge does a truncate table moves the high watermark to 0 + 1 extend, but I am unsure how this will effect the corrupt blocks.
    Thanks in advance for your advice

    Hi,
    Yes truncate/drop table fixes the corruption at the database level. You may like to take the backup(if you have index on it) of that table so that you may restore it later if anything goes wrong.
    Note: This would not fix any corruption at the disk level (like bad sectors).
    Regards
    Anurag

  • Long document with table keeps corrupting

    I have a file that is around 300 pages containg a continous table - text only, roughly 13,000 rows that keeps corrupting.
    The first file corrupted, so we rebuilt it and when the second one was just about complete, InDesign crashed and now the file will not open... it opens a blank screen but gets a never ending spinny beach ball.
    The file also contains nested master pages (total of 2 masters) moved from a book that this file will eventually become a part of.
    My question, is the table simply too large for Indesign to handle - (this I find unlikely since I've done similar work many times before) or are the master pages causing an issue or should this file be part of the book before starting it rather than adding it after its finished?
    Any thoughts would be appreciated, before we rebuild for the 3rd time. I just want to be cautious to not do anything that might corrupt the book...
    Thanks

    Are you patched all the way to 7.0.4?
    13000 rows of pasted text. Wow.
    Not that it helps at this point, but I'd start doing save as more often, and to a new name so you have some backup versions if it goes south again. An export to .idml (see Remove minor corruption by exporting) if you can get anythign to open certainly won't hurt, either.

  • Fill Internal Header Table for Table VBUK corrupted

    Hi all
    I had Cluster on each table ( VBUK, VBFCL... )
    SP13 all need notes are implemented,
    Parameter P_ROLL = 'X'
                     P_CUST = 'Y'
    but system dumpt all 6 hours Remote error
    one question does für VBUK fill also gave a Paramter p_full ?
    thanks for feedback or other inputs
    L

    TDMS experts:
    I remember that I indeed created an index for VBFA per that famous OSS note.
    However because I have changed to a different project so that I cannot verify.
    Additionally, this link also almost explicitly says that index on VBFA is feasible:
    Re: Performance issue during TD05X_FILL_VBUK_2 and TIME OUT
    So why in the previous posting Lou says:
    1256679 -> VBFA is a cluster table, i can't create a Index ...
    I appreciate if you experts can share your experience on this.
    Regards!

  • How to delete the password in usr02 tables in mssql2005 server

    hiiii..
    i am using ecc6.0 and database mssql 2005 database .. all my users got locked can you please help me out that how can i delete sap* password from database...

    Hi,
    Pls check the link.
    http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb3aef358411d1829f0000e829fbfe/content.htm
    Anil

  • How to stop updating TRDAT ,PWDLGNDATE in USR02 table while log on through dialog user

    Hi Every One,
                         when ever user logon to sap system TRDAT,PWDLGNDATE updates the current date on which user logon but i don't want to update it for some of my dialog users how to stop this is there any parameter is there to set please help me

    Hi,
    This is SAP Business one system administration forum. Please find correct forum and repost above discussion to get quick assistance.
    Please close this thread here with helpful answer.
    Thanks & Regards,
    Nagarajan

  • Format of Tables corrupted in Pages 5.0

    Is there anyone that know how to fix the problem with Tables, Pictures Ect that get's corrupted if you open a Pages 4.0 document now in Pages 5.0.
    All pictures etc. that was inserted into a table, is corrupted, missed etc.
    I see that many Mac users are complaining about this problem with the Pages 5.0 update.
    Continue using the older version is not really an option . . . .
    Please help . . I have over 1000 Pages documents with Training Material that is corrupted and all my clients ( all over the world . .) cannot access their Training Material.

    If you not a heavy user of iCloud features use the old Pages 09. You still have it in your Application folder > iWork. The new Pages isn't supporting images in tables at all.

  • Need help to solve Table Corruption

    Hi All,
    I am getting 'ORA-00600: internal error code, arguments: [kdldba_sort_1], [428033439], [], [], [], [], [], [], [], [], [], []' when doing delete/update on a table 'TEST'.  As per the MOS note : 1494409.1 , 'Export the table, drop it and reimport.'  will solve the issue.
    In My case , table TEST has a primary key and foreign key relation with 2 other tables.
    If I drop the table TEST after export , I will lose the data in the foreign key referred tables which we can not risk .
    Could you please throw some light on below points
    1) How to double confirm that the table is corrupted , bcoz analyze table is successful.
    SQL> analyze table TEST validate structure;
    Table analyzed.
    2) Can you suggest me any other process to solve the issue.
    Thanks,
    Ram

    Sorry to miss the information
    1) sb92075 :  It is 11203 standard edition database
    SQL> select * from v$version;
    BANNER
    Oracle Database 11g Release 11.2.0.3.0 - 64bit 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
    2) rp0428 : true in case of simple tables , but in my case
    TEST primary key has foreign key relation with TEST2,TEST3 . and TEST2, TEST3 has foreign key relation with many other tables. It is like TREE branch structure

  • ADF Desktop Integration : How to delete the table in Excel?

    Hi,
    I am using Jdev 11.1.1.3.0 and Excel 2007 for Oracle ADF DI, I had created an ADF table using pageDef file in the excel. Now I wanted to delete that table and use a different pageDef file.
    I could not find a way to delete that table.
    I deleted full row of tables and then I used different pageDef file and created a new adf table. But when I am running this version of excel, I am getting runtime exception and excel is getting corrupted.
    My question how to delete the table not corrupting the Excel.
    Thanks
    Pavan

    Pavan,,
    Welcome to OTN.
    You can delete the table by selecting the top left column (of the table) and then select delete from the ADFdi tab.
    Refer the documentation for more info.
    http://docs.oracle.com/cd/E17904_01/web.1111/e10139/get_start_dev_tools.htm#ADFDI608
    -Arun

  • Time Machine backup and main drive corrupted. Help! (REWARD OFFERED)

    Here's the deal:
    I have a Macbook Pro and a Mac Mini both runnign Snow Leopard. I use the Mac Mini as a kind of media center / server, it has a few external drives connected to it. On of these drives (1GB) is dedicated to Time Machine, the Mac Mini (80 GB hard drive) backs up to it directly and the Macbook Pro (500 GB hard drive) does it over the network (Time Machine created a sparsebundle). This has worked well for years now. Occasionally I got the error that Time Machine needed to start a new backup because the old one was corrupt. That happened about 2-3 times a year (did the same thing when I backued up via USB). Now about 2 weeks ago, that error came up and I just let the Macbook Pro on overnight and connected the ethernet cable for faster transfer.
    When I woke up, the Macbook Pro didn't respont at all, spinning beachball, no response at all beside mouse movement. I let it do it's thing for another 10 hours (while I was at work) and just held down the power button to power off and restart it. But all I got was the gray-on-gray flashing folder with the question mark in it, that's what you get when the Mac can't find bootable partitions. So I popped in the OSX Snow Leopard install disk, ran disk utility. It saw the hard drive, but no partition (i.e. Machintosh HD) on it. I checked the Time Machine backup and the sparsebundle was 300 GB (the Macbook Pro had 400 GB used, the remaining 100 GB were free). There is no way to restore from an unfinished Time Machine backup...
    First thing I did was clone the internal (Macbook Pro) hard drive to a DMG disk image using DiskDrill (the only program I found that could recognize the drive at all, not even DiskWarrior could). I also bought the exact same hard drive model and partitioned it like the cloned the corrupted hard drive to the new one using ddrescue (a command line tool that doesn't quit upon i/o errors but proceeds and tries to recover as much as it can). It copied everything except 65 kilobytes, the corrupted drive seemed to be physically damaged in a bunch of sectors relatively at the beginning of the disk. Since I had now an exact copy on a fresh, healthy drive, I went crazy trying out Disk Warrior (didn't recognize the drive at all), data rescue, testdisc, p a Windows isk, etc. Only R-Studio (on windows) showed the EFI and Macintosh HD partitions on there, they started and ended on the same sectors on the corrupted drive and its clone. After some research, I figured that the partition table was corrupt so I reformated the clone disk using the OSX Snow Leopard install disk (1 HFS Journaled Partition with GUID Partition table). R-Studio showed the EFI and Macintosh HD on that reformated drive, again, same sectors as before. So I figured I could just copy just the bytes where the Macintosh HD starts from the corrupted drive to the clone (using ddrescue). That worked, after almost 24 hours, I had the clone drive with a "disk1" partition on it that even disk utility could see.
    Now I was able to run Disk Warrior on it, but all it could do was recover a few Application folders (Resource-Folders and lproj-stuff), about 100 MB in total. It couldn't repair more of catalog file apparently. Luckily, Time Machine backed up quite a bit (300 GB out of 400 GB of data) and I was able to manually copy all the Dokuments, Desktop, user Library, Applications, Music, Download and Movies. Unfortunatley, only a little bit of the Pictures folder was copied. iPhoto library (80 to 100 GB) was nowhere to be found, backup must have failed right then. I can salvage the drives (time machine drive, original hard drive with a few broken sectors, DMG-image of that drive, 1-1 copy of that drive with partition table repaired) but that only gives me files with numeric names and today's date on teh JPEGs (instead of the date the picture was taken).
    Is there any way I can recover that iPhoto library? It appears the catalog file got corrupted because the hard drive (only 8 months old...) failed on a few sectors. If I understand it correctly, the catalog file on HFS+ file systems is where the folder structure and file names are stored in a B-Tree. I can't imagine that some i/o error during backup can totally annihilate that file when it was working perfectly before. Here's a few things I want to try out but haven't figured out how so far:
    - Time Machine had to start a new backup. There's plenty of free space on that drive so there's a good chance there's old data left on it. Is there a way to restore files (including file names) and fodlers from deleted time machine backups?
    - Is there any way to re-build that catalog file from what is there left on the original hard drive? I can't imagine 65 kilobytes destroys it all.
    - Are there other ways to recover my iPhoto Library? The raw JPEG (and AVI) files with correct file names or metadata would suffice.
    Thanks in advance for any help, I'll actually reward the person with a working solution, 5 years of photo memories are somewhat important. It really ***** that a failure during a backup destroys that...

    Final Update:
    The catalog file on the original hard drive could not be fixed. Seems like Mac OSX tried to repair the catalog file while the sectors this file resides on failed. To make things worse the partition table was also broken beyond repair, even overwriting the sectors with a new correct partition table didn't help. DiskWarrior found less then 100 MB worth of stuff, mainly Applications folders.
    I recovered pretty much everything from the incomplete Time Machine backup by right-clicking the sparsebundle and browsing through the folders with the long alphanumeric names, looking for the version of the folder with the most files in there. All I was missing was part of the ~/Pictures folder, i.e. photobooth pictures and the whole iPhoto Library. My best option was to recover these files using data recovery tools.
    DiskDrill proved to be the absolute best, fast, responsive, efficient, and the only one able to mount the DMG-file with no valid file system on it. As there were many i/o errors and broken sectors on the original hard drive, I made a copy of it using a free command line tool called ddrescue (the standard dd tool just aborted when it encountered the i/o error). ddrescue copied the whole drive to a DMG image, I had 56 kilobytes with errors on the first pass, but it managed to shrink that down to just 4 kilobytes (wow!) after the second pass where it tries to re-read the broken secors. It took about 24 hours for a 512 GB 2.5" drive (5400 rpm) but well worth it. Be advised that ddrescue is really persistent and tries everything to recover those last errorneous bytes. At the very end of the process, the read/write head of the hard drive just goes wild trying to catch the data on the sectors with different momentum. This works but I assume this is pretty damaging for the original drive. I also copied it all to a new hard drive (again using ddrescue) and tried partition and catalog repair tools on that (DiskWarrion, testdiks, pdisk, etc.). Still no hint of a good result.
    I made a deep scan on the clone hard drive with DiskDrill. At the end (after about 8 hours over USB) it found 13 partition (I assume that's the Macintosh HD, EFI and some DMG files lying around) and  hundreds of thousands of pictures. I restored some JPG files just to check the quality, some were damaged, some were good with all the EXIF data intact. I just made it copy all JPG files into a folder. I know the pictures taken from my camera produce JPGs larger than 1 MB and smaller than 5 MB, so I sorted them by size and moved the smaller and larger files into seperate folders. I took the remaining folder (100 GB) and just dragged it into iPhoto. It imported them overnight. Auto-Split by events and I got my library back, alas with different file names, originals and edited versions side by side, lots of duplicates, some damaged, some not. But hey, all the pictures in chronological order. Okay there was also one large event with all the JPGs without valid EXIF data landed inside, iPhoto just takes the file creation date (i.e. the date where the recovered file was copied). As far as I can tell, these are all just data corpses, halfway overwritten copies, random pictures from the internet, desktop pictures, etc.
    I started to work my way back through the events, deleting the duplicates and renaming the events. There's an app called "Duplicate Annihilator" which apparently can find duplicate pictures in iPhoto and mark them for you. The free version only does 500 pictures but if it works, I'll get the full version. It can mark th eduplicate photos by adding something to the picture comment in iPhoto so you can manually review it all. Good stuff!

  • Maintenance View & Viewcluster & Check Table

    Hi all,
    I created a Viewcluster which includes three Maintenance Views. As you know after running the Viewcluster and when you enter a value to a field, the program checks the value according to the check table.
    In my example for REVUS field check table is USR02. So whenever I enter a value to REVUS, it checks USR02 table, and it gives an error if I enter incorrect value. The question is if enter just space (blank), it accepts is - it doesn't give error. What is the situation here? How can I prevent to enter blank value to REVUS.
    Thanks in advance.

    Narendran,
    Yes, this solves the problem. When I did like that it gives this error : Message no. 00 055 (Make an entry in all required fields).
    I found another solution too. I'd like to share with you.
    In the Maintenance View, we can define a Selection Condition  for REVUS field. It should be like that Operator: NE Comparative Value: <blank>. So when we do this the Clusterview doesn't allow to enter blank value and gives this error: Message no. SV 033 (Specify the key within the work area)
    It seems that second solution is better because if I choose the first solution when I need to change or modify the maintenance dialog I think I will need to change the screen again.
    Thanks,

  • HELP!! File system corrupted

    Hi,
    I got the filesystem on my LaCie Biggest Quadra 4 Tb external RAID disk suddenly corrupted and the system doesn't recognize the disk anymore, but the RAID controller does not complain about disk errors. Shortly, what happened:
    - the disk is my Time Maschine disk
    - I had a simulation code running over night writing output on that disk, too
    - the disk was nearly full (2 Gb free)
    - I found my code hanging and access to that disk rather slow, but I continued working without using that disk much
    - I did the 10.5.3 update and rebooted the machine
    - after boot the machine complained that the external disk is not recognized
    (BTW: I don't think the upgrade was the problem. I cannot see the disk even from my laptop which I didn't upgrade yet!)
    Disk utility does see the disk as a general volume, the original volume is not recognized. With disk utility I could only initialize the disk, so no chance to repair. "Data rescue" sees the volume with it's name, I haven't tried yet to see if it would recover files from that. So, now my question for the gurus over the net:
    - is there any other option to repair the filesystem, I don't think I have an issue with the disk itself, as the RAID controller should complain about that.
    - if the only option is to recover the files to a different disk, does it make a sense to recover the time machine file structure? That structure is overfilled with hard links that I don't believe will get recovered correctly. Is there a chance to make recovered or copied time machine backups work again on a different disk?
    - how could it come that the fs got corrupted such that the disk isn't recognized anymore as a HFS+ volume?
    Any help will be greatly appreciated,
    Thanks,
    Thomas

    Just in case someone else gets to this topic:
    I found out that the partition table got corrupted. No plan how that happened, the RAID seems ok. I was able to adjust that problem with a free program called testdisk (http://www.cgsecurity.org/wiki/TestDisk). After that the volume mounted again. Disk utility found problems on the filesystem which I repaired. I have a 50 Gbyte image of my powerbook disk on that filesystem which mounts if I skip verification, but fails verification. So, the filesystem got really corrupted, but at least I could mount it again and save the possible.
    Thomas

  • 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 (ORACLE8 에서 ORA-1578 조치방법)

    제품 : ORACLE SERVER
    작성날짜 : 2002-04-26
    BLOCK CORRUPTION (ORACLE8 에서 ORA-1578 조치방법)
    ================================================
    PURPOSE
    본 bulletin 에서는 Oracle8 에서의 data block corruption error
    (ORA-1578) 에 대해서 조치방법을 알아본다.
    BACKGROUND
    ORA-1578 은 data block 에 corruption 이 생긴 경우에 발생한다.
    이 error 는 corruption 이 발생한 곳의 file number 와 block
    number 를 알려준다.
    본 bulletin 에서는 file number 를 'f', block number 를 'b' 로
    지칭하기로 한다. ORA-1578 과 함께 return 되는 file number는
    relative file number 가 아닌 absolute file number 를 의미한다.
    (Oracle8 에서 새롭게 소개된 relative file number 에 대해서는 본
    bulletin 의 6번 항목에서 다루도록 한다.)
    RESOLUTION
    1. 최선의 해결책은 backup 받아둔 file 을 restore 한 후
    recover 작업을 하는 것이다. 이 작업을 위해서는 archive
    log mode 로 운영 중이어야 한다.
    dba_data_files 또는 v$datafile 과 ORA-1578 error 에서
    return 된 absolute file number 를 이용하여 corruption이
    발생한 datafile 의 이름을 알아낼 수 있다.
    Oracle8 에서는, dba_data_files 에 absolute file number
    (file_id) 와 함께 relative file number (relative_fno) 를
    가지고 있다.
    v$datafile 에는 아직 absolute file number (file#) 만을 가진다.
    backup 을 restore 하기 전에 hardware 의 문제를 fix 해야 할
    필요가 있을 수 있다. 만약 corruption 이 disk 불량에 의해
    발생하였다면, backup 받아둔 datafile 을 문제가 없는 disk 에
    restore 하고, startup mount 한 후, 새로운 위치로 datafile
    rename 을 하고 recover 한다.
    만약 해당 datafile 이 system tablespace 에 속하지 않는다면
    offline tablespace recovery 도 가능하다.
    2. backup datafile 을 restore 하고 recover 하지 않을 것이라면
    우선, 어떤 object 에서 corruption 이 발생하였는지 확인해야
    한다.
    다음의 SQL 문을 이용한다.
    SELECT owner, segment_name, segment_type, relative_fno
    FROM dba_extents
    WHERE file_id = f
    AND b BETWEEN block_id AND block_id + blocks - 1 ;
    3. 해당 segment 가 non-data dictionary index라면, 해당 index를
    drop 한 후 재생성한다.
    4. 해당 segment 가 table 이라면, corruption 이 발생한 block 의
    data 는 소실된 것이다.
    5. 만약 해당 table 에 대한 최근의 export dump file이 존재한다면,
    해당 table 을 drop 한 후 import 함으로써 복구할 수 있다.
    최근의 export dump file 이 없거나 이를 export 받을 수 있는
    최근의 backup 이 없다면 다음과 같은 방법을 이용할 수 있다.
    6. corruption 이 발생한 non-clustered table 에서 corrupted
    block 을 access 하지 않고 나머지 data 들을 select 할 수
    있도록 ROWID 를 이용할 수 있다. non-clustered table의 모든
    row 들은 해당 row 의 물리적인 주소를 가리키는 고유한 ROWID를
    갖는다(해당 row가 여러 block에 조각이 나 있다면 첫번째 조각에
    대한 주소). clustered table 인 경우에는 서로 다른 table 의
    data 들이 같은 block 에 존재할 수 있으며, 같은 ROWID 를 가질
    수 있다.
    Oracle 은 index 를 구성하기 위하여 내부적으로 ROWID 를 사용한다.
    따라서 where 절에 ROWID 를 사용하여 select 하면 강제로 range
    scan 를 할 수 있다.
    Oracle8 에서는 이를 위하여 ROWID hint 를 사용할 필요가
    없어졌다.
    ROWID 를 이용하여 table 로부터 data 를 추출하기
    예제로써 ACCT_NO, PERSON, WEEKNO 등의 column 으로 구성된
    SCOTT user의 EXAMPLE 이라는 table 이 있다고 가정한다.
    이때, ORA-1578 "ORACLE data block corrupted (file # 5,
    block # 2) 가
    발생하였다고 가정하자.
    ROWID in Oracle8 :
    Oracle8 에서의 ROWID 는 'OOOOOOFFFBBBBBBSSS' format 을 가진다.
    OOOOOO = data object number
    Oracle7 의 object_id 와는 별도로 segment 의 id 를 갖는다.
    dba_objects 의 data_object_id 에서 확인가능
    FFF = relative file number
    BBBBBB = block number
    SSS = row number
    Oracle8에서의 ROWID 는 absolute file number 가 아닌 relative
    file number 를 갖는다는 점에 주목해야 한다.
    relative file number 는 tablespace 에 대해 상대적이며
    (tablespace마다 첫번째, 두번째, 세번째 datafile 을 가질 수
    있음을 의미) absolute file number 는 전체 database 내에서
    고유하다. 두개의 서로다른 file 들이 동일한 relative file
    number를 가질 수 있다.
    만약 EXAMPLE table 에서 ACCT_NO, ROWID 를 select하면 다음과
    같은 결과가 나올 수 있다.
    ACCT_NO ROWID
    12345 AAAAh3AAGAAACJAAAA
    19283 AAAAh3AAGAAACJAAAB
    22345 AAAAh4AAFAAAAADAAA
    60372 AAAAh4AAFAAAAADAAB
    33456 AAAAh5AAEAAAAIuAAA
    29473 AAAAh5AAEAAAAIuAAB
    이러한 format 을 extended ROWID character format 이라고
    지칭한다.
    extended ROWID 는 number 이므로 substr 함수를 이용하여
    extended ROWID 로부터 일부를 떼어낼 수 없다.
    ROWID 를 생성하기 위해서는 모든 component 를 알아야 한다.
    그런다음, DBMS_ROWID package 의 function 을 이용하여 ROWID 를
    생성할 수 있다.
    function rowid_create(rowid_type IN number,
    object_number IN number,
    relative_fno IN number,
    block_number IN number,
    row_number IN number)
    return rowid;
    pragma RESTRICT_REFERENCES(rowid_create,WNDS,RNDS,WNPS,RNPS);
    -- rowid_type - type (restricted=0/extended=1)
    -- object_number - data object number
    (rowid_object_undefined for )
    -- restricted
    -- relative_fno - relative file number
    -- block_number - block number in this file
    -- file_number - file number in this block
    corruption 이 발생한 block 의 data object number 를 알기
    위해서는 dba_objects 를 조회한다.
    SELECT data_object_id FROM dba_objects
    WHERE owner = 'SCOTT'
    AND object_name = 'EXAMPLE' ;
    DATA_OBJECT_ID
    2168
    우리는 이미, 위에서 사용한 다음의 SQL 에 의해서 relative file
    number 를 알고 있다.
    SELECT owner, segment_name, segment_type, relative_fno
    FROM dba_extents
    WHERE file_id = 5
    AND 2 BETWEEN block_id AND block_id + blocks - 1 ;
    OWNER SEGMENT_NAME SEGMENT_TYPE RELATIVE_F
    SCOTT EXAMPLE TABLE 5
    corruption 이 발생한 block 이 2이므로, block# 2 이전의 access
    가능한 마지막 ROWID 는 block# 1 에 존재한다. 그리고 block# 2
    이후의 access 가능한 첫 ROWID 는 block# 3에 존재한다. block
    안에 몇개의 row number 가 존재할 지 모르므로 row number 0 을
    이용한다.
    이제 corrupted block 이전의 ROWID 와 이후의 ROWID 를 생성할
    준비가 끝났다.
    corrupted block 이전의 ROWID :
    SELECT DBMS_ROWID.ROWID_CREATE(1,2168,5,1,0) FROM example ;
    DBMS_ROWID.ROWID_C
    AAAAh4AAFAAAAABAAA
    corrupted block 이후의 ROWID :
    SELECT DBMS_ROWID.ROWID_CREATE(1,2168,5,3,0) FROM example ;
    DBMS_ROWID.ROWID_C
    AAAAh4AAFAAAAADAAA
    다음으로, EXAMPLE table 과 같은 spec 으로 table 을 하나 만든다.
    CREATE TABLE temp AS SELECT * FROM example WHERE 1=2;
    그리고 corrupted block 이외의 block 에서 data 를 추출하여
    insert 한다.
    INSERT INTO temp SELECT * FROM example
    WHERE ROWID <= 'AAAAh4AAFAAAAABAAA';
    INSERT INTO temp SELECT * FROM example
    WHERE ROWID >= 'AAAAh4AAFAAAAADAAA';
    이후 원본 table 을 drop 하고, TEMP 를 rename 한다.
    7. 만약 data dictionary 에 속하는 table, index 또는 rollback
    segment에 corrupted block 이 발생하였다면 Oracle Support 의
    지원을 받는다.
    8. 일반적으로, ORA-1578 은 hardware 의 문제때문에 유발된다.
    하지만 만약에 ORA-600[3374] 가 발생한다면 memory 상에서
    corruption 이 발생한 경우이다.
    이 경우 database 를 restartup 하면 문제가 해결될 수 있다.
    Reference Documents
    --------------------

    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

Maybe you are looking for

  • Problems centering text in an includes file.

    I am trying to create an includes file (footer.php) to be displayed in a template file (index.dwt.php).  Am having troubles trying to get it to center the text when it's drawn in and displayed in the templates page.  It always comes in left justified

  • Output Designer 5.5 and 5.6 Compatibility

    Hi, I want to purchase the Output designer Software, just wanted to confirm few question: 1. Files(IFD) created in Older Version like 5.2 can be opened without any problem in latest Version? 2.Can the files created in Output Designer 5.6 can be opene

  • Upgrade to ios 5 fails at restore.  Iphone is stuck in recovery

    downloaded the most recent ios through a connection with most up to date iTunes, the process is good until connecting for restore.  The progress bar gets most of the way accross and then just stops.  I even left the iPhone connected to the computer o

  • FieldPoint WEB Remote Panel Tab Control

    Using a TAB control on Fieldpoint (FP 2000) and Labview 7.1 I wanted to implement a password feature mainly for the Web browser remote panel feature for my Filedpoint application, as suggested in "Developing Remote Front Panel LabVIEW Applications" h

  • Rendering and lagging problems with FCP  X

    Hello, I am working on a  Mac OS X Lion 10.7.3 (11D50b) -  Processor  2.4 GHz Intel Core i5 - Graphics  NVIDIA GeForce GT 330M 256 MB and Memory  8 GB 1067 MHz DDR3. My 30 minute project has been completed but every time I reopen it, there is a short