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

发布时间:2021-11-10 09:12:18 作者:小新
来源:亿速云 阅读:96

小编给大家分享一下如何查询过去一段时间内某条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样本的ID
SAMPLE_TIMETIMESTAMP(3)采集样品的时间
IS_AWR_SAMPLEVARCHAR2(1)指示此样本是否已刷新或将刷新到自动工作负载存储库(DBA_HIST_ACTIVE_SESS_HISTORY)(Y)或不是(N
SESSION_IDNUMBER会话标识; 映射到V$SESSION.SID
SESSION_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参数设置为时使用的签名FORCE
TOP_LEVEL_SQL_IDVARCHAR2(13)顶级SQL语句的SQL标识符
TOP_LEVEL_SQL_OPCODENUMBER指示顶级SQL语句所处的操作阶段
SQL_PLAN_HASH_VALUENUMBER游标的SQL计划的数字表示。此信息可能不适用于所有会话样本。V$SESSION不包含此信息。
SQL_PLAN_LINE_IDNUMBERSQL计划行ID
SQL_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_STATEWAITING,则表示会话在采样时等待的事件。

如果SESSION_STATEON 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_STATEWAITING,那么会话实际花费在等待该事件的时间(以微秒为单位)。此列设置为采样时正在进行的等待。

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

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_SESSION
BLOCKING_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消费者组ID
XIDRAW(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_HASH
PROGRAMVARCHAR2(48)操作系统程序的名称
MODULE脚2 VARCHAR2(48)采样时执行模块的名称,由DBMS_APPLICATION_INFO.SET_MODULE过程设置
ACTIONFootref 2VARCHAR2(32)采样时执行模块的名称,由DBMS_APPLICATION_INFO.SET_ACTION过程设置
CLIENT_IDVARCHAR2(64)会话的客户标识符; 映射到V$SESSION.CLIENT_IDENTIFIER
MACHINEVARCHAR2(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使用的临时表空间大小”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. js获取一段时间内的工时,除去周末,午休时间
  2. 查询复杂sql的表的大小

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql

上一篇:数据库中如何使用dbms_monitor跟踪多个会话,service_name,sid等

下一篇:Django中的unittest应用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》