--v$sqltext
--Concept:This view contains the text of SQL statements belonging to shared SQL cursors in the SGA.
--記錄完整的sql,但sql被分片存儲
/*
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDRESS RAW(4)
HASH_VALUE NUMBER --address、hash_value唯一標識一條sql
SQL_ID VARCHAR2(13)
COMMAND_TYPE NUMBER
PIECE NUMBER --PIECE分片之後的順序
SQL_TEXT VARCHAR2(64) --SQL_TEXT爲sql文本
*/
select * from v$sqltext;
--v$sqlarea
--Concept:V$SQLAREA lists statistics on shared SQL area and contains one row per SQL string. It provides statistics on SQL statements that are in memory,
-- parsed, and ready for execution.
--記錄共享sql區中的統計信息(執行次數、邏輯讀、物理讀等);相同文本的sql只記錄一次
/*
Name Null? Type
----------------------------------------- -------- ----------------------------
SQL_TEXT VARCHAR2(1000)
SQL_FULLTEXT CLOB
SQL_ID VARCHAR2(13)
SHARABLE_MEM NUMBER
PERSISTENT_MEM NUMBER
RUNTIME_MEM NUMBER
SORTS NUMBER
VERSION_COUNT NUMBER
LOADED_VERSIONS NUMBER
OPEN_VERSIONS NUMBER
USERS_OPENING NUMBER
FETCHES NUMBER
EXECUTIONS NUMBER
PX_SERVERS_EXECUTIONS NUMBER
END_OF_FETCH_COUNT NUMBER
USERS_EXECUTING NUMBER
LOADS NUMBER
FIRST_LOAD_TIME VARCHAR2(76)
INVALIDATIONS NUMBER
PARSE_CALLS NUMBER
DISK_READS NUMBER
DIRECT_WRITES NUMBER
BUFFER_GETS NUMBER
APPLICATION_WAIT_TIME NUMBER
CONCURRENCY_WAIT_TIME NUMBER
CLUSTER_WAIT_TIME NUMBER
USER_IO_WAIT_TIME NUMBER
PLSQL_EXEC_TIME NUMBER
JAVA_EXEC_TIME NUMBER
ROWS_PROCESSED NUMBER
COMMAND_TYPE NUMBER
OPTIMIZER_MODE VARCHAR2(10)
OPTIMIZER_COST NUMBER
OPTIMIZER_ENV RAW(797)
OPTIMIZER_ENV_HASH_VALUE NUMBER
PARSING_USER_ID NUMBER
PARSING_SCHEMA_ID NUMBER
PARSING_SCHEMA_NAME VARCHAR2(30)
KEPT_VERSIONS NUMBER
ADDRESS RAW(4)
HASH_VALUE NUMBER
OLD_HASH_VALUE NUMBER
PLAN_HASH_VALUE NUMBER
MODULE VARCHAR2(64)
MODULE_HASH NUMBER
ACTION VARCHAR2(64)
ACTION_HASH NUMBER
SERIALIZABLE_ABORTS NUMBER
OUTLINE_CATEGORY VARCHAR2(64)
CPU_TIME NUMBER
ELAPSED_TIME NUMBER
OUTLINE_SID VARCHAR2(40)
LAST_ACTIVE_CHILD_ADDRESS RAW(4)
REMOTE VARCHAR2(1)
OBJECT_STATUS VARCHAR2(19)
LITERAL_HASH_VALUE NUMBER
LAST_LOAD_TIME DATE
IS_OBSOLETE VARCHAR2(1)
CHILD_LATCH NUMBER
SQL_PROFILE VARCHAR2(64)
PROGRAM_ID NUMBER
PROGRAM_LINE# NUMBER
EXACT_MATCHING_SIGNATURE NUMBER
FORCE_MATCHING_SIGNATURE NUMBER
LAST_ACTIVE_TIME DATE
BIND_DATA RAW(2000)
*/
select * from v$sqlarea
--v$sql
--Concept:V$SQL lists statistics on shared SQL area without the GROUP BY clause and contains one row for each child of the original SQL text entered.
--Statistics displayed in V$SQL are normally updated at the end of query execution. However, for long running queries, they are updated every 5 seconds.
-- This makes it easy to see the impact of long running SQL statements while they are still in progress.
--記錄共享sql區中的統計信息(執行次數、邏輯讀、物理讀等);每一次執行sql語句都會記錄,且與v$sql_plan關聯可查詢每條sql語句的執行計劃。
/*
Name Null? Type
----------------------------------------- -------- ----------------------------
SQL_TEXT VARCHAR2(1000)
SQL_FULLTEXT CLOB
SQL_ID VARCHAR2(13)
SHARABLE_MEM NUMBER --佔用共享內存的大小
PERSISTENT_MEM NUMBER --生命週期內的固定內存大小
RUNTIME_MEM NUMBER --執行期內的固定內存大小
SORTS NUMBER --完成的排序數
LOADED_VERSIONS NUMBER
OPEN_VERSIONS NUMBER
USERS_OPENING NUMBER --執行語句的用戶數
FETCHES NUMBER --sql語句的fetch數
EXECUTIONS NUMBER --自它被載入緩存庫後的執行次數
PX_SERVERS_EXECUTIONS NUMBER
END_OF_FETCH_COUNT NUMBER
USERS_EXECUTING NUMBER --執行語句的用戶數
LOADS NUMBER --對象被載入過的次數
FIRST_LOAD_TIME VARCHAR2(76) --初次載入時間
INVALIDATIONS NUMBER --無效的次數
PARSE_CALLS NUMBER --解析調用次數
DISK_READS NUMBER --讀磁盤數
DIRECT_WRITES NUMBER
BUFFER_GETS NUMBER --讀緩存區數
APPLICATION_WAIT_TIME NUMBER
CONCURRENCY_WAIT_TIME NUMBER
CLUSTER_WAIT_TIME NUMBER
USER_IO_WAIT_TIME NUMBER
PLSQL_EXEC_TIME NUMBER
JAVA_EXEC_TIME NUMBER
ROWS_PROCESSED NUMBER
COMMAND_TYPE NUMBER
OPTIMIZER_MODE VARCHAR2(10)
OPTIMIZER_COST NUMBER
OPTIMIZER_ENV RAW(797)
OPTIMIZER_ENV_HASH_VALUE NUMBER
PARSING_USER_ID NUMBER
PARSING_SCHEMA_ID NUMBER
PARSING_SCHEMA_NAME VARCHAR2(30)
KEPT_VERSIONS NUMBER
ADDRESS RAW(4)
TYPE_CHK_HEAP RAW(4)
HASH_VALUE NUMBER
OLD_HASH_VALUE NUMBER
PLAN_HASH_VALUE NUMBER
CHILD_NUMBER NUMBER
SERVICE VARCHAR2(64)
SERVICE_HASH NUMBER
MODULE VARCHAR2(64)
MODULE_HASH NUMBER
ACTION VARCHAR2(64)
ACTION_HASH NUMBER
SERIALIZABLE_ABORTS NUMBER
OUTLINE_CATEGORY VARCHAR2(64)
CPU_TIME NUMBER
ELAPSED_TIME NUMBER
OUTLINE_SID NUMBER
CHILD_ADDRESS RAW(4)
SQLTYPE NUMBER
REMOTE VARCHAR2(1)
OBJECT_STATUS VARCHAR2(19)
LITERAL_HASH_VALUE NUMBER
LAST_LOAD_TIME VARCHAR2(76)
IS_OBSOLETE VARCHAR2(1)
CHILD_LATCH NUMBER
SQL_PROFILE VARCHAR2(64)
PROGRAM_ID NUMBER
PROGRAM_LINE# NUMBER
EXACT_MATCHING_SIGNATURE NUMBER
FORCE_MATCHING_SIGNATURE NUMBER
LAST_ACTIVE_TIME DATE
BIND_DATA RAW(2000)
*/
select * from v$sql;
--注:可根據視圖v$sql中的plan_hash_value直接判斷sql語句的執行計劃是否相同
--v$sql_plan
--Concept:V$SQL_PLAN contains the execution plan information for each child cursor loaded in the library cache.
--記錄每條sql語句的執行計劃
/*
Name Null? Type
----------------------------------------- -------- ----------------------------
ADDRESS RAW(4)
HASH_VALUE NUMBER
SQL_ID VARCHAR2(13)
PLAN_HASH_VALUE NUMBER
CHILD_ADDRESS RAW(4)
CHILD_NUMBER NUMBER
TIMESTAMP DATE
OPERATION VARCHAR2(120)
OPTIONS VARCHAR2(120)
OBJECT_NODE VARCHAR2(160)
OBJECT# NUMBER
OBJECT_OWNER VARCHAR2(30)
OBJECT_NAME VARCHAR2(30)
OBJECT_ALIAS VARCHAR2(65)
OBJECT_TYPE VARCHAR2(80)
OPTIMIZER VARCHAR2(80)
ID NUMBER
PARENT_ID NUMBER
DEPTH NUMBER
POSITION NUMBER
SEARCH_COLUMNS NUMBER
COST NUMBER
CARDINALITY NUMBER
BYTES NUMBER
OTHER_TAG VARCHAR2(140)
PARTITION_START VARCHAR2(20)
PARTITION_STOP VARCHAR2(20)
PARTITION_ID NUMBER
OTHER VARCHAR2(4000)
DISTRIBUTION VARCHAR2(80)
CPU_COST NUMBER
IO_COST NUMBER
TEMP_SPACE NUMBER
ACCESS_PREDICATES VARCHAR2(4000)
FILTER_PREDICATES VARCHAR2(4000)
PROJECTION VARCHAR2(4000)
TIME NUMBER
QBLOCK_NAME VARCHAR2(30)
REMARKS VARCHAR2(4000)
OTHER_XML CLOB
*/
select * from v$sql_plan;
--注:看似相同的sql語句,往往具有不同的sql執行計劃,而v$sql_area恰恰忽略了sql執行計劃的差異。
--應用舉例
--查看資源消耗最多的sql
select *
from v$sqlarea
where buffer_gets>10000000 or disk_reads>1000000
order by buffer_gets+100*disk_reads desc;
--查看使用頻率最高的前5條sql
select address,hash_value,sql_text,executions
from (
select row_number() over(order by executions desc) as top,address,hash_value,sql_text,executions
from v$sql
) t
where t.top<=5;
--查看某條語句的資源消耗情況
select address,hash_value,sql_text,disk_reads,buffer_gets,round((buffer_gets-disk_reads)/buffer_gets,4)*100 as "hits(%)"
,round(cpu_time/executions,4) as "cpu(秒/次)",round(elapsed_time/executions,4) as "execute(秒/次)",executions
from v$sqlarea
where address=hextoraw('4DC41CA4') and hash_value=864012087
--查看磁盤讀取頻率最高的前5條sql
select address,hash_value,sql_text,disk_reads
from (
select row_number() over(order by disk_reads desc) as top,address,hash_value,sql_text,disk_reads
from v$sql
) t
where t.top<=5;
--查看緩衝區讀取頻率最高的前5條sql
select address,hash_value,sql_text,buffer_gets
from (
select row_number() over(order by buffer_gets desc) as top,address,hash_value,sql_text,buffer_gets
from v$sql
) t
where t.top<=5;
v$sql、v$sqlarea、v$sqltext、v$sql_plan
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.