Oracle 11.2でI_DEPENDENCY1損害対応

ORACLEデータベース によくあるエラ の解決策

プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com

 

ここで、11.2でi_dependency1が無効になった場合をシミュレーションする(テスト環境では11.2.0.3を使ってください):

11.2で:データベースに依頼関係があるテーブルは何か探ってみよう:

 

 

SQL> select owner,object_id,object_name,object_type from dba_objects where object_name like '%DEPENDENCY%';
 
 
OWNER            OBJECT_ID OBJECT_NAME                    OBJECT_TYPE
--------------- ---------- ------------------------------ -------------------
SYS                    104 DEPENDENCY$                    TABLE
SYS                    106 I_DEPENDENCY1                  INDEX
SYS                    107 I_DEPENDENCY2                  INDEX
SYS                   1511 V_$OBJECT_DEPENDENCY           VIEW
SYS                   2200 GV_$OBJECT_DEPENDENCY          VIEW
SYS                   2837 GV_$SQL_FEATURE_DEPENDENCY     VIEW
SYS                   2839 V_$SQL_FEATURE_DEPENDENCY      VIEW
SYS                   2857 GV_$RESULT_CACHE_DEPENDENCY    VIEW
SYS                   2859 V_$RESULT_CACHE_DEPENDENCY     VIEW
SYS                   4841 PUBLIC_DEPENDENCY              VIEW
PUBLIC                1512 V$OBJECT_DEPENDENCY            SYNONYM
PUBLIC                2201 GV$OBJECT_DEPENDENCY           SYNONYM
PUBLIC                2838 GV$SQL_FEATURE_DEPENDENCY      SYNONYM
PUBLIC                2840 V$SQL_FEATURE_DEPENDENCY       SYNONYM
PUBLIC                2858 GV$RESULT_CACHE_DEPENDENCY     SYNONYM
PUBLIC                2860 V$RESULT_CACHE_DEPENDENCY      SYNONYM
PUBLIC                4842 PUBLIC_DEPENDENCY              SYNONYM
SYSMAN               14862 MGMT_INV_DEPENDENCY_RULE       TABLE
SYSMAN               15200 MGMT_METRIC_DEPENDENCY_DEF     TABLE
SYSMAN               15201 PK_MGMT_METRIC_DEPENDENCY_DEF  INDEX
SYSMAN               15202 MGMT_METRIC_DEPENDENCY         TABLE
SYSMAN               15203 PK_MGMT_METRIC_DEPENDENCY      INDEX
SYSMAN               15204 MGMT_METRIC_DEPENDENCY_DETAILS TABLE
SYSMAN               15851 MGMT_METRIC_DEPENDENCY_IDX_01  INDEX
 
24 rows selected.
 
SQL> 

ここで、10gは18,11.2は24。

SQL> select owner,table_name,index_name,tablespace_name,status from dba_indexes where table_name='DEPENDENCY$';
 
OWNER           TABLE_NAME                     INDEX_NAME                     TABLESPACE_NAME                STATUS
--------------- ------------------------------ ------------------------------ ------------------------------ --------
SYS             DEPENDENCY$                    I_DEPENDENCY2                  SYSTEM                         VALID
SYS             DEPENDENCY$                    I_DEPENDENCY1                  SYSTEM                         VALID
 
SQL> 


10gと11gで、DEPENDENCY$テーブルに二つのインディクスが存在している、この二つのインディクスが壊れた場合に、データベースへの影響が異なっている。その意味は以下の通り:

create table dependency$                                 /* dependency table */
( d_obj#        number not null,                  /* dependent object number */
  d_timestamp   date not null,   /* dependent object specification timestamp */
  order#        number not null,                             /* order number */
  p_obj#        number not null,                     /* parent object number */
  p_timestamp   date not null,      /* parent object specification timestamp */
  d_owner#      number,                           /*  dependent owner number */
  property      number not null,                   /* 0x01 = HARD dependency */
                                                   /* 0x02 = REF  dependency */
                                          /* 0x04 = FINER GRAINED dependency */
  d_attrs       raw("M_CSIZ"), /* Finer grain attr. numbers if finer grained */
  d_reason      raw("M_CSIZ"))  /* Reason mask of attrs causing invalidation */
storage (initial 10k next 100k maxextents unlimited pctincrease 0)
/
 
create unique index i_dependency1 on
  dependency$(d_obj#, d_timestamp, order#)
  storage (initial 10k next 100k maxextents unlimited pctincrease 0)
/
 
create index i_dependency2 on
  dependency$(p_obj#, p_timestamp)
  storage (initial 10k next 100k maxextents unlimited pctincrease 0)
/


このようなブロックに書き込まれている:


SQL> col segment_name for a30
SQL> select owner,segment_name,segment_type,extent_id,file_id,block_id from DBA_EXTENTS where segment_name like '%DEPENDENCY%';
 
OWNER           SEGMENT_NAME                   SEGMENT_TYPE        EXTENT_ID    FILE_ID   BLOCK_ID
--------------- ------------------------------ ------------------ ---------- ---------- ----------
SYS             I_DEPENDENCY2                  INDEX                       0          1        864
SYS             I_DEPENDENCY2                  INDEX                       1          1       8584
SYS             I_DEPENDENCY2                  INDEX                       2          1       8856
SYS             I_DEPENDENCY2                  INDEX                       3          1       9000
SYS             I_DEPENDENCY2                  INDEX                       4          1      10072
SYS             I_DEPENDENCY2                  INDEX                       5          1      12792
SYS             I_DEPENDENCY2                  INDEX                       6          1      16128
SYS             I_DEPENDENCY2                  INDEX                       7          1      18752
SYS             I_DEPENDENCY2                  INDEX                       8          1      19960
SYS             I_DEPENDENCY2                  INDEX                       9          1      21328
SYS             I_DEPENDENCY2                  INDEX                      10          1      21584
SYS             I_DEPENDENCY2                  INDEX                      11          1      22288
SYS             I_DEPENDENCY2                  INDEX                      12          1      22888
SYS             I_DEPENDENCY2                  INDEX                      13          1      23408
SYS             I_DEPENDENCY2                  INDEX                      14          1      25616
SYS             I_DEPENDENCY2                  INDEX                      15          1      25672
SYS             I_DEPENDENCY2                  INDEX                      16          1      28672
SYS             I_DEPENDENCY1                  INDEX                       0          1        856
SYS             I_DEPENDENCY1                  INDEX                       1          1       8720
SYS             I_DEPENDENCY1                  INDEX                       2          1       8984
SYS             I_DEPENDENCY1                  INDEX                       3          1      10712
SYS             I_DEPENDENCY1                  INDEX                       4          1      14968
SYS             I_DEPENDENCY1                  INDEX                       5          1      19248
SYS             I_DEPENDENCY1                  INDEX                       6          1      20760
SYS             I_DEPENDENCY1                  INDEX                       7          1      21312
SYS             I_DEPENDENCY1                  INDEX                       8          1      21608
SYS             I_DEPENDENCY1                  INDEX                       9          1      22344
SYS             I_DEPENDENCY1                  INDEX                      10          1      23368
SYS             I_DEPENDENCY1                  INDEX                      11          1      25608
SYS             I_DEPENDENCY1                  INDEX                      12          1      25688
SYS             I_DEPENDENCY1                  INDEX                      13          1      29192
SYS             I_DEPENDENCY1                  INDEX                      14          1      32760
SYS             I_DEPENDENCY1                  INDEX                      15          1      34240
SYS             I_DEPENDENCY1                  INDEX                      16          1      37504
SYS             DEPENDENCY$                    TABLE                       0          1        840
SYS             DEPENDENCY$                    TABLE                       1          1       8624
SYS             DEPENDENCY$                    TABLE                       2          1       8800
SYS             DEPENDENCY$                    TABLE                       3          1       8968
SYS             DEPENDENCY$                    TABLE                       4          1       9640
SYS             DEPENDENCY$                    TABLE                       5          1      10080
SYS             DEPENDENCY$                    TABLE                       6          1      12992
SYS             DEPENDENCY$                    TABLE                       7          1      15544
SYS             DEPENDENCY$                    TABLE                       8          1      18728
SYS             DEPENDENCY$                    TABLE                       9          1      19848
SYS             DEPENDENCY$                    TABLE                      10          1      20768
SYS             DEPENDENCY$                    TABLE                      11          1      21296
SYS             DEPENDENCY$                    TABLE                      12          1      21576
SYS             DEPENDENCY$                    TABLE                      13          1      21832
SYS             DEPENDENCY$                    TABLE                      14          1      22808
SYS             DEPENDENCY$                    TABLE                      15          1      23344
SYS             DEPENDENCY$                    TABLE                      16          1      24704
SYS             DEPENDENCY$                    TABLE                      17          1      45440
SYSMAN          PK_MGMT_METRIC_DEPENDENCY_DEF  INDEX                       0          2      14608
SYSMAN          MGMT_METRIC_DEPENDENCY_DEF     TABLE                       0          2      14600
 
54 rows selected.
 
SQL>


10gと11gのDEPENDENCY$、 I_DEPENDENCY1、I_DEPENDENCY2の意味は同じだが、処理法は異なるだけ。
今は11.2.0.3でi_dependency1失効をシミュレーションする。:

SYS@lunarp>alter index i_dependency1 unusable;
 
Index altered.
 
Elapsed: 00:00:00.42
SYS@lunarp>commit;
 
Commit complete.
 
Elapsed: 00:00:00.00
SYS@lunarp>



該当するalert.log情報は以下の通り:

Wed Mar 05 01:50:18 2014
Index SYS.I_DEPENDENCY1 or some [sub]partitions of the index have been marked unusable
SYS.I_DEPENDENCY1を無効とマークした。

データベースを起動してみよう:

SYS@lunarp>startup mount
Welcome Lunar's oracle world!
 
Love you , baby !
 
ORACLE instance started.
 
Total System Global Area  626327552 bytes
Fixed Size                  2230952 bytes
Variable Size             243271000 bytes
Database Buffers          373293056 bytes
Redo Buffers                7532544 bytes
Database mounted.
Welcome Lunar's oracle world!
 
Love you , baby !
 
SYS@lunarp>oradebug setmypid
Statement processed.
SYS@lunarp>alter session set db_file_multiblocK_read_count=1;
 
Session altered.
 
Elapsed: 00:00:00.00
SYS@lunarp>alter session set tracefile_identifier='lunar';
 
Session altered.
 
Elapsed: 00:00:00.01
SYS@lunarp>oradebug event 10046 trace name context forever,level 12;
Statement processed.
SYS@lunarp>oradebug tracefile_name
/u01/app/oracle/diag/rdbms/lunarp/lunarp/trace/lunarp_ora_8257_lunar.trc
SYS@lunarp>alter database open;   ----------ここに注意してください、直にopenしてください
 
Database altered.
 
Elapsed: 00:00:08.91
SYS@lunarp>oradebug event 10046 trace name context off
Statement processed.
SYS@lunarp>oradebug close_trace
Statement processed.
SYS@lunarp>


そうだ!この結果だ、11.2から、I_DEPENDENCY1に似ているindex失効になるとデータベースが起動できなくなる。
10.2でopen upgradeモードが必要としている。
今、このインディクスをリカバリする:

SYS@lunarp>select owner,table_name,index_name,tablespace_name,status from dba_indexes where table_name='DEPENDENCY$';
 
OWNER                          TABLE_NAME                     INDEX_NAME                     TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ------------------------------ ------------------------------ --------
SYS                            DEPENDENCY$                    I_DEPENDENCY2                  SYSTEM                         VALID
SYS                            DEPENDENCY$                    I_DEPENDENCY1                  SYSTEM                         UNUSABLE
 
Elapsed: 00:00:00.16
SYS@lunarp>alter index sys.I_DEPENDENCY1 rebuild online;
 
Index altered.
 
Elapsed: 00:00:02.76
SYS@lunarp>select owner,table_name,index_name,tablespace_name,status from dba_indexes where table_name='DEPENDENCY$';
 
OWNER                          TABLE_NAME                     INDEX_NAME                     TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ------------------------------ ------------------------------ --------
SYS                            DEPENDENCY$                    I_DEPENDENCY2                  SYSTEM                         VALID
SYS                            DEPENDENCY$                    I_DEPENDENCY1                  SYSTEM                         VALID
 
Elapsed: 00:00:00.00
SYS@lunarp>

注意 :11.2と10.2の間に、相違がある(どうでもいいですけど):11.2にまた余計なバイト“type#”を取っている:
select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_obj#, nvl(property,0),subname,type#,d_attrs
from dependency$ d, obj$ o where d_obj#=:1 and p_obj#=obj#(+) order by order#
では、11.2がなぜ直に起動できるか探ってみよう?
まずは、 I_DEPENDENCY1 が健全の時に、データベース起動に関する操作:

PARSING IN CURSOR #140636885644848 len=185 dep=1 uid=0 oct=3 lid=0 tim=1394010624511477 hv=1850944673 ad='850425a8' sqlid='3ktacv9r56b51'
select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_obj#, nvl(property,0),subname,type#,d_attrs from dependency$ d, obj$ o where d_obj#=:1 and p_obj#=obj#(+) order by order#
END OF STMT
PARSE #140636885644848:c=5999,e=20725,p=2,cr=41,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1394010624511472
BINDS #140636885644848:
 Bind#0
  oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00
  oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0
  kxsbbbfp=7fe8939c71e8  bln=22  avl=03  flg=05
  value=426
EXEC #140636885644848:c=1000,e=1100,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=4184428695,tim=1394010624512679
WAIT #140636885644848: nam='db file sequential read' ela= 4373 file#=1 block#=857 blocks=1 obj#=106 tim=1394010624517146
WAIT #140636885644848: nam='db file sequential read' ela= 299 file#=1 block#=858 blocks=1 obj#=106 tim=1394010624517612
FETCH #140636885644848:c=1000,e=4978,p=2,cr=2,cu=0,mis=0,r=0,dep=1,og=4,plh=4184428695,tim=1394010624517698
STAT #140636885644848 id=1 cnt=0 pid=0 pos=1 obj=0 op='SORT ORDER BY (cr=2 pr=2 pw=0 time=5006 us cost=0 size=0 card=0)'
STAT #140636885644848 id=2 cnt=0 pid=1 pos=1 obj=0 op='NESTED LOOPS OUTER (cr=2 pr=2 pw=0 time=4974 us)'
STAT #140636885644848 id=3 cnt=0 pid=2 pos=1 obj=104 op='TABLE ACCESS BY INDEX ROWID DEPENDENCY$ (cr=2 pr=2 pw=0 time=4956 us)'
STAT #140636885644848 id=4 cnt=0 pid=3 pos=1 obj=106 op='INDEX RANGE SCAN I_DEPENDENCY1 (cr=2 pr=2 pw=0 time=4936 us)'
STAT #140636885644848 id=5 cnt=0 pid=2 pos=2 obj=18 op='TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)'
STAT #140636885644848 id=6 cnt=0 pid=5 pos=1 obj=36 op='INDEX RANGE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)'
CLOSE #140636885644848:c=0,e=90,dep=1,type=0,tim=1394010624517803
BINDS #140636885393152:


この文を7回実行して、七回の実行計画も以上のとおり。
I_DEPENDENCY1はUNUSABLEの時に、その文が依然として、七回も実行したが、七回の実行計画も以下の通り: “TABLE ACCESS FULL DEPENDENCY$”。
これはoracle 11.2の2進数コードに判断の機能が増えたと意味している、I_DEPENDENCY1はUNUSABLEの時に自動的に実行計画を修正した:

select owner#,name,namespace,remoteowner,linkname,p_timestamp,p_obj#, 
  nvl(property,0),subname,type#,d_attrs 
from
 dependency$ d, obj$ o where d_obj#=:1 and p_obj#=obj#(+) order by order#
 
 
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       33      0.00       0.02          2         41          0           0
Execute     33      0.00       0.00          0          0          0           0
Fetch      127      0.11       0.55        285       8764          0          94
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total      193      0.12       0.58        287       8805          0          94
 
Misses in library cache during parse: 2
Misses in library cache during execute: 2
Optimizer mode: CHOOSE
Parsing user id: SYS   (recursive depth: 1)
Number of plan statistics captured: 7
 
Rows (1st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
         0          2          6  SORT ORDER BY (cr=263 pr=37 pw=0 time=42164 us cost=0 size=0 card=0)
         0          2          6   NESTED LOOPS OUTER (cr=263 pr=37 pw=0 time=41858 us)
         0          2          6    TABLE ACCESS FULL DEPENDENCY$ (cr=259 pr=37 pw=0 time=38319 us)
         0          2          6    TABLE ACCESS BY INDEX ROWID OBJ$ (cr=4 pr=1 pw=0 time=3497 us)
         0          2          6     INDEX RANGE SCAN I_OBJ1 (cr=3 pr=0 pw=0 time=995 us)(object id 36)


推測:11.2のコードに、ある判断が使えなくなった。データベースを起動するときに、DEPENDENCY$のようなテーブルのインディクスが無効になって、DEPENDENCY$に対して、全テーブルスキャンを実行する。

PRM-DUL UndeleteでDeleteされたOracleレコードrecord/rowsをリカバリする

有効な物理的/ロジカル バックアップがない場合に、Oracleでdelete誤操作が現れた時、flashbackあるいはlogminerログなどの技術でリカバリするのは一般的なやり方だが、多くの場合に、それらを応用しても、リカバリできない場合もある。

 

Delete操作に対して、Oracle底のデータブロックでrow piece記録は一般的にそのrow flagマークを削除されたとマークするだけ、後のINSERTの記録は削除されたとマークされたデータの構造を上書きする。

とにかく、これらのデータをリカバリできるかどうかはディスクにoracle blockの削除されたデータ行がクリンアップされたことによる。

クリンアップされた前のORACLE PRM-DULツールでこれらのデータをリカバリできる。具体的なステップは普通のデータディクショナリーモードとあまり相違がない。

PRM-DULを起動して、リカバリガイドとディクショナリーモードをクリックする。

 

 

prm-undelete1

prm-undelete2

 

 

 

prm-undelete4

prm-undelete5

 

すべてのoracleデータファイルを追加する。一時的なファイル、、TEMPFILE、UNDOデータファイル、制御ファイル、及びログファイルを追加する必要がない。

prm-undelete6

 

load ボタンをクリックして、PRMは自動的にデータディクショナリーをロードする。つまりbootstrap操作

 

prm-undelete7

ここで、PRMの左側にオブジェクトツリが現れる。リカバリしたいユーザーの該当するデータテーブルを選んで、オブジェクトを右クリックしてからunload deleted dataを選ぶ。

 

prm-undelete8

 

prm-undelete9

 

PRM-DUL は削除されたデータをリカバリ出来たら、そのデータをFile pathの位置に書き出す。例のデータリカバリ状況は以下の通り:

 

prm-undelete10

Oracle PRM-DUL are last chance methods

A tool 'PRM-DUL' was used to take table data and write it to a flat file,

more info about prm-dul http://www.parnassusdata.com/en


The customer had hardware/os failure last week that led to the crash of their 
database. The customer did not take a backup of their current situation at 
that time(so PRM-DUL is not not an option), because they were relying that their 
rman backup would be sufficient to recovery with. They also had a standby 
database we could have used PRM-DUL against or tried to force open to salvage 
data, but they deleted that as well without taking a backup and attempted to 
use restore a backup on. So all they have left is rman backups which is our 
current problem.



Customer DBA's must take down and manually recover production databases when 
there is corruption in the system tablespace. This process often requires 
advanced troubleshooting skills since orapatch or PRM-DUL are last chance methods 
 
for recovering databases. I cannot assume customers always have successful 
backup and recovery strategies.


From PRM-DUL, we found that there was no data in LOG_TABLE11 at 05:47.
According to the application logic, we expected that
 1) the LOG_TABLE11 should be truncated between 05:45 to 05:47
 2) NO data was inserted into the table until 05:50:00.
 3) NO update and delete on LOG_TABLE11.
 
Finally, we have extracted the data of LOG_TABLE11 at 05:53 by PRM-DUL.
The above rows have already disappeared in the table.
 
 


 An environment is using secure file. There is no backup due to customer
 ordering wrong hardware from Sun to perform the backup to. Customer tried
 to add 8 disks to the diskgroup. One of the disks added was slice2 which
 had the partition table for the disk on it. After the add failed and they
 realized what had happened they work with System Administrators and
 according to customer successfully switched slice2 and slice6. After this
 they used the disks to successfully create dummy diskgroup DATA3. The
 diskgroup has critical production data and it not mounting is causing the
 production database not to mount resulting in significant revenue loss for
 the company. As there presently is no backup of this data and they are
 using secure file PRM-DUL is not an option to extract the data from the failed
 diskgroup. The diskgroup will not mount because disks that were just added
 cannot be discovered. Last attempt by customer to use AMDU resulted in core
 dumps and no AMDU output. Customer is request that the existing disk
 headers for the disk be repaired so that they can get the diskgroup mounted
 and then add the correct disks to the diskgroup.
 
the database died, ct is using PRM-DUL and rebuild with consulting... after the
rebuild, ct will upgrade.



To salvage the data you either use PRM-DUL or clone the database and disable all events and block checking.You can then introduce corruptions but you can query the dataso you can use any method to salvage the data.

We advise to do this on a clone to protect you from unexpected side effects.



Finally customers had to abort the recovery process and then use PRM-DUL to
rebuild the database. 




诗檀软件成功使用PRM-DUL帮助用户恢复了IMPDP TABLE_EXISTS_ACTION=REPLACE覆盖的数据表

某化工所用户数据库在无归档、无备份的情况下由于业务人员误操作IMPDP 且加上了 TABLE_EXISTS_ACTION=REPLACE选项导致原数据表被覆盖,由于该系统无归档和物理备份故上述操作导致丢失了数个月的业务数据。 诗檀软件工程师Biot.wang在接到该case后,很快通过PRM-DUL工具定位到了被IMPDP+TABLE_EXISTS_ACTION=REPLACE覆盖后仍剩余的表数据的EXTENT,采用PRM-DUL特定的在字典模式下的EXTENT恢复模式,仅仅使用一个小时不到就找回了大部分数据。

 

对于此种IMPDP TABLE_EXISTS_ACTION=REPLACE 或者 TABLE_EXISTS_ACTION=TRUNCATE 覆盖的数据,一定要在第一时间将  TABLESPACE OFFLINE掉,或者将数据库实例SHUTDOWN,避免后续的恢复希望也因为进一步的空间分配而被彻底覆盖。 这个例子中较为幸运的是,覆盖的数据很少,几乎恢复了100%的数据。

 

prm-dul TABLE_EXISTS_ACTION=REPLACE truncate

 

 

 

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com

ORACLE PRM是诗檀软件独立研发的ORACLE数据库灾难恢复软件,其具有全程图形化界面、简单高效等特点。

欢迎下载使用ORACLE PRM。 下载地址:http://parnassusdata.com/sites/default/files/ParnassusData_PRMForOracle_3206.zip

PRM用户使用手册。http://www.parnassusdata.com/sites/default/files/ParnassusData%20Recovery%20Manager%20For%20Oracle%20Database%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C%20v0.3.pdf

 

 

详解ORA-00600[4097]错误

ORA-00600[4097]错误的一些案例如下:

Oracle内部错误:ORA-00600:[4097]一例

该ORA-00600[4097]错误从Oracle 7.3版本中被引入,遇到该错误一般说明Oracle在访问一个回滚段头rollback segment header时检查其事务是否已经被提交,但发现其相关的XID存在问题。这一般是因为回滚段存在损坏/讹误导致的。该错误属于内核Rollback回滚层。 其可能导致数据库无法打开或持续的报错,甚至于数据丢失。

ORA-00600[4097]错误的相关BUG如下:

 

13340388
11.2.0.3.3, 11.2.0.3.BP07, 12.1.0.0
ORA-600 [kzaxpopr14 -Error in decoding xml text] when querying V$XML_AUDIT_TRAIL

10249791 11.2.0.2.BP02,on DMLS referencing SECUREFILE plugged
11.2.0.2.7,
11.2.0.3, 12.1.0.0 11.1.0.7.4, 11.2.0.1.2, 11.2.0.2, 12.1.0.0 11.1.0.7.2, 11.2.0.1.1,
11.2.0.2, 12.1.0.0
7687856 11.2.0.1 5653641 11.2.0.1
ORA-600 [4097] / ORA-600 [4000] reported using transportable tablespaces
* 9145541
OERI[25027]/OERI[4097]/OERI[4000]/ORA- 1555 in plugged datafile after CREATE CONTROLFILE in 11g
OERI[4097] after using distributed 8565708 11.2.0.1.BP04,transactions in RAC
3613078
2628232
9.2.0.6,
ORA-600 [4000] from DML on transported ASSM tablespace
Corrupt dictionary from DROP TABLESPACE containing _offline_rollback_segments OERI[4097] from DML on TRANSPORTED tables with ASSM
Block corruption possible on temp files
ORA-600's from CR served block from a plugged in tablespace
OERI:4097 possible on objects in read only transported tablespace
Tru64: OERI:4097 possible on RAC / OPS
Drop of Rollback segments can cause OERI:4097 / missing data
10.1.0.3 3249755 9.2.0.5, 10.1.0.2 9.2.0.4,
10.1.0.2
8.1.7.4, 2165601 9.0.1.3, 9.2.0.1
P 1885251 * 427389
'*' against a bug indicates that an alert exists for that issue. '+' indicates a particularly notable bug.
'P' indicates a port specific bug.
'@' indicates UNPUBLISHED information
Fixed versions use "BPnn" to indicate Exadata bundle nn. "OERI:xxxx" may be used as shorthand for ORA-600 [xxxx].
9015PSE, 9.2.0.1 7.3.3.3, 7.3.4.0, 8.0.3.0

 

 

该问题可以通过patch或者重建rollback segment来起到修复的作用,如果该问题导致你的数据库无法打开了,可以联系诗檀软件Oracle Support帮忙解决。

 

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com

详解ORA-00600[4000]错误

相关的一些案例

Oracle数据恢复:解决ORA-00600:[4000] ORA-00704: bootstrap process failure错误一例

【Oracle数据恢复】ORA-00600[4000]错误解析

ORA-00600[4000][a]错误从Oracle 6.0开始被引入,其表示Oracle尝试从字典缓存中去定位一个undo segment number但却失败了。该错误属于内核事务UNDO。 该错误往往会导致数据库实例崩溃或无法OPEN Database。

 

其argument的含义为  Arg [a] Undo segment number  即回滚段号

早期版本中当使用表空间传输且对传输后的表有DML时可能因为BUG而引起该错误,可以参考文档1371820.8。

到9i以上如果遇到该ORA-00600[4000]错误,则一般是 存储/OS等断电或者故障导致Oracle的undo segment的损坏, 常见于没有正常关闭实例 之后打开数据的场景中。内存讹误也可能造成该问题。

若数据库确实无法打开 可以联系诗檀软件Oracle技术支持。

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com

以下是ORA-00600[4000]的BUG 列表:

 

NB Bug Fixed Description
16761566 11.2.0.4, 12.1.0.2, 12.2.0.0 Instance fails to start with ORA-600 [4000] [usn#]
13910190 11.2.0.3.BP15, 11.2.0.4, 12.1.0.1 ORA-600 [4000] from plugged in tablespace in Exadata
14741727 11.2.0.2.9, 11.2.0.2.BP19, 11.2.0.3.BP12, 11.2.0.3.BP13, 12.1.0.1 Fixes for bug 12326708 and 14624146 can cause problems – backout fix
+ 10425010 11.2.0.3, 12.1.0.1 Stale data blocks may be returned by Exadata FlashCache
* 9145541 11.1.0.7.4, 11.2.0.1.2, 11.2.0.2, 12.1.0.1 OERI[25027]/OERI[4097]/OERI[4000]/ORA-1555 in plugged datafile after CREATE CONTROLFILE in 11g
12353983 ORA-600 [4000] with XA in RAC
7687856 11.2.0.1 ORA-600 [4000] from DML on transported ASSM tablespace
2917441 11.1.0.6 OERI [4000] during startup
3115733 9.2.0.5, 10.1.0.2 OERI[4000] / index corruption can occur during index coalesce
2959556 9.2.0.5, 10.1.0.2 STARTUP after an ORA-701 fails with OERI[4000]
1371820 8.1.7.4, 9.0.1.4, 9.2.0.1 OERI:4506 / OERI:4000 possible against transported tablespace
+ 434596 7.3.4.2, 8.0.3.0 ORA-600[4000] from altering storage of BOOTSTRAP$

 

常见修复ORA-00600[4000]的手段包括使用ADJUST_SCN事件或者_MINIMUM_GIGA_SCN调整SCN,或者使用其他隐藏参数,或者对undo segment/ITL 使用BBED手动修改等。

 

 

详解ORA-00600[4194]错误

ORA-00600: internal error code, arguments: [4194], [71], [4], [], [], [], [], []

详解ORA-00600[4194]错误

该ORA-00600: 内部错误代码, 参数: [4194]错误我们之前有多次提过,

【Oracle数据恢复】通过BBED修复ORA-600[4193]和ORA-600[4194]的例子

【Oracle数据恢复】ORA-600[4194]错误一例

 

ORA-600[4194]内部错误一般由重做记录与回滚记录不匹配引发。Oracle在验证Undo record number时,会对比redo change 和回滚段中的undo record number,若发现2者存在差异则报该4194错误。其错误argument[a][b],a代表回滚块中的最大undo record number,b代表重做日志中记录的undo record number。这个错误可能由回滚段或者redo log日志文件讹误引起。

ORA-00600[4194]错误的根本原因是 redo记录与回滚段(rollback/undo)记录之间的不一致。当ORACLE在验证undo记录时相对应的变化需要应用到undo数据块的最大undo记录上,此时若检验出错则会报ORA-00600[4194]

 

ORA-600[4194]的2个的含义:

Arg [a] Maximum Undo record number in Undo block
Arg [b] Undo record number from Redo block

 

以上可以通过trace定位到可能存在触发该UNDO问题的数据块是rdba: 0x00c0111a (3/4378), 该问题一般可以通过设置EVENT、隐藏参数或BBED来修复。

 

 

 

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com

 

ORA-00600[4194]错误的相关bug列表如下:

NB

Bug

Fixed

Description

8240762

10.2.0.5, 11.1.0.7.10, 11.2.0.1

Undo corruptions with ORA-600 [4193]/ORA-600 [4194] or ORA-600 [4137] / SMON may spin to recover transaction

3210520

9.2.0.5, 10.1.0.2

OERI[kjccqmg:esm] / OERI[4194] / corruption possible in RAC

+

792610

8.0.6.0, 8.1.6.0

Rollback segment corruption OERI:4194 can occur if block checking detects a corrupt block

详解ORA-00600[4193]错误

详解ORA-00600[4193]错误,ORA-00600[4193]错误从版本ORACLE 6.0开始被引入,出现该ORA-00600报错的主要原因是Redo记录和Rollback(undo)回滚记录的不一致。当Oracle在验证Undo Block sequence号时对比相关block change的Redo Block中的sequence number时发现不符。该错误属于Oracle内核事务Undo管理层。

由于该错误的出现可能导致Oracle实例奔溃crash。

 

其2个Argument的含义为:

Arg [a] Undo 记录的sequence number

Arg [b] Redo记录的sequence number

例如:

ORA-00600: internal error code, arguments: [4193], [8023], [8068], [], [], [], [], []

通常该ORA-00600[4193]错误可能与rollback segment回滚段损坏/讹误有关。一般情况下Oracle建议通过备份恢复修复该问题,在实在没有备份的情况下可以通过手动来修复。

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com

ORA-00600[4193]错误相关的bug如下:

 

NB

Bug

Fixed

Description

14034244

11.2.0.3.BP09, 12.1.0.0

Lost write type corruption using ASM in 11.2.0.3

8240762

10.2.0.5, 11.1.0.7.10, 11.2.0.1

Undo corruptions with ORA-600 [4193]/ORA-600 [4194] or ORA-600 [4137] / SMON may spin to recover transaction

解决ORA-00600[2256]错误

解决ORA-00600[2256]错误,该错误的相关报错信息如下:
ORA-00600: internal error code, arguments: [2256], [0], [1073741824], [5], [40009], [], [], []

其中的多个argument的含义:

ora-600 [2256][0][1073741824][1][293672646]

ERROR:
ORA-600 [2256][a][b][c][d][e]

VERSIONS:
versions 7.3.X, 8.0.X, 8.1.X

DESCRIPTION:
This exception indicates that you attempted to ADJUST_SCN but the level
supplied would be less that the current SCN.

ARGUMENTS:
a. Requested SCN WRAP
b. Requested SCN BASE
c. Current SCN WRAP
d. Current SCN BASE = [293672646]

 

与ORA-00600[2662]错误类似  , 该错误主要通过合理推进系统SCN可以解决。

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638   QQ号:47079569    邮箱:service@parnassusdata.com

 

 

exp validate corruption volsize

nohup exp \'/ as sysdba\' file=/dev/null full=y buffer=60000000 log=/tmp/expdx.log volsize=3000g &

沪ICP备14014813号-2

沪公网安备 31010802001379号