查询过去一段时间内某条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上或正在等待不属于 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

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

如果 SESSION_STATE ON 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_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 脚2  VARCHAR2(48) 采样时执行模块的名称,由 DBMS_APPLICATION_INFO.SET_MODULE 过程 设置
ACTION Footref 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_ID Footref 1 NUMBER 如果正在捕获或重放会话,那么 DBREPLAY_FILE_ID 是工作负载捕获或工作负载重放的文件ID;  否则它是NULL。
DBREPLAY_CALL_COUNTER Footref 1 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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31547066/viewspace-2286075/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中的临时表空间Temporary Tablespace)主要用于存储SQL语句执行过程中生成的临时结果集和排序中间结果。它在数据库运行过程中起到了重要的作用。 Oracle数据库中的临时表空间使用历史可以追溯到早期版本的Oracle数据库。在Oracle 7中,临时表空间的引入就大大提高了数据库的性能和可伸缩性。在早期版本的Oracle数据库中,排序和临时结果集的存储通常是通过使用数据库内部的排序区(Sort Area)和排序段(Sort Segment)来完成的,这种方式对内存的需求较大,并且容易导致性能瓶颈。为了解决这个问题,Oracle引入了临时表空间的概念。 临时表空间的引入提供了一种从磁盘读取和写入排序结果的方法,从而减轻了内存的压力,并改善了排序操作的性能。临时表空间可以由系统管理员在数据库中手动创建,或者可以由自动管理的表空间管理(Automatic Storage Management)来创建和管理。 临时表空间使用方式通常是在SQL语句执行之前,临时表空间会被分配给用户会话。当SQL语句执行期间需要排序或者产生临时结果集时,数据被写入临时表空间。一旦排序或者查询结束,临时表空间会被释放,以便其他会话使用临时表空间大小通常需要根据系统的负载和需求来决定,过小的临时表空间可能导致临时表空间不足的错误,而过大的临时表空间则会占用过多的磁盘空间。因此,管理者需要根据实际情况来调整临时表空间大小。 总之,Oracle数据库中的临时表空间SQL语句的执行过程中起到了重要的作用,它提供了一种存储临时结果集和排序结果的方法,并提升了数据库的性能和可伸缩性。通过合理地设置临时表空间大小和管理,可以确保数据库的高效运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值