【oralce数据库】oralce数据库恢复过程详解

时间:2020-03-14  来源:ling  阅读:

某客户的数据库出现崩溃,无法正常启动,经过我的远程紧急救援恢复之后,恢复正常,如下是简单的处理过程,供参考!

在open数据库时,发现无法打开,报错如下:


SMON: enabling cache recovery
ORA-01555 caused by SQL statement below (SQL ID: 4krwuz0ctqxdt, SCN: 0x0000.1d2be1e6):
select ctime, mtime, stime from obj$ where obj# = :1
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_20559.trc:
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 7 with name "_SYSSMU7_3286610060$" too small
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_20559.trc:
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 7 with name "_SYSSMU7_3286610060$" too small
Error 704 happened during db open, shutting down database
USER (ospid: 20559): terminating the instance due to error 704
Instance terminated by USER, pid = 20559
ORA-1092 signalled during: alter database open resetlogs...
opiodr aborting process unknown ospid (20559) as a result of ORA-1092
Mon Sep 28 21:03:41 2015
ORA-1092 : opitsk aborting process
 
对于上述错误,其实是比较常见的,大致上可以理解为Oracle在open 时需要进行一致性读的处理,却发现回滚段内容已经被覆盖,进而报错ora-01555,导致无法open。我们也可以发现,报错的SQL预计是Oracle 递归SQL,这是数据库在open时必须执行的SQL,很明显,该SQL无法执行成功,那么也就导致数据库无法正常打开。
处理思路很简单,首先我们要做的事情是通过10046 trace跟踪确认数据库在执行该SQL时访问了那些block,进而报错的?
通过oracle 10046 trace得到如下的内容:


=====================
PARSING IN CURSOR #4 len=70 dep=1 uid=0 oct=3 lid=0 tim=1443431294544569 hv=3377894161 ad="122f55f28" sqlid="32d4jrb4pd4sj"
select charsetid, charsetform from col$  where obj# = :1 and col# = :2
END OF STMT
PARSE #4:c=1000,e=226,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1443431294544569
=====================
PARSING IN CURSOR #5 len=52 dep=1 uid=0 oct=3 lid=0 tim=1443431294545488 hv=429618617 ad="121b18860" sqlid="4krwuz0ctqxdt"
select ctime, mtime, stime from obj$ where obj# = :1
END OF STMT
PARSE #5:c=0,e=217,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=1443431294545488
BINDS #5:
 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=7f1daaac1700  bln=22  avl=02  flg=05
  value=20
EXEC #5:c=0,e=421,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=1218588913,tim=1443431294545986
WAIT #5: nam="db file sequential read" ela= 9 file#=1 block#=337 blocks=1 obj#=36 tim=1443431294546059
WAIT #5: nam="db file sequential read" ela= 6 file#=1 block#=338 blocks=1 obj#=36 tim=1443431294546117
WAIT #5: nam="db file sequential read" ela= 6 file#=1 block#=241 blocks=1 obj#=18 tim=1443431294546166
=====================
PARSING IN CURSOR #6 len=142 dep=2 uid=0 oct=3 lid=0 tim=1443431294546497 hv=361892850 ad="123eebc48" sqlid="7bd391hat42zk"
select /*+ rule */ name,file#,block#,status$,user#,undosqn,xactsqn,scnbas,scnwrp,DECODE(inst#,0,NULL,inst#),ts#,spare1 from undo$ where us#=:1
END OF STMT
PARSE #6:c=0,e=292,p=0,cr=0,cu=0,mis=1,r=0,dep=2,og=3,plh=0,tim=1443431294546496
BINDS #6:
 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=7f1daaa2ebb8  bln=22  avl=02  flg=05
  value=10
EXEC #6:c=0,e=473,p=0,cr=0,cu=0,mis=1,r=0,dep=2,og=3,plh=906473769,tim=1443431294547061
WAIT #6: nam="db file sequential read" ela= 9 file#=1 block#=321 blocks=1 obj#=34 tim=1443431294547113
WAIT #6: nam="db file sequential read" ela= 7 file#=1 block#=225 blocks=1 obj#=15 tim=1443431294547169
FETCH #6:c=0,e=116,p=2,cr=2,cu=0,mis=0,r=1,dep=2,og=3,plh=906473769,tim=1443431294547196
STAT #6 id=1 cnt=1 pid=0 pos=1 obj=15 op="TABLE ACCESS BY INDEX ROWID UNDO$ (cr=2 pr=2 pw=0 time=0 us)"
STAT #6 id=2 cnt=1 pid=1 pos=1 obj=34 op="INDEX UNIQUE SCAN I_UNDO1 (cr=1 pr=1 pw=0 time=0 us)"
CLOSE #6:c=0,e=5,dep=2,type=0,tim=1443431294547246
WAIT #5: nam="db file sequential read" ela= 11 file#=3 block#=7344 blocks=1 obj#=0 tim=1443431294547284
=====================
PARSING IN CURSOR #6 len=142 dep=2 uid=0 oct=3 lid=0 tim=1443431294547411 hv=361892850 ad="123eebc48" sqlid="7bd391hat42zk"
select /*+ rule */ name,file#,block#,status$,user#,undosqn,xactsqn,scnbas,scnwrp,DECODE(inst#,0,NULL,inst#),ts#,spare1 from undo$ where us#=:1
END OF STMT
PARSE #6:c=0,e=22,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=3,plh=906473769,tim=1443431294547411
BINDS #6:
 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=7f1daaa2ebb8  bln=22  avl=02  flg=05
  value=7
EXEC #6:c=0,e=47,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=3,plh=906473769,tim=1443431294547514
FETCH #6:c=0,e=95,p=0,cr=2,cu=0,mis=0,r=1,dep=2,og=3,plh=906473769,tim=1443431294547630
STAT #6 id=1 cnt=1 pid=0 pos=1 obj=15 op="TABLE ACCESS BY INDEX ROWID UNDO$ (cr=2 pr=0 pw=0 time=0 us)"
STAT #6 id=2 cnt=1 pid=1 pos=1 obj=34 op="INDEX UNIQUE SCAN I_UNDO1 (cr=1 pr=0 pw=0 time=0 us)"
CLOSE #6:c=0,e=4,dep=2,type=0,tim=1443431294547678
WAIT #5: nam="db file sequential read" ela= 8 file#=3 block#=552 blocks=1 obj#=0 tim=1443431294547710
FETCH #5:c=1999,e=1938,p=7,cr=9,cu=0,mis=0,r=0,dep=1,og=4,plh=1218588913,tim=1443431294547945
STAT #5 id=1 cnt=0 pid=0 pos=1 obj=18 op="TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)"
STAT #5 id=2 cnt=1 pid=1 pos=1 obj=36 op="INDEX RANGE SCAN I_OBJ1 (cr=2 pr=2 pw=0 time=0 us)"
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 7 with name "_SYSSMU7_3286610060$" too small
ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00604: error occurred at recursive SQL level 1
ORA-01555: snapshot too old: rollback segment number 7 with name "_SYSSMU7_3286610060$" too small
 
 
根据我们常见的处理思路,将上述访问的block中的事务状态改成8000之后,发现仍然报错。我们仔细来对比下block中的scn与报错的scn信息,发现了其中的关系,如下:

BBED> p ktbbh
struct ktbbh, 48 bytes                      @20
。。。。。
   struct ktbbhitl[0], 24 bytes             @44
      struct ktbitxid, 8 bytes              @44
         ub2 kxidusn                        @44       0x000a
         ub2 kxidslt                        @46       0x0019
         ub4 kxidsqn                        @48       0x00071d47
      struct ktbituba, 8 bytes              @52
         ub4 kubadba                        @52       0x00c01cb0
         ub2 kubaseq                        @56       0x2c95
         ub1 kubarec                        @58       0x15
      ub2 ktbitflg                          @60       0x8000 (KTBFCOM)
      union _ktbitun, 2 bytes               @62
         b2 _ktbitfsc                       @62       0
         ub2 _ktbitwrp                      @62       0x0000
      ub4 ktbitbas                          @64       0x1d2be6ea
 
 
将上述的scn bas值转换为10 进制后为:489416426,我们再来查询下数据库文件头的scn:

SQL> select file#,checkpoint_change# from v$datafile_header;
 
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1          489415139
         2          489415139
         3          489415139
         4          489415139

我们不难发现,报错的block中的scn比数据文件头的scn要大,其次也比前面报错的的scn:1d2be1e6 (转换后为 489415142)要大一些。这说明什么?
当数据库处于running的情况之下,Oracle 不知道下一个时间点事务什么时间结束,因此也不知道下一个时间点的scn是多少,所以其对应的scn 往往要比当前的大一些。当数据库crash后,加上undo损坏,那么很容易出现这样的情况。
所以,我们这要做的事情,很简单,将上述scn 修改得比报错的scn小一些(或者等于),则可以解决该错误。


SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [2662], [0], [489415146], [0],
[489416426], [4194545], [], [], [], [], [], []
Process ID: 22192
Session ID: 66 Serial number: 1

修改之后,再次启动数据库,发现报错发生了变化,查看此时的alert log,发现信息如下:


Thread 1 opened at log sequence 1
  Current log# 1 seq# 1 mem# 0: /data/oradata/orcl/redo01.log
Successful open of redo thread 1
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Mon Sep 28 21:17:17 2015
SMON: enabling cache recovery
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_22192.trc  (incident=128561):
ORA-00600: internal error code, arguments: [2662], [0], [489415146], [0], [489416426], [4194545], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_128561/orcl_ora_22192_i128561.trc
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_22192.trc:
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [2662], [0], [489415146], [0], [489416426], [4194545], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_22192.trc:
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [2662], [0], [489415146], [0], [489416426], [4194545], [], [], [], [], [], []
Error 704 happened during db open, shutting down database
USER (ospid: 22192): terminating the instance due to error 704
Instance terminated by USER, pid = 22192
ORA-1092 signalled during: alter database open resetlogs...
opiodr aborting process unknown ospid (22192) as a result of ORA-1092

很明显,这是scn的问题,要处理也很简单,通过推进scn即可解决掉。通过推进scn之后,发现打开数据库时,还是报错了,但是错误再一次发生了改变:


*********************************************************************
Database Characterset is ZHS16GBK
No Resource Manager plan active
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x41CE1144] [PC:0x2297740, kgegpa()+40] [flags: 0x0, count: 1]
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x41CE1144] [PC:0x229596B, kgebse()+279] [flags: 0x2, count: 2]
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x41CE1144] [PC:0x229596B, kgebse()+279] [flags: 0x2, count: 2]
Mon Sep 28 21:25:01 2015
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_p000_23736.trc  (incident=132169):
ORA-00600: internal error code, arguments: [6006], [1], [], [], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_132169/orcl_p000_23736_i132169.trc
Mon Sep 28 21:25:03 2015
PMON (ospid: 23582): terminating the instance due to error 397
Instance terminated by PMON, pid = 23582

这次过程处理起来就很简单了,通过屏蔽undo就可以很容易解决掉。其次在后续的恢复过程中,还遇到了如下的一些错误:


Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j004_27644.trc  (incident=137080):
ORA-00600: internal error code, arguments: [4097], [9], [7], [63399], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_137080/orcl_j004_27644_i137080.trc
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j004_27644.trc  (incident=137081):
ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], [], [], [], [], []
ORA-00600: internal error code, arguments: [4097], [9], [7], [63399], [], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_137081/orcl_j004_27644_i137081.trc
Mon Sep 28 22:00:10 2015
Trace dumping is performing id=[cdmp_20150928220010]
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j004_27644.trc  (incident=137082):
ORA-00600: internal error code, arguments: [4097], [9], [7], [63399], [], [], [], [], [], [], [], []
ORA-06512: at "SYS.DBMS_STATS", line 26392
Incident details in: /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_137082/orcl_j004_27644_i137082.trc
Trace dumping is performing id=[cdmp_20150928220011]

这部分错误处理起来都相对简单的多。【4097】也是回滚段的问题,在处理undo时,可以一并处理之。我博客之前就写了该错误的处理案例,这里不再累述。这种恢复场景,最后打开数据库后一般还会有如下的错误:


Mon Sep 28 22:10:57 2015
Sweep [inc][141951]: completed
Sweep [inc2][141951]: completed
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29255.trc  (incident=141952):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Trace dumping is performing id=[cdmp_20150928221057]
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29255.trc  (incident=141953):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29255.trc  (incident=141954):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29255.trc  (incident=142843):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29255.trc  (incident=142844):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29255.trc  (incident=142845):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_29255.trc  (incident=142846):
ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []
Mon Sep 28 22:11:00 2015

最后这个错误处理起来十分简单,通过重建index即可解决上述错误,对于大量的 日志,建议直接grep,然后重建相关index即可。


[root@db2 ~]# cat /u01/app/oracle/diag/rdbms/orcl/orcl/incident/incdir_132169/orcl_p000_23736_i132169.trc |grep obj:
        dbwrid: 0 obj: 5777 objn: 5777 tsn: 1 afn: 2 hint: f
 seg/obj: 0x1691  csc: 0x00.1d2be90f  itc: 2  flg: E  typ: 2 - INDEX
  dbwrid: 0 obj: 37 objn: 37 tsn: 0 afn: 1 hint: f
 。。。。。
 seg/obj: 0x1692  csc: 0x00.1d2be8f1  itc: 2  flg: E  typ: 1 - DATA
  dbwrid: 1 obj: 36 objn: 36 tsn: 0 afn: 1 hint: f
 seg/obj: 0x24  csc: 0x00.1ca4ab69  itc: 1  flg: -  typ: 2 - INDEX
  dbwrid: 0 obj: 36 objn: 36 tsn: 0 afn: 1 hint: f
 seg/obj: 0x24  csc: 0x00.16f03  itc: 2  flg: -  typ: 2 - INDEX
  dbwrid: 0 obj: 5777 objn: 5777 tsn: 1 afn: 2 hint: f
 seg/obj: 0x1691  csc: 0x00.1d2be90f  itc: 2  flg: E  typ: 2 - INDEX
  dbwrid: 1 obj: 5777 objn: 5777 tsn: 1 afn: 2 hint: f
 seg/obj: 0x1691  csc: 0x00.1d2baac0  itc: 1  flg: E  typ: 2 - INDEX

最后通过mos的脚本来check 数据字典是否存在异常,这样就可以确保数据库起码可以正常运行。如下是检测结果:


SQL> exec hcheck.full
H.Check Version 9i+/hc3.50
---------------------------------------
Catalog Version 11.2.0.1.0 (1102000100)
---------------------------------------
 
                                   Catalog       Fixed
Procedure Name                     Version    Vs Release      Run
------------------------------ ... ---------- -- ----------   ---
.- SynLastDDLTim               ... 1102000100 >  1001000200 : n/a
.- LobNotInObj                 ... 1102000100 >  1000000200 : n/a
.- MissingOIDOnObjCol          ... 1102000100 <=  *All Rel* : Ok
.- SourceNotInObj              ... 1102000100 >  1002000100 : n/a
.- IndIndparMismatch           ... 1102000100 <= 1102000100 : Ok
.- InvCorrAudit                ... 1102000100 <= 1102000100 : Ok
.- OversizedFiles              ... 1102000100 <=  *All Rel* : Ok
.- TinyFiles                   ... 1102000100 >   900010000 : n/a
.- PoorDefaultStorage          ... 1102000100 <=  *All Rel* : Ok
.- PoorStorage                 ... 1102000100 <=  *All Rel* : Ok
.- MissTabSubPart              ... 1102000100 >   900010000 : n/a
.- PartSubPartMismatch         ... 1102000100 <= 1102000100 : Ok
.- TabPartCountMismatch        ... 1102000100 <=  *All Rel* : Ok
.- OrphanedTabComPart          ... 1102000100 >   900010000 : n/a
.- ZeroTabSubPart              ... 1102000100 >   902000100 : n/a
.- MissingSum$                 ... 1102000100 <=  *All Rel* : Ok
.- MissingDir$                 ... 1102000100 <=  *All Rel* : Ok
.- DuplicateDataobj            ... 1102000100 <=  *All Rel* : Ok
.- ObjSynMissing               ... 1102000100 <=  *All Rel* : Ok
.- ObjSeqMissing               ... 1102000100 <=  *All Rel* : Ok
.- OrphanedUndo                ... 1102000100 <=  *All Rel* : Ok
.- OrphanedIndex               ... 1102000100 <=  *All Rel* : Ok
.- OrphanedIndexPartition      ... 1102000100 <=  *All Rel* : Ok
.- OrphanedIndexSubPartition   ... 1102000100 <=  *All Rel* : Ok
.- OrphanedTable               ... 1102000100 <=  *All Rel* : Ok
.- OrphanedTablePartition      ... 1102000100 <=  *All Rel* : Ok
.- OrphanedTableSubPartition   ... 1102000100 <=  *All Rel* : Ok
.- MissingPartCol              ... 1102000100 <=  *All Rel* : Ok
.- OrphanedSeg$                ... 1102000100 <=  *All Rel* : Ok
.- OrphanedIndPartObj#         ... 1102000100 >  1101000600 : n/a
.- DuplicateBlockUse           ... 1102000100 <=  *All Rel* : Ok
.- HighObjectIds               ... 1102000100 >   801060000 : n/a
.- PQsequence                  ... 1102000100 >   800060000 : n/a
.- TruncatedCluster            ... 1102000100 >   801070000 : n/a
.- FetUet                      ... 1102000100 <=  *All Rel* : Ok
.- Uet0Check                   ... 1102000100 <=  *All Rel* : Ok
.- ExtentlessSeg               ... 1102000100 <=  *All Rel* : Ok
.- SeglessUET                  ... 1102000100 <=  *All Rel* : Ok
.- BadInd$                     ... 1102000100 <=  *All Rel* : Ok
.- BadTab$                     ... 1102000100 <=  *All Rel* : Ok
.- BadIcolDepCnt               ... 1102000100 >  1101000700 : n/a
.- WarnIcolDep                 ... 1102000100 >  1101000700 : n/a
.- OnlineRebuild$              ... 1102000100 <=  *All Rel* : Ok
.- DropForceType               ... 1102000100 >  1001000200 : n/a
.- TrgAfterUpgrade             ... 1102000100 <=  *All Rel* : Ok
.- FailedInitJVMRun            ... 1102000100 <=  *All Rel* : Ok
.- TypeReusedAfterDrop         ... 1102000100 >   900010000 : n/a
.- Idgen1$TTS                  ... 1102000100 >   900010000 : n/a
.- DroppedFuncIdx              ... 1102000100 >   902000100 : n/a
.- BadOwner                    ... 1102000100 >   900010000 : n/a
.- UpgCheckc0801070            ... 1102000100 <=  *All Rel* : Ok
.- BadPublicObjects            ... 1102000100 <=  *All Rel* : Ok
.- BadSegFreelist              ... 1102000100 <=  *All Rel* : Ok
.- BadCol#                     ... 1102000100 >  1001000200 : n/a
.- BadDepends                  ... 1102000100 <=  *All Rel* : Ok
.- CheckDual                   ... 1102000100 <=  *All Rel* : Ok
.- ObjectNames                 ... 1102000100 <=  *All Rel* : Ok
.- BadCboHiLo                  ... 1102000100 <=  *All Rel* : Ok
.- ChkIotTs                    ... 1102000100 <=  *All Rel* : Ok
.- NoSegmentIndex              ... 1102000100 <=  *All Rel* : Ok
.- BadNextObject               ... 1102000100 <=  *All Rel* : Ok
.- OrphanIndopt                ... 1102000100 >   902000800 : n/a
.- UpgFlgBitTmp                ... 1102000100 >  1001000100 : n/a
.- RenCharView                 ... 1102000100 >  1001000100 : n/a
.- Upg9iTab$                   ... 1102000100 >   902000400 : n/a
.- Upg9iTsInd                  ... 1102000100 >   902000500 : n/a
.- Upg10gInd$                  ... 1102000100 >  1002000000 : n/a
.- DroppedROTS                 ... 1102000100 <=  *All Rel* : Ok
.- ChrLenSmtcs                 ... 1102000100 >  1101000600 : n/a
.- FilBlkZero                  ... 1102000100 <=  *All Rel* : Ok
.- DbmsSchemaCopy              ... 1102000100 <=  *All Rel* : Ok
 
Found 0 potential problem(s) and 0 warning(s)
 
PL/SQL procedure successfully completed.
我们可以发现,至少通过Oracle mos的脚本检查之后,没有数据字典有问题。

【oralce数据库】oralce数据库恢复过程详解

http://m.bbyears.com/shujuku/87080.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新