您好,登錄后才能下訂單哦!
Oracle用v$sqlarea中一行保存同樣語句的SQL,并用字段version_count的值來指出子游標的個
數,而在v$sql里面為每個子游標保留了一個單獨的行。兩個表可以通過字段address和hash_value
相互對應。例如下面例子:
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語句的執行計劃,也可以通過字段address、hash_value和child_number到v$sql_plan中查找,
v$sql_plan中是區分了不同子游標的執行計劃的
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語句的相關統計信息,但是v$sqltext用多行來保存sql語句,而v$sqlarea中只能
保存sql語句的前1000個字節,所以如果sql語句大于1000個字節,就要到v$sqltext中查看完整的語句,其字
段PIECE表示每個sql的行順序。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。