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

55次阅读
没有评论

共计 5970 个字符,预计需要花费 15 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下如何查询过去一段时间内某条 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)或不是(N)SESSION_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)或不执行(N)SQL_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 脚 1  NUMBER 保留供内部使用 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_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_STATE= WAITING,那么会话实际花费在等待该事件的时间(以微秒为单位)。此列设置为采样时正在进行的等待。

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

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_SESSIONBLOCKING_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 消费者组 IDXIDRAW(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_HASHPROGRAMVARCHAR2(48) 操作系统程序的名称 MODULE 脚 2  VARCHAR2(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_TIME 和 TM_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 使用的临时表空间大小”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计5970字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)