查詢過去一段時間內某條sql使用的臨時表空間大小

記錄每一次錯誤發表於2018-12-21

查詢過去一段時間內使用的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) 會話型別:
  • FOREGROUND

  • BACKGROUND

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

另請參閱:   以獲取有關解釋此列的資訊

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 NUMBER 保留供內部使用
EVENT VARCHAR2(64) 如果 SESSION_STATE WAITING ,則表示會話在取樣時等待的事件。

如果 SESSION_STATE ON CPU ,則此列為NULL。

另請參閱:  

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上進行取樣時;  如果會話在抽樣時等待

注意: 是否 WAIT_TIME SESSION_STATE 在取樣時 找到它的有用資訊 ,而不是 WAIT_TIME 它自身 的實際值 地圖到 V$SESSION.WAIT_TIME

SESSION_STATE VARCHAR2(7) 會話狀態:
  • WAITING

  • ON CPU

TIME_WAITED NUMBER 如果 SESSION_STATE WAITING ,那麼會話實際花費在等待該事件的時間(以微秒為單位)。 此列設定為取樣時正在進行的等待。

如果等待事件持續超過一秒並且在多個會話樣本行中等待,則等待該等待事件所花費的實際時間將填充在這些會話樣本行的最後一行中。 在任何給定時間,此資訊將不適用於最新的會話樣本。

BLOCKING_SESSION_STATUS VARCHAR2(11) 阻止會話的狀態:
  • VALID

  • NO   HOLDER

  • GLOBAL

  • NOT IN WAIT

  • UNKNOWN

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 VARCHAR2(48) 取樣時執行模組的名稱,由 DBMS_APPLICATION_INFO.SET_MODULE 過程 設定
ACTION 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 NUMBER 如果正在捕獲或重放會話,那麼 DBREPLAY_FILE_ID 是工作負載捕獲或工作負載重放的檔案ID;  否則它是NULL。
DBREPLAY_CALL_COUNTER 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記憶體量(以位元組為單位)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547066/viewspace-2286075/,如需轉載,請註明出處,否則將追究法律責任。

相關文章