您好,登錄后才能下訂單哦!
小編給大家分享一下如何查詢過去一段時間內某條sql使用的臨時表空間大小,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
查詢過去一段時間內使用的temp表空間大小需要查詢V$ACTIVE_SESSION_HISTORY這個視圖,SQL語句是:
select SQL_ID,
SQL_EXEC_START,
PROGRAM,
TEMP_SPACE_ALLOCATED/1024/1024/1024 from V$ACTIVE_SESSION_HISTORY where sql_id='SQL語句的sql—id' and rownum<10 order by 4;
關于v$active_session_history的解釋,大家可以根據自己的需求添加列。
V$ACTIVE_SESSION_HISTORY
顯示數據庫中的采樣會話活動。它包含每秒執行一次的活動數據庫會話的快照。如果數據庫會話在CPU上或正在等待不屬于Idle
wait類的事件,則認為該數據庫會話是活動的。V$EVENT_NAME
有關等待類的更多信息,請參閱視圖。
此視圖為每個樣本的每個活動會話包含一行,并首先返回最新的會話樣本行。描述活動會話歷史記錄中的會話的大多數列都存在于V$SESSION
視圖中。
柱 | 數據類型 | 描述 |
---|---|---|
SAMPLE_ID | NUMBER | 樣本的ID |
SAMPLE_TIME | TIMESTAMP(3) | 采集樣品的時間 |
IS_AWR_SAMPLE | VARCHAR2(1) | 指示此樣本是否已刷新或將刷新到自動工作負載存儲庫(DBA_HIST_ACTIVE_SESS_HISTORY )(Y )或不是(N ) |
SESSION_ID | NUMBER | 會話標識; 映射到V$SESSION.SID |
SESSION_SERIAL# | NUMBER | 會話序列號(用于唯一標識會話的對象); 映射到V$SESSION.SERIAL# |
SESSION_TYPE | VARCHAR2(10) | 會話類型:
|
FLAGS | NUMBER | 保留供將來使用 |
USER_ID | NUMBER | Oracle用戶標識符; 映射到V$SESSION.USER# |
SQL_ID | VARCHAR2(13) | 在采樣時會話正在執行的SQL語句的SQL標識符 |
IS_SQLID_CURRENT | VARCHAR2(1) | 指示SQL_ID 列中的SQL標識符是否正在執行(Y )或不執行(N ) |
SQL_CHILD_NUMBER | NUMBER | 在采樣時會話正在執行的SQL語句的子編號 |
SQL_OPCODE | NUMBER | 指示SQL語句的操作階段; 映射到V$SESSION.COMMAND 另請參閱: “V $ SESSION”以獲取有關解釋此列的信息 |
SQL_OPNAME | VARCHAR2(64) | SQL命令名稱 |
FORCE_MATCHING_SIGNATURE | NUMBER | CURSOR_SHARING 參數設置為時使用的簽名FORCE |
TOP_LEVEL_SQL_ID | VARCHAR2(13) | 頂級SQL語句的SQL標識符 |
TOP_LEVEL_SQL_OPCODE | NUMBER | 指示頂級SQL語句所處的操作階段 |
SQL_PLAN_HASH_VALUE | NUMBER | 游標的SQL計劃的數字表示。此信息可能不適用于所有會話樣本。V$SESSION 不包含此信息。 |
SQL_PLAN_LINE_ID | NUMBER | SQL計劃行ID |
SQL_PLAN_OPERATION | VARCHAR2(30) | 計劃操作名稱 |
SQL_PLAN_OPTIONS | VARCHAR2(30) | 計劃操作選項 |
SQL_EXEC_ID | NUMBER | SQL執行標識符 |
SQL_EXEC_START | DATE | SQL執行開始的時間 |
PLSQL_ENTRY_OBJECT_ID | NUMBER | 堆棧中最頂層PL / SQL子程序的對象ID; 如果堆棧上沒有PL / SQL子程序,則為NULL。映射到DBA_OBJECTS.OBJECT_ID。 |
PLSQL_ENTRY_SUBPROGRAM_ID | NUMBER | 堆棧上最頂層PL / SQL子程序的子程序ID。映射到DBA_OBJECTS.DATA_OBJECT_ID。 |
PLSQL_OBJECT_ID | NUMBER | 當前正在執行的PL / SQL子程序的對象ID。映射到DBA_OBJECTS.OBJECT_ID。 |
PLSQL_SUBPROGRAM_ID | NUMBER | 當前正在執行的PL / SQL對象的子程序ID; 執行SQL時為NULL。映射到DBA_OBJECTS.DATA_OBJECT_ID。 |
QC_INSTANCE_ID | NUMBER | 查詢協調器實例ID。僅當采樣會話是并行查詢從站時,此信息才可用。對于所有其他會話,值為。 |
QC_SESSION_ID | NUMBER | 查詢協調器會話ID。僅當采樣會話是并行查詢從站時,此信息才可用。對于所有其他會話,值為。 |
QC_SESSION_SERIAL# | NUMBER | 查詢協調器會話序列號。僅當采樣會話是并行查詢從站時,此信息才可用。對于所有其他會話,值為。 |
PX_FLAGS 腳1 | NUMBER | 保留供內部使用 |
EVENT | VARCHAR2(64) | 如果SESSION_STATE = WAITING ,則表示會話在采樣時等待的事件。如果 另請參閱: 附錄C,“Oracle等待事件” |
EVENT_ID | NUMBER | 會話正在等待或會話最后等待的資源或事件的標識符。解釋類似于EVENT 專欄。 |
EVENT# | NUMBER | 會話正在等待或會話上次等待的資源或事件的編號。解釋類似于EVENT 專欄。 |
SEQ# | NUMBER | 唯一標識等待的序列號(每個等待增加) |
P1TEXT | VARCHAR2(64) | 第一個附加參數的文本 |
P1 | NUMBER | 第一個附加參數 |
P2TEXT | VARCHAR2(64) | 第二個附加參數的文本 |
P2 | NUMBER | 第二個附加參數 |
P3TEXT | VARCHAR2(64) | 第三個附加參數的文本 |
P3 | NUMBER | 第三個附加參數 |
WAIT_CLASS | VARCHAR2(64) | 等待會話在采樣時等待的事件的類名。解釋類似于EVENT 專欄。地圖到V$SESSION.WAIT_CLASS 。 |
WAIT_CLASS_ID | NUMBER | 等待會話在采樣時等待的事件的類標識符。解釋類似于EVENT 專欄。地圖到V$SESSION.WAIT_CLASS_ID 。 |
WAIT_TIME | NUMBER | 會話上次等待的事件的總等待時間,如果會話在CPU上進行采樣時; 如果會話在抽樣時等待 注意:是否 |
SESSION_STATE | VARCHAR2(7) | 會話狀態:
|
TIME_WAITED | NUMBER | 如果SESSION_STATE = WAITING ,那么會話實際花費在等待該事件的時間(以微秒為單位)。此列設置為采樣時正在進行的等待。如果等待事件持續超過一秒并且在多個會話樣本行中等待,則等待該等待事件所花費的實際時間將填充在這些會話樣本行的最后一行中。在任何給定時間,此信息將不適用于最新的會話樣本。 |
BLOCKING_SESSION_STATUS | VARCHAR2(11) | 阻止會話的狀態:
|
BLOCKING_SESSION | NUMBER | 阻塞會話的會話標識符。僅當阻止程序位于同一實例且會話正在等待隊列或“緩沖區忙”等待時才填充。地圖到V$SESSION.BLOCKING_SESSION 。 |
BLOCKING_SESSION_SERIAL# | NUMBER | 阻止會話的序列號 |
BLOCKING_INST_ID | NUMBER | 顯示的阻止程序的實例編號 BLOCKING_SESSION |
BLOCKING_HANGCHAIN_INFO | VARCHAR2(1) | 指示有關的信息BLOCKING_SESSION 是來自掛起鏈(Y )還是不來自(N ) |
CURRENT_OBJ# | NUMBER | 會話引用的對象的對象ID。僅當會話正在等待應用程序,群集,并發和用戶I / O等待事件時,此信息才可用。地圖到V$SESSION.ROW_WAIT_OBJ# 。 |
CURRENT_FILE# | NUMBER | 包含會話引用的塊的文件的文件號。僅當會話正在等待群集,并發和用戶I / O等待事件時,此信息才可用。地圖到V$SESSION.ROW_WAIT_FILE# 。 |
CURRENT_BLOCK# | NUMBER | 會話引用的塊的ID。僅當會話正在等待群集,并發和用戶I / O等待事件時,此信息才可用。地圖到V$SESSION.ROW_WAIT_BLOCK# 。 |
CURRENT_ROW# | NUMBER | 會話引用的行標識符。僅當會話正在等待群集,并發和用戶I / O等待事件時,此信息才可用。地圖到V$SESSION.ROW_WAIT_ROW# 。 |
TOP_LEVEL_CALL# | NUMBER | Oracle頂級電話號碼 |
TOP_LEVEL_CALL_NAME | VARCHAR2(64) | Oracle頂級呼叫名稱 |
CONSUMER_GROUP_ID | NUMBER | 消費者組ID |
XID | RAW(8) | 會話在采樣時正在處理的事務ID。V$SESSION 不包含此信息。 |
REMOTE_INSTANCE# | NUMBER | 遠程實例標識符,用于為此會話等待的塊提供服務。此信息僅在會話等待群集事件時可用。 |
TIME_MODEL | NUMBER | 時間模型信息 |
IN_CONNECTION_MGMT | VARCHAR2(1) | 指示會話在采樣時是否正在進行連接管理(Y )或不是(N ) |
IN_PARSE | VARCHAR2(1) | 指示會話在采樣時是否正在解析(Y )或不是(N ) |
IN_HARD_PARSE | VARCHAR2(1) | 指示在sampling(Y )或不是(N )時會話是否難以解析 |
IN_SQL_EXECUTION | VARCHAR2(1) | 指示會話是否在sampling(Y )或不執行時執行SQL語句(N ) |
IN_PLSQL_EXECUTION | VARCHAR2(1) | 指示會話是否在sampling(Y )或不執行時執行PL / SQL (N ) |
IN_PLSQL_RPC | VARCHAR2(1) | 指示會話是否在sampling(Y )或不執行時執行入站PL / SQL RPC調用(N ) |
IN_PLSQL_COMPILATION | VARCHAR2(1) | 指示會話是在編譯時是否正在編譯PL / SQL(Y )或不是(N ) |
IN_JAVA_EXECUTION | VARCHAR2(1) | 指示會話是否在sampling(Y )或不執行時執行Java (N ) |
IN_BIND | VARCHAR2(1) | 指示會話是否在sampling(Y )或不執行時執行綁定操作(N ) |
IN_CURSOR_CLOSE | VARCHAR2(1) | 指示會話是否在sampling(Y )或不是(N )時關閉游標 |
IN_SEQUENCE_LOAD | VARCHAR2(1) | 指示會話是按順序加載(按順序加載代碼)(Y )還是不加載(N ) |
CAPTURE_OVERHEAD | VARCHAR2(1) | 指示會話是否正在執行捕獲代碼(Y )或不執行(N ) |
REPLAY_OVERHEAD | VARCHAR2(1) | 指示會話是否正在執行重放代碼(Y )或不執行(N ) |
IS_CAPTURED | VARCHAR2(1) | 指示是否正在捕獲會話(Y )或不捕獲(N ) |
IS_REPLAYED | VARCHAR2(1) | 指示會話是否正在重播(Y )或不重播(N ) |
SERVICE_HASH | NUMBER | 標識服務的哈希值; 映射到V$ACTIVE_SERVICES.NAME_HASH |
PROGRAM | VARCHAR2(48) | 操作系統程序的名稱 |
MODULE 腳2 | VARCHAR2(48) | 采樣時執行模塊的名稱,由DBMS_APPLICATION_INFO.SET_MODULE 過程設置 |
ACTION Footref 2 | VARCHAR2(32) | 采樣時執行模塊的名稱,由DBMS_APPLICATION_INFO.SET_ACTION 過程設置 |
CLIENT_ID | VARCHAR2(64) | 會話的客戶標識符; 映射到V$SESSION.CLIENT_IDENTIFIER |
MACHINE | VARCHAR2(64) | 客戶端的操作系統機器名稱 |
PORT | NUMBER | 客戶端端口號 |
ECID | VARCHAR2(64) | 執行上下文標識符(由Application Server發送) |
DBREPLAY_FILE_ID Footref 1 | NUMBER | 如果正在捕獲或重放會話,那么DBREPLAY_FILE_ID 是工作負載捕獲或工作負載重放的文件ID; 否則它是NULL。 |
DBREPLAY_CALL_COUNTER Footref 1 | NUMBER | 如果正在捕獲或重放會話,則是正在捕獲或重放DBREPLAY_CALL_COUNTER 的用戶呼叫的呼叫計數器; 否則它是NULL。 |
TM_DELTA_TIME | NUMBER | 在其時間間隔(以微秒計)TM_DELTA_CPU_TIME 和TM_DELTA_DB_TIME 被累積 |
TM_DELTA_CPU_TIME | NUMBER | 此會話在過去TM_DELTA_TIME 幾微秒內花在CPU上的時間 |
TM_DELTA_DB_TIME | NUMBER | 此會話在過去TM_DELTA_TIME 幾微秒內在數據庫調用中花費的時間 |
DELTA_TIME | NUMBER | 自上次采樣或創建會話以來的時間間隔(以微秒為單位),累計接下來的五個統計信息 |
DELTA_READ_IO_REQUESTS | NUMBER | 此會話在過去DELTA_TIME 幾微秒內發出的讀取I / O請求數 |
DELTA_WRITE_IO_REQUESTS | NUMBER | 此會話在過去DELTA_TIME 幾微秒內發出的寫入I / O請求數 |
DELTA_READ_IO_BYTES | NUMBER | 此會話在過去DELTA_TIME 幾微秒內讀取的I / O字節數 |
DELTA_WRITE_IO_BYTES | NUMBER | 此會話在過去DELTA_TIME 幾微秒內寫入的I / O字節數 |
DELTA_INTERCONNECT_IO_BYTES | NUMBER | 在過去DELTA_TIME 幾微秒內通過I / O互連發送的I / O字節數 |
PGA_ALLOCATED | NUMBER | 此示例拍攝時此會話占用的PGA內存量(以字節為單位) |
TEMP_SPACE_ALLOCATED | NUMBER | 拍攝此樣本時此會話消耗的TEMP內存量(以字節為單位) |
看完了這篇文章,相信你對“如何查詢過去一段時間內某條sql使用的臨時表空間大小”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。