ITPub博客

首页 > 数据库 > Oracle > [20240327]建立完善ffms.sql脚本.txt

[20240327]建立完善ffms.sql脚本.txt

原创 Oracle 作者:lfree 时间:2024-04-06 20:59:04 0 删除 编辑

[20240327]建立完善ffms.sql脚本.txt

--//查找FORCE_MATCHING_SIGNATURE的sql语句.

$ cat ffms.sql
-- Copyright 2023 lfree. All rights reserved.
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions.
--------------------------------------------------------------------------------
--
-- File name:   ffms.sql
-- Purpose:     find  force_matching_signature from gv$sql
--
-- Author:      lfree
--
-- Usage:
--     @ ffms FORCE_MATCHING_SIGNATURE <display_record_number>
--
--------------------------------------------------------------------------------

SELECT REPLACE (sql_fulltext, CHR (13), '') c200
  FROM gv$sqlarea
 WHERE FORCE_MATCHING_SIGNATURE = &&1 AND ROWNUM = 1;

prompt
prompt time unit : microsecond
prompt

SELECT *
  FROM (  SELECT sql_id
                ,child_number
                ,inst_id
                ,first_load_time
                ,buffer_gets
                ,executions
                ,elapsed_time
                ,ROUND (elapsed_time / nullif(executions,0),2) avg_ela_time
                ,plan_hash_value
                ,ROUND (buffer_gets / nullif(executions,0),2) lios_per_exec
            FROM gv$sql
           WHERE FORCE_MATCHING_SIGNATURE = &&1
        ORDER BY 4 DESC)
 WHERE ROWNUM <= &&2;

--//测试:
SYS@192.168.100.235:1521/orcl> @ ffms 9685323836218277500 10
C200
--------------------------------------------------------------------------------------
select  a.id,
a.test_no,
a.qc_test_id,
a.test_inst_id,
a.qc_inst_id,
a.qc_sample_id,
a.tenant_id from qc_tran_mapping a,qc_sample b WHERE b.id=a.qc_sample_id
and (a.TEST_INST_ID=1545 or a.TEST_INST_ID=1816) and
( (a.test_no=0 and a.test_no>0) or ( b.batch_no='BIO1 AU2' or a.QC_TEST_ID='BIO1 AU2'))

time unit : microsecond
SQL_ID        CHILD_NUMBER    INST_ID FIRST_LOAD_TIME     BUFFER_GETS EXECUTIONS ELAPSED_TIME PLAN_HASH_VALUE LIOS_PER_EXEC
------------- ------------ ---------- ------------------- ----------- ---------- ------------ --------------- -------------
78apm5qup5mn1            0          1 2024-03-29/10:21:02          10          1         8340       500258294            10
8gdr0adm7w5hb            0          1 2024-03-29/10:20:31          10          1         7766       500258294            10
7usr23k33zmzk            0          1 2024-03-29/10:20:00          10          1        10926       500258294            10
8yqp3f99kgtr1            0          1 2024-03-29/10:19:07          13          1         9824       500258294            13
1xdqq4vy1wyq6            0          1 2024-03-29/10:18:22          10          1         7669       500258294            10
dywp0bt6vgty3            0          1 2024-03-29/10:15:37          17          2         9156       500258294             9
5zhbut3pvbhw1            0          1 2024-03-29/10:13:54          27          3         8353       500258294             9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
852n7zj0u9vvk            0          1 2024-03-29/09:24:32          17          2         9238       500258294             9
3d0jrhqn7yjw5            0          1 2024-03-29/09:20:55          17          2         8861       500258294             9
g1f910vn117ad            0          1 2024-03-29/09:20:14          23          2         7740       500258294            12
10 rows selected.

--//看看没有使用绑定变量带来的问题,第一次执行基本消耗8XXX微秒,而且这条语句的逻辑读非常小,执行多次时间基本还是在这个量级.
--//看看下划线那行,执行3次,ELAPSED_TIME=8353,可以想象如果大量的sql语句没有使用绑定变量,大量的时间浪费在硬分析sql语句上.
--//聚集起来对服务器性能CPU的影响.

--//不过现在的服务器动不动都是32,64个CPU,许多开发还是不懂并且不重视这个问题,不过最近几年情况要比以前好许多,如果接触优化
--//项目,你可以发现OLTP系统绑定做的好的,优化相对简单许多.


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3011591/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969586