小编给大家分享一下如何查询过去一段时间内某条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) | 会话类型:
|
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 ,则表示会话在采样时等待的事件。如果 另请参阅: 附录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上进行采样时; 如果会话在抽样时等待 注意:是否 |
SESSION_STATE | VARCHAR2(7) | 会话状态:
|
TIME_WAITED | NUMBER | 如果SESSION_STATE = WAITING ,那么会话实际花费在等待该事件的时间(以微秒为单位)。此列设置为采样时正在进行的等待。如果等待事件持续超过一秒并且在多个会话样本行中等待,则等待该等待事件所花费的实际时间将填充在这些会话样本行的最后一行中。在任何给定时间,此信息将不适用于最新的会话样本。 |
BLOCKING_SESSION_STATUS | VARCHAR2(11) | 阻止会话的状态:
|
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内存量(以字节为单位) |
看完了这篇文章,相信你对“如何查询过去一段时间内某条sql使用的临时表空间大小”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!