溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的聯(lián)系與區(qū)別

發(fā)布時間:2020-08-08 21:48:22 來源:ITPUB博客 閱讀:111 作者:達(dá)芬奇的夢 欄目:關(guān)系型數(shù)據(jù)庫
對于同一個SQL語句,如果在不同環(huán)境下使用了不同的優(yōu)化器目標(biāo)的情況下,會有不同的執(zhí)行計劃,
這樣就要求分別有一個獨(dú)立的游標(biāo)(即子游標(biāo))來區(qū)別出每一種情況下的不同的運(yùn)行行為。[@more@]

Oracle用v$sqlarea中一行保存同樣語句的SQL,并用字段version_count的值來指出子游標(biāo)的個
數(shù),而在v$sql里面為每個子游標(biāo)保留了一個單獨(dú)的行。兩個表可以通過字段address和hash_value
相互對應(yīng)。例如下面例子:

SQL> select address,hash_value,sql_text,version_count
  2  from v$sqlarea where sql_text like 'select value$ from sys.props%';

ADDRESS  HASH_VALUE SQL_TEXT                                       VERSION_COUNT
-------- ---------- ---------------------------------------------- -------------
97F1C9C4  563046721 select value$ from sys.props$ where name = :1   3

SQL> select address,hash_value,child_address,child_number,sql_text
  2  from v$sql where sql_text like 'select value$ from sys.props%';

ADDRESS  HASH_VALUE CHILD_ADDRESS CHILD_NUMBER SQL_TEXT
-------- ---------- ------------- ------------ ----------------------------------------------
97F1C9C4  563046721 97F1C448                 0 select value$ from sys.props$ where name = :1
97F1C9C4  563046721 97EAD3B0                 1 select value$ from sys.props$ where name = :1
97F1C9C4  563046721 97E7EEF0                 2 select value$ from sys.props$ where name = :1

如果想找出這個SQL語句的執(zhí)行計劃,也可以通過字段address、hash_value和child_number到v$sql_plan中查找,
v$sql_plan中是區(qū)分了不同子游標(biāo)的執(zhí)行計劃的

SQL> select address,child_number,lpad('',2*level)||operation||decode(id,0,' cost='||position) op,
  2         options,object_name
  3    from v$sql_plan t where address='97F1C9C4' and hash_value=563046721;

ADDRESS  CHILD_NUMBER OP                        OPTIONS     OBJECT_NAME 
-------- ------------ ------------------------- ----------- -------------
97F1C9C4            2 SELECT STATEMENT cost=0              
97F1C9C4            2 TABLE ACCESS              FULL        PROPS$
97F1C9C4            1 SELECT STATEMENT cost=0              
97F1C9C4            1 TABLE ACCESS              FULL        PROPS$
97F1C9C4            0 SELECT STATEMENT cost=0              
97F1C9C4            0 TABLE ACCESS              FULL        PROPS$

視圖v$sqltext中沒有SQL語句的相關(guān)統(tǒng)計信息,但是v$sqltext用多行來保存sql語句,而v$sqlarea中只能
保存sql語句的前1000個字節(jié),所以如果sql語句大于1000個字節(jié),就要到v$sqltext中查看完整的語句,其字
段PIECE表示每個sql的行順序。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI