小编给大家分享一下如何查询过去一段时间内某条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)或不是(NSESSION_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)或不执行(NSQL_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脚1NUMBER保留供内部使用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_CLASSWAIT_CLASS_IDNUMBER等待会话在采样时等待的事件的类标识符。解释类似于EVENT专栏。地图到V$SESSION.WAIT_CLASS_IDWAIT_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

NOHOLDER

GLOBAL

NOT IN WAIT

UNKNOWN

BLOCKING_SESSIONNUMBER阻塞会话的会话标识符。仅当阻止程序位于同一实例且会话正在等待队列或“缓冲区忙”等待时才填充。地图到V$SESSION.BLOCKING_SESSIONBLOCKING_SESSION_SERIAL#NUMBER阻止会话的序列号BLOCKING_INST_IDNUMBER显示的阻止程序的实例编号BLOCKING_SESSIONBLOCKING_HANGCHAIN_INFOVARCHAR2(1)指示有关的信息BLOCKING_SESSION是来自挂起链(Y)还是不来自(NCURRENT_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)或不是(NIN_PARSEVARCHAR2(1)指示会话在采样时是否正在解析(Y)或不是(NIN_HARD_PARSEVARCHAR2(1)指示在sampling(Y)或不是(N)时会话是否难以解析IN_SQL_EXECUTIONVARCHAR2(1)指示会话是否在sampling(Y)或不执行时执行SQL语句(NIN_PLSQL_EXECUTIONVARCHAR2(1)指示会话是否在sampling(Y)或不执行时执行PL / SQL(NIN_PLSQL_RPCVARCHAR2(1)指示会话是否在sampling(Y)或不执行时执行入站PL / SQL RPC调用(NIN_PLSQL_COMPILATIONVARCHAR2(1)指示会话是在编译时是否正在编译PL / SQL(Y)或不是(NIN_JAVA_EXECUTIONVARCHAR2(1)指示会话是否在sampling(Y)或不执行时执行Java(NIN_BINDVARCHAR2(1)指示会话是否在sampling(Y)或不执行时执行绑定操作(NIN_CURSOR_CLOSEVARCHAR2(1)指示会话是否在sampling(Y)或不是(N)时关闭游标IN_SEQUENCE_LOADVARCHAR2(1)指示会话是按顺序加载(按顺序加载代码)(Y)还是不加载(NCAPTURE_OVERHEADVARCHAR2(1)指示会话是否正在执行捕获代码(Y)或不执行(NREPLAY_OVERHEADVARCHAR2(1)指示会话是否正在执行重放代码(Y)或不执行(NIS_CAPTUREDVARCHAR2(1)指示是否正在捕获会话(Y)或不捕获(NIS_REPLAYEDVARCHAR2(1)指示会话是否正在重播(Y)或不重播(NSERVICE_HASHNUMBER标识服务的哈希值;映射到V$ACTIVE_SERVICES.NAME_HASHPROGRAMVARCHAR2(48)操作系统程序的名称MODULE脚2VARCHAR2(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_TIMETM_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使用的临时表空间大小”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!