建站服務(wù)器
現(xiàn)象描述ITPUB個(gè)人空間O Q9g.B,c/j
操作系統(tǒng):OracleEnterprise Linux 5.5ITPUB個(gè)人空間z7f$Lu#\\f V
數(shù)據(jù)庫:oracle 10.2.0.4 RAC+ASM
%r*T4a9[x8Zd)^%iC27042095進(jìn)入到DB數(shù)據(jù)庫實(shí)例中,查詢v$asm_disk視圖中的header_status狀態(tài)為UNKNOWN。
SQL> select group_number, name, mount_status, header_status from v$asm_disk where group_number in (1,2);
GROUP_NUMBER NAME MOUNT_STATUS HEADER_STATU
G+s zs|*rcQo27042095------------ ------------------------------ ----------- ------------
;^MN+l:R!E x N0J27042095 1 DG_DATA_0000 OPENED UNKNOWN
1~ O.D*} _b#o27042095 2 VOLK OPENED UNKNOWN
ITPUB個(gè)人空間D\']*n8AWl
進(jìn)入到asm實(shí)例中,查詢v$asm_disk視圖中的 header_status狀態(tài)為MEMBER。
q^4Ey@\'l6N27042095SQL> select group_number, name, mount_status, header_status from v$asm_disk where group_number in (1,2);
GROUP_NUMBER NAME MOUNT_STATUS HEADER_STATUS
^ r2|@!H!dw.[27042095------------ -------------------- -------------- ------------------------
w_$AVz.K\'T9h37042095 1 DG_DATA_0000 CACHED MEMBER
.BAH ? H W5?+R27042095 2 VOLK CACHED MEMBER
可以看到,此視圖在asm實(shí)例和db 實(shí)例中都能查詢到。在這兩個(gè)視圖中看到的HEADER_STATUS是不一樣的。
GU\'p \\hF27042095db 實(shí)例 中header_status返回 UNKNOWNITPUB個(gè)人空間E;B1^Z&}3?y\\
asm實(shí)例 中header_status返回MEMBER
M`b%~/|O3J27042095另外,mount_status的值分別為“OPENED”和“CACHED”,本文就不分析了,思路相同。
分析過程
我們看看官方文檔對 v$asm_disk中的字段header_status的說明:ITPUB個(gè)人空間? i:Ns X q
http://docs.oracle.com/cd/E11882_01/server.112/e17110/dynviews_1024.htm
UNKNOWN - Automatic Storage Management disk header has not been read
MEMBER - Disk is a member of an existing disk group. No attempt should be made to add the disk to a different disk group. The ALTER DISKGROUP statement will reject such an addition unless overridden with the FORCE option.
再看一下這個(gè)視圖在ASM實(shí)例和DB實(shí)例中各自的的作用及區(qū)別:
http://docs.oracle.com/cd/E11882_01/server.112/e17110/dynviews_1024.htm
接下來,我們看看這兩個(gè)v$asm_disk在內(nèi)部是不是相同的,來朧去脈如何?
1、首先檢查db和asm實(shí)例中的 v$asm_disk視圖的結(jié)構(gòu)信息是否相同
--db實(shí)例
[oracle@rac1 ~]$ export ORACLE_SID=racdb1ITPUB個(gè)人空間s m6b U#aR T \\o
[oracle@rac1 ~]$ sqlplus /as sysdba
[oracle@rac1 ~]$ sqlplus /as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Feb 15 23:08:51 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
ITPUB個(gè)人空間 W-a;f A\\&a I&|
Connected to:ITPUB 個(gè)人空間v2eU4_:av
Oracle Database 10gEnterprise Edition Release 10.2.0.4.0 - ProductionITPUB個(gè)人空間$V)MQj n;s
With the Partitioning, Real Application Clusters, OLAP, Data Mining
*c7L@-BU o+k27042095and Real Application Testing options
SQL> desc v$asm_disk;
K\'P0] Sqr27042095Name Null? TypeITPUB個(gè)人空間?_Mv/d
----------------------------------------- -------- ----------------------------
)x Q5XI^(_27042095GROUP_NUMBER NUMBERITPUB個(gè)人空間Wz+so,G
DISK_NUMBER NUMBER
$w1JP7e9i F5\\27042095COMPOUND_INDEX NUMBER
8e#{.B3H_wz!n c27042095INCARNATION NUMBER
lL%d^9~/R,FC d@27042095MOUNT_STATUS VARCHAR2(7)ITPUB個(gè)人空間_TF Op#D*xo
HEADER_STATUS VARCHAR2(12)ITPUB個(gè)人空間s2n z P)X{)n2U(P.S-_
MODE_STATUS VARCHAR2(7)
2C-fa\\$]O27042095STATE VARCHAR2(8)
7B,bi1I,WKF-_27042095REDUNDANCY VARCHAR2(7)ITPUB個(gè)人空間bS \\yl(KK
LIBRARY VARCHAR2(64)ITPUB個(gè)人空間9l3OjPm
TOTAL_MB NUMBER
*V2JQJ(XKy;F D27042095FREE_MB NUMBER
cAe|1D`27042095NAME VARCHAR2(30)
mL0ro%P \\b@b8n27042095FAILGROUP VARCHAR2(30)ITPUB個(gè)人空間h`Vg)b[U9{_
LABEL VARCHAR2(31)
\'Q/g.|,z]9o P27042095PATH VARCHAR2(256)ITPUB個(gè)人空間9h2F-`2nYlz
UDID VARCHAR2(64)
s}MlIv mAN!rc27042095PRODUCT VARCHAR2(32)ITPUB個(gè)人空間kb2N j8b1R1\\b oa
CREATE_DATE DATE
$sa kHo3Z27042095MOUNT_DATE DATE
#~kg-k/}$Y IA27042095REPAIR_TIMER NUMBER
;zR z3p?7U0T[-Yu27042095READS NUMBERITPUB個(gè)人空間$} x?~ @2L*u9[I
WRITES NUMBERITPUB個(gè)人空間6w\'L,U3J/\\n(j
READ_ERRS NUMBER
P \\ ^I2D27042095WRITE_ERRS NUMBER
&JDs&pyt27042095READ_TIME NUMBERITPUB個(gè)人空間sS Oa8k@
WRITE_TIME NUMBERITPUB個(gè)人空間u,br0D/oI U)Q�C
BYTES_READ NUMBER
q/Y1V!W+A;Dj27042095BYTES_WRITTEN NUMBER
--asm實(shí)例:ITPUB 個(gè)人空間*JK ?Is6@1@ X V`\'r
[oracle@rac1 ~]$ export ORACLE_SID=+ASM1
sAy&Ef S d27042095[oracle@rac1 ~]$ sqlplus /as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Feb 15 23:08:26 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
ITPUB個(gè)人空間aG#HUc
Connected to:ITPUB個(gè)人空間KB?KzDh(B~
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - ProductionITPUB個(gè)人空間m z._w4vZp`
With the Partitioning, Real Application Clusters, OLAP, Data MiningITPUB個(gè)人空間Qjo.aq[c
and Real Application Testing options
SQL> desc v$asm_disk;ITPUB個(gè)人空間9|/ia3sR:^h%q
Name Null? Type
/DS%AS5M#LH3S*?27042095----------------------------------------- -------- ----------------------------
8WY1ZMO6GlH~*g27042095GROUP_NUMBER NUMBER
d*{K_zB#_;x0s27042095DISK_NUMBER NUMBERITPUB個(gè)人空間qX1S X�Fl`\'cp
COMPOUND_INDEX NUMBER
R2M1bZi c2EF27042095INCARNATION NUMBER
/Qx @ sN*b%UxD27042095MOUNT_STATUS VARCHAR2(7)
2LAkF~$YM6p27042095HEADER_STATUS VARCHAR2(12)ITPUB個(gè)人空間0l`x?:~%`t`
MODE_STATUS VARCHAR2(7)ITPUB個(gè)人空間 iBm_%?$J;_Wkf
STATE VARCHAR2(8)
O#RX:Qm[6C27042095REDUNDANCY VARCHAR2(7)ITPUB個(gè)人空間+B-d0aB E\'x]
LIBRARY VARCHAR2(64)ITPUB個(gè)人空間 ^L[Q|.i~
TOTAL_MB NUMBERITPUB個(gè)人空間,A5TU\'sWo(H
FREE_MB NUMBER
o&B#w|7xA(H |2^27042095NAME VARCHAR2(30)
w._e;Lyw|27042095FAILGROUP VARCHAR2(30)ITPUB個(gè)人空間Il {5vd!J:GO
LABEL VARCHAR2(31)
Nz_7Rf$C f1K+[%Z27042095PATH VARCHAR2(256)ITPUB個(gè)人空間\\ h-y)V9k([3D|%R
UDID VARCHAR2(64)ITPUB個(gè)人空間~ n5K;pC Ag gy^
PRODUCT VARCHAR2(32)ITPUB個(gè)人空間7Z)hT)o*S {^
CREATE_DATE DATEITPUB個(gè)人空間7KpBA Z
MOUNT_DATE DATEITPUB個(gè)人空間![,}mD9@ Qz{
REPAIR_TIMER NUMBER
M5\\+K fO8b27042095READS NUMBERITPUB個(gè)人空間:SkF?/S*j!sY M
WRITES NUMBERITPUB個(gè)人空間0P6aa,o6^%g%\\
READ_ERRS NUMBER
4G+t U D,m%l27042095WRITE_ERRS NUMBER
/k/V1x`0q6J#w}8s27042095READ_TIME NUMBERITPUB個(gè)人空間[\'K$Q],ovi^r
WRITE_TIME NUMBERITPUB個(gè)人空間uSOEj
BYTES_READ NUMBER
C�^T:{2U_Z }C27042095BYTES_WRITTEN NUMBER
從上面可知,結(jié)構(gòu)信息相同。
2、檢查db和asm實(shí)例中的v$asm_diskgroup視圖的底層表及相關(guān)信息
可以采取以下兩種方法:
第一:通過 sql_trace或event事件。
{ i8Ya+[;`27042095第二:使用autotrace功能。
--db實(shí)例:(以autotrace為例來說明)
SQL> set autotrace on
!J-pj)B\\27042095--dbITPUB個(gè)人空間 \\ Q u/h:XK_#\\+y+r@
SQL> select group_number, name, mount_status, header_status from v$asm_disk where header_status=\'UNKNOWN\';
GROUP_NUMBER NAME MOUNT_S HEADER_STATUITPUB個(gè)人空間Id0o|+[I
------------ ------------------------------ ------- ------------ITPUB個(gè)人空間TZ\'G(@sP)EMo
1 DG_DATA_0000 OPENED UNKNOWN
?c\\Wzt27042095 2 VOLK OPENED UNKNOWN
--asm:
SQL> select group_number, name, mount_status, header_status from v$asm_disk where header_status=\'MEMBER;
SQL> select group_number, name, mount_status, header_status from v$asm_disk where header_status=\'MEMBER\';
GROUP_NUMBER NAME MOUNT_STATUS HEADER_STATUSITPUB個(gè)人空間0^/zk L0O3u`,v
------------ -------------------- -------------- ------------------------
M8zb+Xi;W:KE27042095 3 DG_RECOVERY_0000 CACHED MEMBERITPUB 個(gè)人空間Wb\\V#[ N#F
1 DG_DATA_0000 CACHED MEMBER
J4N,R\\ShBH\'U t27042095 4 VOLG CACHED MEMBERITPUB個(gè)人空間8iQ;} H\\(\\3r!c\\
4 VOLH CACHED MEMBERITPUB個(gè)人空間:[@/L q]z `
2 VOLK CACHED MEMBER
5Qm;WDG_w1~ p-Th37042095Execution Plan
8C[;P:mV:}5~ A^d27042095----------------------------------------------------------
,gc3D\'PXC2k27042095Plan hash value: 2910262982
-----------------------------------------------------------------------------ITPUB個(gè)人空間%]R!~:qD�p,G
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
4k OP&j_3K.~9}+k(~27042095-----------------------------------------------------------------------------
m7STF;X%E|`27042095| 0 | SELECT STATEMENT | | 1 | 77 | 1 (100)| 00:00:01 |ITPUB個(gè)人空間XD+ah5oI:g
|* 1 | HASH JOIN OUTER | | 1 | 77 | 1 (100)| 00:00:01 |ITPUB個(gè)人空間�C)m!RY ]
|* 2 | FIXED TABLE FULL| X$KFDSK | 1 | 73 | 0 (0)| 00:00:01 |ITPUB個(gè)人空間u`k[#l:|E5R
| 3 | FIXED TABLE FULL| X$KFKID | 100 | 400 | 0 (0)| 00:00:01 |
-OR)RM)Nx1L27042095-----------------------------------------------------------------------------
Predicate Information (identified by operation id):ITPUB 個(gè)人空間PX xi1\\\\
---------------------------------------------------
1 - access(D.KFKID_KFDSK=K.IDPTR_KFKID(+))ITPUB個(gè)人空間n_/yOja
2 - filter(D.MNTSTS_KFDSK<>0 ANDITPUB 個(gè)人空間;IJ gH[:^(f
DECODE(D.HDRSTS_KFDSK,1,\'UNKNOWN\',2,\'CANDIDATE\',3,\'MEMBER\',4,\'FORMERITPUB個(gè)人空間8ry _9|C:hQ
\',5,\'CONFLICT\',6,\'INCOMPATIBLE\',7,\'PROVISIONED\',8,\'FOREIGN\',\'INVALID\')=\'ITPUB個(gè)人空間@#wq/U&b/bdL
UNKNOWN\' AND D.INST_ID=USERENV(\'INSTANCE\'))ITPUB個(gè)人空間 {Z%mu$g
//從這里可以看出來,v$asm_disk是由oracle的內(nèi)部表X$KFDSK與X$KFKID關(guān)聯(lián)由來,而 HEADER_STATUS的狀態(tài)是由X$KFDSK中的數(shù)字1-8分別獲取。
// 如果使用sql_trace和10046事件都可查出底層表。可參數(shù)“關(guān)于asm實(shí)例與db實(shí)例中的_磁盤組狀態(tài)_的分析(20120215)”一文。
從上面分析發(fā)現(xiàn),asm和db實(shí)例中的v$asm_disk視圖均是來自個(gè)Oracle內(nèi)部表X$KFDSK與 X$KFKID的關(guān)聯(lián)。
下面分別在ASM和db實(shí)例中查詢一下X$KFDSK 的內(nèi)容,看是否有異同之處:
經(jīng)過查詢,兩個(gè)基礎(chǔ)表的內(nèi)容果容不同,那么我們查出v$asm_disk的HEADER_STATUS狀態(tài),就是在這里的HDRSTS_KFDSK調(diào)用了。
--db實(shí)例:ITPUB個(gè)人空間 l*NSm,V W Tf2H/j
SQL> SQL> select GRPNUM_KFDSK, ASMNAME_KFDSK, HDRSTS_KFDSK from X$KFDSK where GRPNUM_KFDSK in (1,2) ;
GRPNUM_KFDSK ASMNAME_KFDSK HDRSTS_KFDSK
glY3x `Z+gX27042095------------ ------------------------------ ------------
~7\\}Kwg27042095 1 DG_DATA_0000 1ITPUB個(gè)人空間 x.JauKVWa#e`o
2 VOLK 1
ITPUB個(gè)人空間8x`z;\\ J6HV3M
--asm實(shí)例:
SQL> select GRPNUM_KFDSK, ASMNAME_KFDSK, HDRSTS_KFDSK from X$KFDSK where GRPNUM_KFDSK in (1,2) ;
GRPNUM_KFDSK ASMNAME_KFDSK HDRSTS_KFDSKITPUB個(gè)人空間$N FjOL%fD&Ms
------------ ------------------------------------------------------------ ------------ITPUB個(gè)人空間X&F.dc(sn\'J
1 DG_DATA_0000 3
.|-c0o bv8_2Mv27042095 2 VOLK 3
ITPUB個(gè)人空間x c7k&mA
這里的結(jié)果,正好對應(yīng)上面autotrace的結(jié)果1,\'UNKNOWN\'\',3,\'MEMBER\',既然知道 v$asm_disk的HEADER_STATUS狀態(tài)的底層調(diào)用,那么“1,\'UNKNOWN\'\',3,\'MEMBER\'”這些數(shù)字與狀態(tài)之關(guān)的關(guān)系如何得來呢,當(dāng)X$KFDSK的HDRSTS_KFDSK為1時(shí),那么通過什么過程讓v$asm_disk的HEADER_STATUS顯示為 “UNKNOWN\'”呢,繼續(xù)往下看:
a$T$GW,Ar�r27042095--db實(shí)例:
SQL> select view_definition from v$fixed_view_definition where view_name=\'V$ASM_DISK\';
select group_number, disk_number, compound_index, incarnation, mount_status,
0k!IMj+Iy/P.RE{27042095header_status, mode_status, state, redundancy, library, total_mb, free_mb, naITPUB個(gè)人空間%C0G(F%rSN/c,h(u
me, failgroup, label, path, udid, product, create_date, mount_date, repair_timITPUB個(gè)人空間;` zC-a/V(j;gm
er, reads, writes, read_errs, write_errs, read_time, write_time, bytes_read, bITPUB個(gè)人空間#pW)]Y3S/zf,L
ytes_written from gv$asm_disk where inst_id = USERENV(\'Instance\')
這里可以看出v$asm_disk視圖是由gv$asm_diskg視圖創(chuàng)建。ITPUB個(gè)人空間m [\\ W r*IQ
//在這里說明INST_ID=USERENV(\'INSTANCE\')),這是獲取當(dāng)前實(shí)例環(huán)境下的信息,v$與 gv$區(qū)別就在這里。
SQL> select view_definition from v$fixed_view_definition where view_name=\'GV$ASM_DISK\';
VIEW_DEFINITIONITPUB個(gè)人空間&m?+\\dS0J
-------------------------------------------------------------------------------------------------------------------------------
3@6V/y;t$|8a$E27042095select d.inst_id, d.grpnum_kfdsk, d.number_kfdsk, d.compound_kfdsk, d.incarn_kfdsk, decode(d.mntsts_kfdsk, 1, \'MISSING\', 2, \'CLOSED\', 3, \'OPENED\', 4, \'CACHED\', 5, \'IGNORED\', 6, \'IGNORED\', 7, \'CLOSING\', \'INVALID\'), decode(d.hdrsts_kfdsk, 1, \'UNKNOWN\', 2, \'CANDIDATE\', 3, \'MEMBER\', 4, \'FORMER\', 5, \'CONFLICT\', 6, \'INCOMPATIBLE\', 7, \'PROVISIONED\', 8, \'FOREIGN\', \'INVALID\'), decode(d.mode_kfdsk, 0, \'UNKNOWN\', 4, \'OFFLINE\', 5, \'PROTECT\', 6, \'PENDING\', 7, \'ONLINE\', \'INVALID\'), decode(d.state_kfdsk, 1, \'UNKNOWN\', 2, \'NORMAL\', 3, \'FAILING\', 4, \'DROPPING\', 5, \'HUNG\', 6, \'FORCING\', 7, \'DROPPED\', 8, \'ADDING\', \'INVALID\'), decode(d.redun_kfdsk, 16, \'UNPROT\', 17, \'UNPROT\', 18, \'MIRROR\', 19, \'MIRROR\', 20, \'MIRROR\', 21, \'MIRROR\', 22, \'MIRROR\', 23, \'MIRROR\', 32, \'PARITY\', 33, \'PARITY\', 34, \'PARITY\', 35, \'PARITY\', 36, \'PARITY\', 37, \'PARITY\', 38, \'PARITY\', 39, \'PARITY\', \'UNKNOWN\'), d.libnam_kfdsk, d.totmb_kfdsk, d.totmb_kfdsk - d.usedmb_kfdsk, d.asmname_kfdsk, d.failname_kfdsk, d.label_kfdsk, d.path_kfdsk, d.udid_kfdsk, d.product_kfdsk, d.crdate_kfdsk, d.mtdate_kfdsk, d.timer_kfdsk, k.read_kfkid, k.write_kfkid, k.rerr_kfkid, k.werr_kfkid, k.rtime_kfkid/1000000, k.wtime_kfkid/1000000, k.bytesr_kfkid, k.bytesw_kfkid from x$kfdsk d, x$kfkid k where d.mntsts_kfdsk != 0 and d.kfkid_kfdsk = k.idptr_kfkid(+) and GRPNUM_KFDSK in (1,2);
;`*}�UI�t-N1x27042095
^ P:V7Zqt9@27042095--asm實(shí)例:
SQL> select view_definition from v$fixed_view_definition where view_name=\'V$ASM_DISK\';
VIEW_DEFINITIONITPUB個(gè)人空間2F3`O&Y6D\'J
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ITPUB個(gè)人空間3G*EVn%PkM#if
select group_number, disk_number, compound_index, incarnation, mount_status, header_status, mode_status, state, redundancy, library, total_mb, free_mb, name, failgroup, label, path, udid, produc
pDN/n2R2M3^27042095t, create_date, mount_date, repair_timer, reads, writes, read_errs, write_errs, read_time, write_time, bytes_read, bytes_written from gv$asm_disk where inst_id = USERENV(\'Instance\')
這里可以看出v$asm_disk視圖是由gv$asm_disk視圖創(chuàng)建。
SQL> select view_definition from v$fixed_view_definition where view_name=\'GV$ASM_DISK\';
VIEW_DEFINITIONITPUB個(gè)人空間g@8|-x r\'s YW
-------------------------------------------------------------------------------------------------------------------------------ITPUB個(gè)人空間�B]|)F bW
select d.inst_id, d.grpnum_kfdsk, d.number_kfdsk, d.compound_kfdsk, d.incarn_kfdsk, decode(d.mntsts_kfdsk, 1, \'MISSING\', 2, \'CLOSED\', 3, \'OPENED\', 4, \'CACHED\', 5, \'IGNORED\', 6, \'IGNORED\',7, \'CLOSING\', \'INVALID\'), decode(d.hdrsts_kfdsk, 1, \'UNKNOWN\', 2, \'CANDIDATE\', 3, \'MEMBER\', 4, \'FORMER\', 5, \'CONFLICT\', 6,\'INCOMPATIBLE\', 7, \'PROVISIONED\', 8, \'FOREIGN\', \'INVALID\'), decode(d.mode_kfdsk, 0, \'UNKNOWN\', 4,\'OFFLINE\', 5, \'PROTECT\', 6, \'PENDING\', 7, \'ONLINE\', \'INVALID\'), decode(d.state_kfdsk, 1, \'UNKNOWN\', 2,\'NORMAL\', 3, \'FAILING\', 4, \'DROPPING\', 5, \'HUNG\',6, \'FORCING\', 7, \'DROPPED\', 8, \'ADDING\', \'INVALID\'), decode(d.redun_kfdsk, 16, \'UNPROT\', 17, \'UNPROT\', 18, \'MIRROR\', 19, \'MIRROR\', 20, \'MIRROR\', 21, \'MIRROR\',22, \'MIRROR\', 23, \'MIRROR\', 32, \'PARITY\', 33, \'PARITY\', 34, \'PARITY\', 35, \'PARITY\', 36, \'PARITY\', 37, \'PARITY\', 38, \'PARITY\', 39, \'PARITY\', \'UNKNOWN\'), d.libnam_kfdsk, d.totmb_kfdsk, d.totmb_kfdsk - d.usedmb_kfdsk, d.asmname_kfdsk, d.failname_kfdsk, d.label_kfdsk, d.path_kfdsk, d.udid_kfdsk,d.product_kfdsk, d.crdate_kfdsk, d.mtdate_kfdsk, d.timer_kfdsk, k.read_kfkid, k.write_kfkid, k.rerr_kfkid, k.werr_kfkid,k.rtime_kfkid/1000000, k.wtime_kfkid/1000000, k.bytesr_kfkid, k.bytesw_kfkid from x$kfdsk d,x$kfkid k where d.mntsts_kfdsk != 0 and d.kfkid_kfdsk = k.idptr_kfkid(+)
通過此處則可以發(fā)現(xiàn),asm與db中的GV$ASM_DISK視圖又是由x$kfdsk、x$kfkid兩張基表關(guān)聯(lián)創(chuàng)建,而且定義都相同。
GV$ASM_DISK視圖的定義中,用到了 decode函數(shù),這個(gè)函數(shù)則定義了1-8數(shù)字與不同狀態(tài)之間的調(diào)用關(guān)系。
如:decode 函數(shù)定義了:hdrsts_kfdsk字段如果值為1,則顯示\'UNKNOWN\';如果值為3,則顯示\'MEMBER\',這樣就一目了然了。
由于此處使用了decode函數(shù),觸發(fā)條件不同則顯示不同的結(jié)果,所以導(dǎo)致了asm與db實(shí)例中視圖 v$asm_disk的HEADER_STATUS結(jié)果不同而已。
但是 Oracle內(nèi)部又如何去修改1-8這些數(shù)據(jù)的呢,這些就很難查到了,因?yàn)閄$表是Oracle數(shù)據(jù)庫的運(yùn)行基礎(chǔ),在數(shù)據(jù)庫啟動時(shí)由Oracle應(yīng)用程序動態(tài)創(chuàng)建。
對于內(nèi)部X$及v$視圖的限制,Oracle是通過軟件機(jī)制實(shí)現(xiàn)的,而并非通過數(shù)據(jù)庫權(quán)限控制,所以,實(shí)際上通常大部用戶訪問的V$對象,并不是視圖,而且是指向V_$視圖的同義詞,而V_$視圖是基于真正的V$視圖(這個(gè)視圖是基于X$表建立的)創(chuàng)建的。
分享名稱:【OracleASM】關(guān)于asm實(shí)例與db實(shí)例中的磁盤狀態(tài)_詳細(xì)分析過程
文章路徑:http://chinadenli.net/article12/cjeodc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、服務(wù)器托管、營銷型網(wǎng)站建設(shè)、商城網(wǎng)站、域名注冊、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)