数据库升级造成的X_$BH状态异常问题
上一篇 / 下一篇 2008-01-18 23:45:46 / 个人分类:ORACLE
同事对一个测试库执行了升级操作,将9204数据库升级到了10201,升级后发现X_$BH和X_$KCBWDS视图状态不正确。
由于升级的时候没有参考Metalink的文档,而是直接使用DBUA升级造成了X_$BH和X_$KCBWDS的状态异常。其实造成这个问题的原因还是DBUA造成的。
先看一下问题:
SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS
}SM-xp0 2 WHERE WNER = 'SYS'ITPUB个人空间M(q*w9B dK6[ w
V
3 AND STATUS = 'INVALID';
OWNER OBJECT_NAME OBJECT_TYPE
y\!y/]^mfrn Y0------------------------------ ------------------------------ -------------------ITPUB个人空间?fP2KZ
SYS X_$BH VIEWITPUB个人空间e9g$]-b%C'aY-{D
SYS X_$KCBWDS VIEW
创始直接编译对象:
SQL> ALTER VIEW X_$BH COMPILE;
警告:更改的视图带有编译错误。
SQL> SHOW ERRITPUB个人空间 C [Thuu t
没有错误。
也没有错误信息,检查一下视图的定义,并对比X$BH表结构,发现了异常:
SQL> SELECT TEXT FROM DBA_VIEWS WHERE VIEW_NAME = 'X_$BH';
TEXTITPUB个人空间f~5}2HEf&p
--------------------------------------------------------------------------------ITPUB个人空间\NW"``
SELECT "ADDR","INDX","INST_ID","HLADDR","BLSIZ","NXT_HASH","PRV_HASH","NXT_REPL"ITPUB个人空间N3y_5]~]@2Hp$F
,"PRV_REPL","FLAG","LRU_FLAG","TS#","FILE#","DBARFIL","DBABLK","CLASS","STATE","
|T(h~2L,e`0MODE_HELD","CHANGES","CSTATE","X_TO_NULL","FORCED_READS","FORCED_WRITES","LE_ADD
}K@1qe(y0R","DIRTY_QUEUE","SET_DS","OBJ","BA","CR_SCN_BAS","CR_SCN_WRP","CR_XID_USN","CR_
PfnmI;S;l3w{0XID_SLT","CR_XID_SQN","CR_UBA_FIL","CR_UBA_BLK","CR_UBA_SEQ","CR_UBA_REC","CR_SFITPUB个人空间dG3e9i"x
L","LRBA_SEQ","LRBA_BNO","HSCN_BAS","HSCN_WRP","HSUB_SCN","RRBA_SEQ","RRBA_BNO",
(E n&Q0vl6s0"US_NXT","US_PRV","WA_NXT","WA_PRV","TCH","TIM" FROM X$BH
ITPUB个人空间+B-W;|!gT [
SQL> DESC X$BHITPUB个人空间p6N8lz@+z
名称 是否为空?类型
/|dj5b)E7L!S0 ----------------------------- -------- -----------ITPUB个人空间j3l`6bW$a
ADDR RAW(8)ITPUB个人空间PT{3b,vd4v
INDX NUMBERITPUB个人空间7Vn
Z"ju)`
INST_ID NUMBERITPUB个人空间ZdYS{.W+h1YK
HLADDR RAW(8)
YuES(A:s+v5P0 BLSIZ NUMBER
3j.o
diP)~0 NXT_HASH RAW(8)
Y7j!H2Rf `N4Do"M0 PRV_HASH RAW(8)
}'Vz\(K9VR0 NXT_REPL RAW(8)
*g$M3bU
_E&{k0 PRV_REPL RAW(8)ITPUB个人空间+rIVJ!['DN
FLAG NUMBER
UisiI
e)US0 RFLAG NUMBERITPUB个人空间#hzgX)b!~l
_iH
SFLAG NUMBERITPUB个人空间'@t,`]bb+U
LRU_FLAG NUMBER
h"C},MR#G"ak0 TS# NUMBER
p;H3h^h;tz0Pw0 FILE# NUMBER
,hh&M-wL(kt0 DBARFIL NUMBER
p~|gX$y1B,do.l&vm0 DBABLK NUMBERITPUB个人空间Vgg2b*iFz!S3l
CLASS NUMBERITPUB个人空间y^2zmL C5T
STATE NUMBERITPUB个人空间7Z8[ g9J3s
y3c,eL
MODE_HELD NUMBERITPUB个人空间D\m3Kb/V
CHANGES NUMBERITPUB个人空间b:\,{W4R_ik
CSTATE NUMBER
"j HJ
@8_0 LE_ADDR RAW(8)
k&j,K:He'}V5T6Y s0 DIRTY_QUEUE NUMBER
Bi;[2`(V&ODt!T0 SET_DS RAW(8)ITPUB个人空间kS9e[)jk"fq_
OBJ NUMBERITPUB个人空间w'p
GE6@~
BA RAW(8)
;R:~x0AA7O/wa Dn
WW0 CR_SCN_BAS NUMBERITPUB个人空间ec*cT"u
CR_SCN_WRP NUMBERITPUB个人空间
[%uuX0nN0^ |DyD
CR_XID_USN NUMBER
dOsXs-r,A0 CR_XID_SLT NUMBERITPUB个人空间![jG8|/U
CR_XID_SQN NUMBERITPUB个人空间6}1g.g~'I,zd@
CR_UBA_FIL NUMBER
q+` L5mC*~Z$bq0C'S-}([H0 CR_UBA_BLK NUMBERITPUB个人空间-h,q I+?x6T
CR_UBA_SEQ NUMBERITPUB个人空间#K&x6lGik!Q
CR_UBA_REC NUMBER
t6A f#HZj:r;JC0 CR_SFL NUMBERITPUB个人空间a|il3q
CR_CLS_BAS NUMBER
w G9f$XA0FIbJ0 CR_CLS_WRP NUMBER
'HX}i+N0 LRBA_SEQ NUMBER
tHH\rG0 LRBA_BNO NUMBERITPUB个人空间ZgRz:Jd,l
HSCN_BAS NUMBERITPUB个人空间.u"SK0J0EHnF
HSCN_WRP NUMBER
Zl+j%m"up0 HSUB_SCN NUMBER
Gl,x1C[f3ARl0 US_NXT RAW(8)ITPUB个人空间(]+R Yh^2L N
[
US_PRV RAW(8)
D`zfOB8dW.X-a0 WA_NXT RAW(8)
.Mj'?&ul.FW0 WA_PRV RAW(8)ITPUB个人空间M4iNHL}
OBJ_FLAG NUMBERITPUB个人空间8]/X1g7p)Tg^!Y^4}q,uy
TCH NUMBER
u-GL$Z{T(|'w{'_0 TIM NUMBER
从表结果上可以看到
查询metalink文档,发现需要在升级前将这些视图删除掉,否则会造成数据字典异常。
而Oracle提供的解决方法是删除问题视图。先声明一点下面的操作Oracle要求必须在技术支持的指导下来完成。本人不对下面的操作负责,不要在没有Oracle技术支持的情况下对正式环境执行下面的操作:
$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on星期三12月26 13:35:14 2007
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ITPUB个人空间3z.bRi_:N
连接到:ITPUB个人空间/_K})@*Nr
P
Oracle Database
O%M2BGdt,\&T0With the Partitioning, OLAP and Data Mining options
SQL> SHUTDOWN IMMEDIATEITPUB个人空间F\Q$J y{E
数据库已经关闭。ITPUB个人空间'GL"x)X D
已经卸载数据库。
jl:FJ2E e9H!k0ORACLE例程已经关闭。ITPUB个人空间
mQ2m.Z*gK;m9I
SQL> STARTUP RESTRICT
|!T^V6ruG
v"zh5w+H|0ORACLE例程已经启动。
Total System Global Area 5083496448 bytes