File corrupted after shutdown. (ORA 1578)

After an accidentally shutdown my database wont start up smothly.
If I type 'connect internal' and 'startup'
in the svrmgrl it comes up with
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file #1, block #164)
ORA-01110: data file 1:'oradata/service/system01.dbf'
Is there anything I could do for recovery ?
I already tried 'restore database' but without any big success.
Help is appreciated.
thanks,
detlef
PS (Please detail your suggestions as Im not an ORACLE expert.)

After an accidentally shutdown my database wont start up smothly.
If I type 'connect internal' and 'startup'
in the svrmgrl it comes up with
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file #1, block #164)
ORA-01110: data file 1:'oradata/service/system01.dbf'
Is there anything I could do for recovery ?
I already tried 'restore database' but without any big success.
Help is appreciated.
thanks,
detlef
PS (Please detail your suggestions as Im not an ORACLE expert.)

Similar Messages

  • Photoshop CS5.1 file corrupted after crash

    I had spent my artwork for many days with so many effort and time, and it has been corrupted after a computer crash (not PSD crash). I am using Windows 7.
    What happened after: 1 black layer (around 59 MB)
    What happened before: Had multiple saves, 15+ layers (so why it is not back to the latest save?)
    I tried: Previews in PSD, Bridge, using recovery programs (none worked), hex editor, searched for temp./restore previous version files (none)
    Please tell me how to recover this file. I know that I will create backups next time, but please help me with this issue (can't find solution anywhere else e.g. articles)

    Have you the Shadow Copy option enabled? When yes you can try a right click on the appropriate file an the click on "Previous versions". If there's nothing, I'll see no chance.
    Axel

  • ITunes library file corrupt after updating?

    Just the other day I updated to the latest iTunes software. This is the first time I've tried to use it and it keeps freezing (the swirly rainbow icon) until I eventually have to give up and force quit. My iTunes library is on an external hard drive which has admittedly been taking longer and longer to boot up each time I connect it, I don't know if this is related.
    After doing some research on here I created a new test iTunes library on my hard drive and it worked perfectly, so it must be a corrupt library file? I followed the advice on an old thread and replaced the corrupt library file with an older one from December.
    It worked....but here's the complication. Since that last backup in December I started using iTunes Match. When I opened the older library file, I saw that iTunes Match wasn't turned on, so I turned it on and it was saying that none of my library had been uploaded to iCloud except for iTunes purchases. I quickly exited, because frankly I couldn't bear the thought of all my library having to be uploaded to iCloud again (it took days and days...and days!). The music is still on the iCloud, but if I open that older version of my iTunes library it doesn't seem to think that it is.
    Any idea what I should do?
    Thanks for your help

    hmmmm. perhaps try running a chkdsk over the drive on which your iTunes library file is stored:
    How to perform disk error checking in Windows XP
    does that find/repair any damage? if so, do you still get the same message from your itunes?

  • Can't start up after shutdown - ORA-12514

    Hi -
    I installed 11gR2 on RHEL 5.4, creating a database during installation.
    After shutting down via SQLPlus (remotely), I found I am unable to startup.
    Attempts to startup via SQLPlus fail with: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor.
    However, I am able to startup via Enterprise Manager.
    I have been viewing similar threads but cannot seem to get the issue resolved.
    # listener.ora Network Configuration File: /home/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
    # Generated by Oracle configuration tools.
    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = s2.srs-7.net)(PORT = 1521))
    ADR_BASE_LISTENER = /home/app/oracle
    # tnsnames.ora Network Configuration File: /home/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    ELF =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = s2.srs-7.net)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = elf.srs-7.net)
    tnsping:
    [oracle@s2 bin]$ tnsping elf
    TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 04-MAR-2010 22:21:56
    Copyright (c) 1997, 2009, Oracle. All rights reserved.
    Used parameter files:
    /home/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = s2.srs-7.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = elf.srs-7.net)))
    OK (0 msec)
    Stop and Start Listener: (shows "listener supports no services")
    [oracle@s2 bin]$ lsnrctl stop
    LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 04-MAR-2010 22:16:18
    Copyright (c) 1991, 2009, Oracle. All rights reserved.
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
    The command completed successfully
    [oracle@s2 bin]$ lsnrctl start
    LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 04-MAR-2010 22:16:24
    Copyright (c) 1991, 2009, Oracle. All rights reserved.
    Starting /home/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...
    TNSLSNR for Linux: Version 11.2.0.1.0 - Production
    System parameter file is /home/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
    Log messages written to /home/app/oracle/diag/tnslsnr/server12/listener/alert/log.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=s2.srs-7.net)(PORT=1521)))
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
    STATUS of the LISTENER
    Alias LISTENER
    Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
    Start Date 04-MAR-2010 22:16:24
    Uptime 0 days 0 hr. 0 min. 0 sec
    Trace Level off
    Security ON: Local OS Authentication
    SNMP OFF
    Listener Parameter File /home/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
    Listener Log File /home/app/oracle/diag/tnslsnr/server12/listener/alert/log.xml
    Listening Endpoints Summary...
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=s2.srs-7.net)(PORT=1521)))
    The listener supports no services
    The command completed successfully
    My environment
    [oracle@s2 bin]$ env
    HOSTNAME=s2.srs-7.net
    SHELL=/bin/bash
    TERM=xterm
    HISTSIZE=1000
    TMPDIR=/tmp
    KDE_NO_IPV6=1
    USER=oracle
    TEMP=/tmp
    LD_LIBRARY_PATH=/home/app/oracle/product/11.2.0/dbhome_1/lib:/lib:/usr/lib:/usr/local/lib
    LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
    ORACLE_SID=elf
    ORACLE_BASE=/home/app/oracle
    KDEDIR=/usr
    MAIL=/var/spool/mail/oracle
    PATH=/home/app/oracle/product/11.2.0/dbhome_1/bin:/usr/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin
    INPUTRC=/etc/inputrc
    PWD=/home/app/oracle/product/11.2.0/dbhome_1/bin
    LANG=en_US.UTF-8
    KDE_IS_PRELINKED=1
    ORACLE_TERM=xterm
    SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
    SHLVL=1
    HOME=/home/oracle
    LOGNAME=oracle
    CLASSPATH=/home/app/oracle/product/11.2.0/dbhome_1/JRE:/home/app/oracle/product/11.2.0/dbhome_1/jlib:/home/app/oracle/product/11.2.0/dbhome_1/rdbms/jlib
    LESSOPEN=|/usr/bin/lesspipe.sh %s
    ORACLE_HOME=/home/app/oracle/product/11.2.0/dbhome_1
    G_BROKEN_FILENAMES=1
    _=/bin/env
    OLDPWD=/home/app/oracle/product/11.2.0/dbhome_1
    I have tried to add a static entry (below) to my listener,ora file, but this not does not solve the issue and prevents starting up even via EM until the entry is removed:
    ELF =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = s2.srs-7.net)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = elf.srs-7.net)
    All else (so far) seems to be functioning normally and I have encountered only this issue.
    Any input would be greatly appreciated.
    S Rosen.
    Edited by: ScottRn on Mar 4, 2010 2:02 PM

    ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
    SQL> exit
    Disconnected from Oracle Database 11g Release 11.2.0.1.0 - Production
    [oracle@s2 bin]$ env | sort
    _=/bin/env
    CLASSPATH=/home/app/oracle/product/11.2.0/dbhome_1/JRE:/home/app/oracle/product/11.2.0/dbhome_1/jlib:/home/app/oracle/product/11.2.0/dbhome_1/rdbms/jlib
    G_BROKEN_FILENAMES=1
    HISTSIZE=1000
    HOME=/home/oracle
    HOSTNAME=s2.srs-7.net
    INPUTRC=/etc/inputrc
    KDEDIR=/usr
    KDE_IS_PRELINKED=1
    KDE_NO_IPV6=1
    LANG=en_US.UTF-8
    LD_LIBRARY_PATH=/home/app/oracle/product/11.2.0/dbhome_1/lib:/lib:/usr/lib:/usr/local/lib
    LESSOPEN=|/usr/bin/lesspipe.sh %s
    LOGNAME=oracle
    LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
    MAIL=/var/spool/mail/oracle
    OLDPWD=/home/app/oracle/product/11.2.0/dbhome_1
    ORACLE_BASE=/home/app/oracle
    ORACLE_HOME=/home/app/oracle/product/11.2.0/dbhome_1
    ORACLE_SID=elf
    ORACLE_TERM=xterm
    PATH=/home/app/oracle/product/11.2.0/dbhome_1/bin:/usr/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin
    PWD=/home/app/oracle/product/11.2.0/dbhome_1/bin
    SHELL=/bin/bash
    SHLVL=1
    SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
    TEMP=/tmp
    TERM=xterm
    TMPDIR=/tmp
    USER=oracle
    [oracle@s2 bin]$ sqlplus
    SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 5 00:34:21 2010
    Copyright (c) 1982, 2009, Oracle. All rights reserved.
    Enter user-name: */ as sysdba*
    Connected to an idle instance.
    SQL> startup
    ORACLE instance started.
    Total System Global Area 2042241024 bytes
    Fixed Size 1337548 bytes
    Variable Size 503318324 bytes
    Database Buffers 1526726656 bytes
    Redo Buffers 10858496 bytes
    Database mounted.
    Database opened.
    SQL> exit
    Disconnected from Oracle Database 11g Release 11.2.0.1.0 - Production
    [oracle@s2 bin]$
    Thanks,
    Scott
    Edited by: ScottRn on Mar 4, 2010 3:41 PM

  • ZIP files corrupted after downloading

    after downloading the image files for Sample ADF Fusion Web Development which is mentioned in Oracle 11g, the zip file does not open. please suggest me what I can do?

    Hi;
    after downloading the image files for Sample ADF Fusion Web Development which is mentioned in Oracle 11g, the zip file does not open. please suggest me what I can do?If your zip is corrupted than you have to redownload related file,i suggest use some download manager while u are making download
    Regard
    Helios

  • Excel file corrupt after saving to another disk

    I have two PCs at home.: A laptop running Win-7 64-bit, and a desktop running Win-7 32-bit.  Both are running Office 2010.  Often, but not always, when I save an Excel workbook from one PC onto a shared hard drive on my home network and
    then try to open it on the other PC, the other PC displays the "file appears corrupt, would you like Excel to try to recover/repair?" message when I try to open the file.  This also happens sometimes when saving to a thumb-drive and attempting to open
    it on a non-connected laptopn running XP and Ofice 2007.  Most times, Excel successfully repairs/recovers the file without issue.  Infrequently, it doesn't repair everything.  Today it failed completely and was unable even to open the file on
    another PC.  I've tried various methods to copy the file.  I've experienced the problem when I use Windows Explorer to copy the file from one disk to the other, and also when using both DOS COPY and XCOPY commands.  The issue occurs with
    many, but not every Excel file I copy.  And it doesn't happen every time - only sometimes.  It seems to occur more frequently with certain specific files, and and rarely or never happens with specific other files.  It occurs in both directions
    (i.e. with both the 64-bit Win-7 machine as the "source" machine and with the 32-bit Win-7 machine as the source machine.)  All of the files I have problems with are .xlsm files.  I have not tried to confirm that it happens only with .xlsm
    files.  It doesn't seem to matter if the destination file is being overwritten, or if it is being created from scratch by the copy source.  I'm baffled.  Any suggestions as to why this is happening?  How I can prevent it?  Thanks.

    Hi,
    The Office 2010 you used on both computers are 32-bit or 64 bit?
    There are some differences between Office 32 bit and 64 bit.
    For more information, please refer to the link:
    http://office.microsoft.com/en-us/excel-help/choose-the-32-bit-or-64-bit-version-of-microsoft-office-HA010369476.aspx
    Jaynet Zhang
    TechNet Community Support

  • Companion CD for 10g file corrupt after download

    I have for 2 days tried to download Oracle Database 10g Companion CD release 2 (10.2.0.1.0) for AIX5L. But the file is corrupt and when I try to gunzip it I get the error message "Invalid archive directory".

    Thank you!
    The problem described in Metalink Doc-ID Note : 284602.1 is my case!
    But this document applies to Oracle Net Services - Version: 10.1.0.2 to 10.1.0.3.
    I have Version 10.2.0.1.0 and the problem apears again (with some symptoms are differ).

  • Ipad file corrupted after update

    My ipad2 said it had an update.  It started updating then the screen showed connect to itunes, i connected to itunes it said I have to restore it.  I click restore and it tells me that the file is corupt.  :-(  Soooo sad!!

    No, they are sending a box for me to send it to them and they will send me a different one. 
    This link is where I started, clicked on talk to Apple Support now.  Then I entered my serial number, after that it talks about a charge for support, below that is a box that says something about update didn't work.  I chose that, gave a phone number and they called me a few seconds later.
    https://expresslane.apple.com/ServiceOptionAction.action

  • Files corrupted after exporting pictures

    Hi
    have one Q, when exporting pic to flash drive some of them are corrupted, half of picture blank. Some of them ok, some ******* half???
    any ideas???
    thanks

    Try export to a folder on the desktop. Are the pics corrupted when you do? If so, your issue is with the Flash Drive. If not, post back.
    Regards
    TD

  • NIKON NEF files corruption

    I have problem of NIKON NEF(NIKON D7000 CAMERA) files corruption after updating my MacAir to IOS Yosemite. I updated recently with latest Digital Raw Converter 9.06 but problem is still same. JPEG files are no problem. Any suggestion ho to solve? thanks

    The answer is in this link.
    FAQ: Will Photoshop Elements work with my camera, or Why won't my raw files open?
    Each Nikon camera has its own particular NEF format. First select your camera model and look in the link about supported cameras for the necessary version of the ACR plugin.
    The present version of Elements is 8.6. The dngconverter has a 'release candidate' version 8.7.

  • 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

  • DATA BLOCK CORRUPTION : ORA-1578 해결 방법

    제품 : ORACLE SERVER
    작성날짜 : 2005-08-18
    DATA BLOCK CORRUPTION : ORA-1578 해결 방법
    =========================================
    모든 오라클 데이타 블럭은 sequence 번호(seq)와 incarnation 번호(inc)를
    갖고 있다. ORA-1578 에러는 seq=0 이고 inc <> 0 (새로운 블럭이 아님)일 때
    발생한다. ORA-1578 에러는 ORA-600[3339] 에러와 함께 발생하곤 한다.
    ORA-1578 에러가 발생하면 corruption이 발생한 화일 번호와 블럭 번호를
    알려준다. 여기서는 이 때의 화일번호를 f, 블럭번호를 b 라고 부르기로 한다.
    <해결 방법>
    1) 우선 해야 할 일은 어떠한 오브젝트가 corrupt 되었는가를 알아내는 것이다.
    다음의 스크립트를 이용하면 알 수 있다.
    SQL>select segment_name, segment_type
    from dba_extents
    where file_id = f and
    b between block_id and block_id + blocks - 1;
    2) 만약 해당 세그먼트가 인덱스이면 drop 시키고 다시 생성하면 된다.
    3) 만약 해당 세그먼트가 테이블이면 corrupt된 블럭의 데이타는 손상된 것이다.
    4) 만약 해당 테이블이 들어있는 export 화일이 있다면 손상된 테이블을 drop
    시키고 import 받는 것이 제일 간단한 방법이다. 하지만, 만약 export 받은
    화일이 없거나 backup해 놓은 화일도 없다면 해당 테이블에 인덱스가 생성되어
    있는 경우에 한해서 다음의 방법을 사용해서 복구를 하도록 한다.
    5) 해당 테이블에 대한 인덱스가 생성되어 있다면 이를 이용해서 corrupt된
    블럭을 피해갈 수 있다. 이 방법은 다음과 같다.
    - empno, ename, deptno 를 컬럼으로 가지는 emp 테이블이 corrupt 되었다고
    가정하자. 그리고, empno 컬럼에 인덱스가 생성되어 있다고 하자. 클러스터화
    되지 않은 모든 테이블은 Unique한 rowid를 가진다.
    rowid를 varchar2/hexadecimal 형식으로 표현하려면 rowidtochar 함수를 이용
    한다.
    SQL> select rowidtochar(rowid) from emp;
    rowid는 총 18자로 block address(8자), dot(1자), row address(4자),
    dot(1자), file address(4자)로 구성되어 있다.
    SQL> select empno, rowid
    from emp
    where empno > 0
    위의 스크립트를 실행시키면 다음과 같은 결과를 얻게 된다.
    EMPNO ROWID
    100 00000003.0000.0006
    101 00000003.0001.0006
    102 00000003.0002.0006
    103 00000003.0003.0006
    500 00000004.0000.000A
    501 00000004.0001.000A
    755 0000001A.0005.000A
    756 0000001A.000C.000A
    만약 인덱스가 character 컬럼에 대한 것이었다면 위의 query 문장을 다음과 같
    이 바꿀 수 있다.
    SQL> select empno, rowid
    from emp
    where empno > '';
    예를 들어 다음과 같은 에러 메시지가 떨어졌다고 하자.
    01578, 00000, "ORACLE data block corrupted (file # 10, block # 4)
    그러면, 다음의 스크립트를 사용하여 손상된 블럭에 있는 employee 에 대한
    empno를 구할 수 있다.
    SQL> select empno from emp
    where empno > 0
    and rowidtochar(rowid) like '00000004.%.000A';
    EMPNO ROWID
    500 00000004.0000.000A
    501 00000004.0001.000A
    이제 emp 테이블과 같은 구조를 갖는 새로운 테이블을 만든다.
    SQL> create table temp
    as select * from emp
    where 1 = 2;
    그런 다음 손상된 부분을 피해서 새로운 테이블에 손상된 테이블의 데이타를
    추가한다.
    SQL> insert into temp select * from emp where empno < 500;
    SQL> insert into temp select * from emp where empno > 501;
    손상된 테이블을 drop 시키고 temp 테이블의 이름을 emp로 변경한다.
    그리고, 백업된 자료나 문서 자료를 통하여 손상된 부분에 대한 정보를 추가한다.
    6) 손상된 블럭에 여러 개의 row가 존재하고 있다면 다음의 방법을 이용한다.
    SQL> create table empnos as
    select empno from emp
    where empno > 0
    and rowidtochar(rowid) not like '00000004.%.000A';
    이 스크립트를 이용하면 손상된 block에 포함되지 않는 empno들을 알 수 있다.
    다음의 스크립트를 계속 실행시켜 복구를 한다.
    SQL> create table temp as select * from emp where 1 = 2;
    SQL> insert into temp
    select emp.empno, emp.ename, emp.deptno
    from emp, empnos
    where emp.empno > 0
    and emp.empno = empnos.empno;
    7) 만약 Data Dictionary의 table이나 index에서 손상된 block이 발생했다면
    지원을 요청해야 한다.

    Hi,
    Take a look in the following Metalink Notes:
    - DBMS_REPAIR example - Doc ID: NOTE:68013.1
    - Handling Oracle Block Corruptions in Oracle7/8/8i/9i/10g - Doc ID: NOTE:28814.
    - Prevention, Detection and Repair of Database Corruption - Doc ID: NOTE:76375.1
    Cheers,
    Francisco Munoz Alvarez
    http://www.oraclenz.com

  • Init.ora setting not effective after shutdown/startup

    Hi there,
    I've set optimizer_features_enable = 8.1.7 (both lower caps and upper caps) in init.ora
    After shutting down oracle and starting up again,
    show parameter opt still shows 9.2.0
    SQL> show parameter opt
    NAME TYPE VALUE
    filesystemio_options string asynch
    object_cache_optimal_size integer 102400
    optimizer_dynamic_sampling integer 1
    optimizer_features_enable string 9.2.0
    optimizer_index_caching integer 0
    optimizer_index_cost_adj integer 100
    optimizer_max_permutations integer 2000
    optimizer_mode string CHOOSE
    I've to change other parameters e.g. shared_pool_size in the same init.ora file and it's effective after shutdown/restart.
    Please advise how to set optimizer_features_enable.

    9.x has something called SPFILE also...
    SQL> show parameter spfile
    If it shows a file name value, something like spfilesid.ora, changes to init.ora would make not much difference :)

  • Why does iTunes freeze up for minutes at a time when modifying INFO (CMD-i) ?  My files are not corrupted after it is done like many other threads i have readed.

    Why does iTunes freeze up for minutes at a time when modifying INFO (CMD-i) ?  My files are not corrupted after it is done like many other threads i have readed.  Sometimes it's changing the title of a movie or editing the season and episode number of a TV show ect.....

    Yup same here
    I am running the latest iTunes, the latest updates to the OS and on an iMac 3.4GHz Quad core i7 with 8GB of RAM and the music stored on local HDD.
    Still locks up iTunes for between 2 minutes up to 20 minutes.
    Really annoying.
    If you find a fix please, please let me know, I have just been throwing hardware at it with no joy at all

Maybe you are looking for