共計 5970 個字符,預計需要花費 15 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下如何查詢過去一段時間內某條 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 上或正在等待不屬于 Idlewait 類的事件,則認為該數據庫會話是活動的。V$EVENT_NAME 有關等待類的更多信息,請參閱視圖。
此視圖為每個樣本的每個活動會話包含一行,并首先返回最新的會話樣本行。描述活動會話歷史記錄中的會話的大多數列都存在于 V$SESSION 視圖中。
柱數據類型描述 SAMPLE_IDNUMBER 樣本的 IDSAMPLE_TIMETIMESTAMP(3) 采集樣品的時間 IS_AWR_SAMPLEVARCHAR2(1) 指示此樣本是否已刷新或將刷新到自動工作負載存儲庫(DBA_HIST_ACTIVE_SESS_HISTORY)(Y)或不是(N)SESSION_IDNUMBER 會話標識; 映射到 V$SESSION.SIDSESSION_SERIAL#NUMBER 會話序列號(用于唯一標識會話的對象); 映射到 V$SESSION.SERIAL#SESSION_TYPEVARCHAR2(10) 會話類型:
FOREGROUND
BACKGROUND
FLAGSNUMBER 保留供將來使用 USER_IDNUMBEROracle 用戶標識符; 映射到 V$SESSION.USER#SQL_IDVARCHAR2(13) 在采樣時會話正在執行的 SQL 語句的 SQL 標識符 IS_SQLID_CURRENTVARCHAR2(1) 指示 SQL_ID 列中的 SQL 標識符是否正在執行(Y)或不執行(N)SQL_CHILD_NUMBERNUMBER 在采樣時會話正在執行的 SQL 語句的子編號 SQL_OPCODENUMBER 指示 SQL 語句的操作階段; 映射到 V$SESSION.COMMAND
另請參閱:
“V $ SESSION”以獲取有關解釋此列的信息
SQL_OPNAMEVARCHAR2(64)SQL 命令名稱 FORCE_MATCHING_SIGNATURENUMBERCURSOR_SHARING 參數設置為時使用的簽名 FORCETOP_LEVEL_SQL_IDVARCHAR2(13) 頂級 SQL 語句的 SQL 標識符 TOP_LEVEL_SQL_OPCODENUMBER 指示頂級 SQL 語句所處的操作階段 SQL_PLAN_HASH_VALUENUMBER 游標的 SQL 計劃的數字表示。此信息可能不適用于所有會話樣本。V$SESSION 不包含此信息。SQL_PLAN_LINE_IDNUMBERSQL 計劃行 IDSQL_PLAN_OPERATIONVARCHAR2(30) 計劃操作名稱 SQL_PLAN_OPTIONSVARCHAR2(30) 計劃操作選項 SQL_EXEC_IDNUMBERSQL 執行標識符 SQL_EXEC_STARTDATESQL 執行開始的時間 PLSQL_ENTRY_OBJECT_IDNUMBER 堆棧中最頂層 PL / SQL 子程序的對象 ID; 如果堆棧上沒有 PL / SQL 子程序,則為 NULL。映射到 DBA_OBJECTS.OBJECT_ID。PLSQL_ENTRY_SUBPROGRAM_IDNUMBER 堆棧上最頂層 PL / SQL 子程序的子程序 ID。映射到 DBA_OBJECTS.DATA_OBJECT_ID。PLSQL_OBJECT_IDNUMBER 當前正在執行的 PL / SQL 子程序的對象 ID。映射到 DBA_OBJECTS.OBJECT_ID。PLSQL_SUBPROGRAM_IDNUMBER 當前正在執行的 PL / SQL 對象的子程序 ID; 執行 SQL 時為 NULL。映射到 DBA_OBJECTS.DATA_OBJECT_ID。QC_INSTANCE_IDNUMBER 查詢協調器實例 ID。僅當采樣會話是并行查詢從站時,此信息才可用。對于所有其他會話,值為。QC_SESSION_IDNUMBER 查詢協調器會話 ID。僅當采樣會話是并行查詢從站時,此信息才可用。對于所有其他會話,值為。QC_SESSION_SERIAL#NUMBER 查詢協調器會話序列號。僅當采樣會話是并行查詢從站時,此信息才可用。對于所有其他會話,值為。PX_FLAGS 腳 1 NUMBER 保留供內部使用 EVENTVARCHAR2(64) 如果 SESSION_STATE= WAITING,則表示會話在采樣時等待的事件。
如果 SESSION_STATE= ON CPU,則此列為 NULL。
另請參閱:
附錄 C,“Oracle 等待事件”
EVENT_IDNUMBER 會話正在等待或會話最后等待的資源或事件的標識符。解釋類似于 EVENT 專欄。EVENT#NUMBER 會話正在等待或會話上次等待的資源或事件的編號。解釋類似于 EVENT 專欄。SEQ#NUMBER 唯一標識等待的序列號(每個等待增加)P1TEXTVARCHAR2(64) 第一個附加參數的文本 P1NUMBER 第一個附加參數 P2TEXTVARCHAR2(64) 第二個附加參數的文本 P2NUMBER 第二個附加參數 P3TEXTVARCHAR2(64) 第三個附加參數的文本 P3NUMBER 第三個附加參數 WAIT_CLASSVARCHAR2(64) 等待會話在采樣時等待的事件的類名。解釋類似于 EVENT 專欄。地圖到 V$SESSION.WAIT_CLASS。WAIT_CLASS_IDNUMBER 等待會話在采樣時等待的事件的類標識符。解釋類似于 EVENT 專欄。地圖到 V$SESSION.WAIT_CLASS_ID。WAIT_TIMENUMBER 會話上次等待的事件的總等待時間,如果會話在 CPU 上進行采樣時; 如果會話在抽樣時等待
注意:是否 WAIT_TIME= 是 SESSION_STATE 在采樣時找到它的有用信息,而不是 WAIT_TIME 它自身的實際值。地圖到 V$SESSION.WAIT_TIME。
SESSION_STATEVARCHAR2(7) 會話狀態:
WAITING
ON CPU
TIME_WAITEDNUMBER 如果 SESSION_STATE= WAITING,那么會話實際花費在等待該事件的時間(以微秒為單位)。此列設置為采樣時正在進行的等待。
如果等待事件持續超過一秒并且在多個會話樣本行中等待,則等待該等待事件所花費的實際時間將填充在這些會話樣本行的最后一行中。在任何給定時間,此信息將不適用于最新的會話樣本。
BLOCKING_SESSION_STATUSVARCHAR2(11) 阻止會話的狀態:
VALID
NO HOLDER
GLOBAL
NOT IN WAIT
UNKNOWN
BLOCKING_SESSIONNUMBER 阻塞會話的會話標識符。僅當阻止程序位于同一實例且會話正在等待隊列或“緩沖區忙”等待時才填充。地圖到 V$SESSION.BLOCKING_SESSION。BLOCKING_SESSION_SERIAL#NUMBER 阻止會話的序列號 BLOCKING_INST_IDNUMBER 顯示的阻止程序的實例編號 BLOCKING_SESSIONBLOCKING_HANGCHAIN_INFOVARCHAR2(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#NUMBEROracle 頂級電話號碼 TOP_LEVEL_CALL_NAMEVARCHAR2(64)Oracle 頂級呼叫名稱 CONSUMER_GROUP_IDNUMBER 消費者組 IDXIDRAW(8) 會話在采樣時正在處理的事務 ID。V$SESSION 不包含此信息。REMOTE_INSTANCE#NUMBER 遠程實例標識符,用于為此會話等待的塊提供服務。此信息僅在會話等待群集事件時可用。TIME_MODELNUMBER 時間模型信息 IN_CONNECTION_MGMTVARCHAR2(1) 指示會話在采樣時是否正在進行連接管理(Y)或不是(N)IN_PARSEVARCHAR2(1) 指示會話在采樣時是否正在解析(Y)或不是(N)IN_HARD_PARSEVARCHAR2(1) 指示在 sampling(Y)或不是(N)時會話是否難以解析 IN_SQL_EXECUTIONVARCHAR2(1) 指示會話是否在 sampling(Y)或不執行時執行 SQL 語句(N)IN_PLSQL_EXECUTIONVARCHAR2(1) 指示會話是否在 sampling(Y)或不執行時執行 PL / SQL (N)IN_PLSQL_RPCVARCHAR2(1) 指示會話是否在 sampling(Y)或不執行時執行入站 PL / SQL RPC 調用(N)IN_PLSQL_COMPILATIONVARCHAR2(1) 指示會話是在編譯時是否正在編譯 PL / SQL(Y)或不是(N)IN_JAVA_EXECUTIONVARCHAR2(1) 指示會話是否在 sampling(Y)或不執行時執行 Java (N)IN_BINDVARCHAR2(1) 指示會話是否在 sampling(Y)或不執行時執行綁定操作(N)IN_CURSOR_CLOSEVARCHAR2(1) 指示會話是否在 sampling(Y)或不是(N)時關閉游標 IN_SEQUENCE_LOADVARCHAR2(1) 指示會話是按順序加載(按順序加載代碼)(Y)還是不加載(N)CAPTURE_OVERHEADVARCHAR2(1) 指示會話是否正在執行捕獲代碼(Y)或不執行(N)REPLAY_OVERHEADVARCHAR2(1) 指示會話是否正在執行重放代碼(Y)或不執行(N)IS_CAPTUREDVARCHAR2(1) 指示是否正在捕獲會話(Y)或不捕獲(N)IS_REPLAYEDVARCHAR2(1) 指示會話是否正在重播(Y)或不重播(N)SERVICE_HASHNUMBER 標識服務的哈希值; 映射到 V$ACTIVE_SERVICES.NAME_HASHPROGRAMVARCHAR2(48) 操作系統程序的名稱 MODULE 腳 2 VARCHAR2(48) 采樣時執行模塊的名稱,由 DBMS_APPLICATION_INFO.SET_MODULE 過程設置 ACTIONFootref 2VARCHAR2(32) 采樣時執行模塊的名稱,由 DBMS_APPLICATION_INFO.SET_ACTION 過程設置 CLIENT_IDVARCHAR2(64) 會話的客戶標識符; 映射到 V$SESSION.CLIENT_IDENTIFIERMACHINEVARCHAR2(64) 客戶端的操作系統機器名稱 PORTNUMBER 客戶端端口號 ECIDVARCHAR2(64) 執行上下文標識符(由 Application Server 發送)DBREPLAY_FILE_IDFootref 1NUMBER 如果正在捕獲或重放會話,那么 DBREPLAY_FILE_ID 是工作負載捕獲或工作負載重放的文件 ID; 否則它是 NULL。DBREPLAY_CALL_COUNTERFootref 1NUMBER 如果正在捕獲或重放會話,則是正在捕獲或重放 DBREPLAY_CALL_COUNTER 的用戶呼叫的呼叫計數器; 否則它是 NULL。TM_DELTA_TIMENUMBER 在其時間間隔(以微秒計)TM_DELTA_CPU_TIME 和 TM_DELTA_DB_TIME 被累積 TM_DELTA_CPU_TIMENUMBER 此會話在過去 TM_DELTA_TIME 幾微秒內花在 CPU 上的時間 TM_DELTA_DB_TIMENUMBER 此會話在過去 TM_DELTA_TIME 幾微秒內在數據庫調用中花費的時間 DELTA_TIMENUMBER 自上次采樣或創建會話以來的時間間隔(以微秒為單位),累計接下來的五個統計信息 DELTA_READ_IO_REQUESTSNUMBER 此會話在過去 DELTA_TIME 幾微秒內發出的讀取 I / O 請求數 DELTA_WRITE_IO_REQUESTSNUMBER 此會話在過去 DELTA_TIME 幾微秒內發出的寫入 I / O 請求數 DELTA_READ_IO_BYTESNUMBER 此會話在過去 DELTA_TIME 幾微秒內讀取的 I / O 字節數 DELTA_WRITE_IO_BYTESNUMBER 此會話在過去 DELTA_TIME 幾微秒內寫入的 I / O 字節數 DELTA_INTERCONNECT_IO_BYTESNUMBER 在過去 DELTA_TIME 幾微秒內通過 I / O 互連發送的 I / O 字節數 PGA_ALLOCATEDNUMBER 此示例拍攝時此會話占用的 PGA 內存量(以字節為單位)TEMP_SPACE_ALLOCATEDNUMBER 拍攝此樣本時此會話消耗的 TEMP 內存量(以字節為單位)
看完了這篇文章,相信你對“如何查詢過去一段時間內某條 sql 使用的臨時表空間大小”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!