Oracle9i中v$sql、v$sqlarea、v$sqltext、v$sql_plan的聯絡與區別
這樣就要求分別有一個獨立的遊標(即子游標)來區別出每一種情況下的不同的執行行為。[@more@]
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的行順序。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31444259/viewspace-2154437/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- v$sqlarea,v$sql,v$sqltext的區別和聯絡SQL
- v$sqlarea,v$sql,v$sqltext的區別和聯絡(zt)SQL
- v$sql,v$sqlarea,v$sqltext區別SQL
- v$sqlarea,v$sql,v$sqltext三個檢視的區別SQL
- V$sql_text v$sqlarea v$sql 的區別SQL
- V$SQL 和V$SQLAREA區別SQL
- v$sql和v$sqlarea的區別SQL
- 檢視 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的差異SQL
- [ZT]v$sqlarea,v$sql,v$sqltext這三個檢視提供的sql語句有什麼區別SQL
- V$SQL、V$SQLSTATS、V$SQLAREASQL
- 【檢視】V$BGPROCESS與V$PROCESS間的區別與聯絡
- (轉):學習Oracle動態效能表-(7)-V$SQLTEXT,V$SQLAREAOracleSQL
- Oracle動態效能檢視學習之v$sqltext & v$sqlareaOracleSQL
- [轉]學習Oracle動態效能表-(6)-V$SQLTEXT,V$SQLAREAOracleSQL
- v$sql v$sqlarea v$sql_shared_cursor及遊標SQL
- cursor_sharing與v$sqlarea_v$sql_v$sql_shared_cursorSQL
- V$SQLAREASQL
- 顯示v$sqltext中完整的sql資訊SQL
- sql執行計劃_v$sqlarea_v$sql_v$sql_shared_cursorSQL
- v$sql檢視和v$sqlarea檢視的構建SQL
- v$sql v$sqlarea v$sql_shared_cursor及父遊標,子游標SQL
- V$SQLAREA解析SQL
- 使用V$SQL_PLAN檢視SQL
- v$sql_plan 檢視解析SQL
- V$SQLAREA的用法SQL
- (轉):學習Oracle動態效能表-(6)-V$SQL,V$SQL_PLANOracleSQL
- V$SQLAREA 檢視TOP_SQLSQL
- v$sqlarea_parent cursor_v$sql_child cursor關係SQL
- 查詢等待事件(wait event)相關的SQL - v$session_wait, v$rowcache,v$sqltext事件AISQLSession
- v-html 、v-text({{}}) 、v-model的區別HTML
- v$sysstat和v$sesstat區別
- 授權某使用者,檢視動態效能檢視的許可權(如v$latch,v$lock,v$sqlarea,v$sql,v$sysstat)SQL
- oracle11g v$sql_v$sqlarea_version_count測試OracleSQL
- v$sql v$sqlarea和父遊標 子游標記載01SQL
- 【SESSION】v$session and v$license 中sessions_current 的區別Session
- v$sql_plan這個檢視解析SQL
- v$datafile.file#與v$tempfile.file#區別
- v-if和v-show的區別