如何查询过去一段时间内某条sql使用的临时表空间大小

小编给大家分享一下如何查询过去一段时间内某条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_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

另请参阅:  “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_STATEWAITING,则表示会话在采样时等待的事件。

如果SESSION_STATEON CPU,则此列为NULL。

另请参阅:  附录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上进行采样时; 如果会话在抽样时等待

注意:是否WAIT_TIME= 是SESSION_STATE在采样时找到它的有用信息,而不是WAIT_TIME它自身的实际值。地图到V$SESSION.WAIT_TIME

SESSION_STATE VARCHAR2(7) 会话状态:
  • WAITING

  • ON CPU

TIME_WAITED NUMBER 如果SESSION_STATEWAITING,那么会话实际花费在等待该事件的时间(以微秒为单位)。此列设置为采样时正在进行的等待。

如果等待事件持续超过一秒并且在多个会话样本行中等待,则等待该等待事件所花费的实际时间将填充在这些会话样本行的最后一行中。在任何给定时间,此信息将不适用于最新的会话样本。

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脚2  VARCHAR2(48) 采样时执行模块的名称,由DBMS_APPLICATION_INFO.SET_MODULE过程设置
ACTIONFootref 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_IDFootref 1 NUMBER 如果正在捕获或重放会话,那么DBREPLAY_FILE_ID是工作负载捕获或工作负载重放的文件ID; 否则它是NULL。
DBREPLAY_CALL_COUNTERFootref 1 NUMBER 如果正在捕获或重放会话,则是正在捕获或重放DBREPLAY_CALL_COUNTER的用户呼叫的呼叫计数器; 否则它是NULL。
TM_DELTA_TIME NUMBER 在其时间间隔(以微秒计)TM_DELTA_CPU_TIMETM_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使用的临时表空间大小”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!