[20240321]提示冲突问题.txt --//今天优化一条监控sql语句,遇到提示冲突的问题,做一个记录: 1.环境: SYS@192.168.100.235:1521/orcl> @ pr ============================== PORT_STRING : x86_64/Linux 2.4.xx VERSION : 19.0.0.0.0 BANNER : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production BANNER_FULL : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 BANNER_LEGACY : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production CON_ID : 0 PL/SQL procedure successfully completed. 2.问题提出: SYS@192.168.100.235:1521/orcl> @ fms.sql 5 15 &day FORCE_MATCHING_SIGNATURE SQL_ID_COUNT TOTAL_SECONDS ------------------------ ------------ ------------- 7055080024159627634 23 65 6462934727001839235 20 21 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 17409746777760600368 14 16 11135749189737159965 12 16 829290737292318906 12 14 11135588330860454200 8 11 11034937719941372916 8 10 9685323836218277500 7 7 8097234170242639654 5 6 9 rows selected. --// 昨天的情况: SYS@192.168.100.235:1521/orcl> @ dfms.sql 5 15 sysdate-2 sysdate-1 FORCE_MATCHING_SIGNATURE SQL_ID_COUNT TOTAL_SECONDS ------------------------ ------------ ------------- 17409746777760600368 43 960 11034937719941372916 23 770 11135588330860454200 22 460 16405634091854084691 21 390 8097234170242639654 18 380 --//很明显今天已经优化很多. SYS@192.168.100.235:1521/orcl> @ sqlff 6462934727001839235 .45 time unit : millisecond BEGIN_INTERVAL_TIME INST_ID SQL_ID PLAN_HASH_VALUE EXECUTIONS ELA_MS_PER_EXEC CPU_MS_PER_EXEC ROWS_PER_EXEC LIOS_PER_EXEC BLKRD_PER_EXEC IOW_MS_PER_EXEC AVG_IOW_MS CLW_MS_PER_EXEC APW_MS_PER_EXEC CCW_MS_PER_EXEC ------------------- ---------- ------------- --------------- ---------- --------------- --------------- ------------- ------------- -------------- --------------- ----------- --------------- --------------- --------------- 2024-03-21 07:00:09 1 3pca49x8wzrnd 1617869433 7 28 25 1.0 3414 0 0 0.0 0 0 0 2024-03-21 07:00:09 1 3tv1zhzpktjtk 1617869433 7 26 25 1.0 3414 0 0 0.0 0 0 0 2024-03-21 07:00:09 1 bc20nn2pr4bgb 1617869433 7 22 21 1.0 3312 0 0 0.0 0 0 0 2024-03-21 07:00:09 1 dxvtb8qh04bkf 1617869433 7 23 23 1.0 3211 0 0 0.0 0 0 0 --//昨天已经优化,但是我在优化时遇到1个问题.优化后提示冲突,奇怪!!我抽取提示直接贴上来的不可能存在错误. $ cat dxvtb8qh04bkf.sql9dd_0 set termout off set sqlblanklines on alter session set current_schema=ZGYWMONITOR; alter session set statistics_level=all; --SQL_ID = dxvtb8qh04bkf SELECT 'SORT_ROWS' ROWINFO, e.value - b.value va FROM dba_hist_sysstat b, dba_hist_sysstat e WHERE b.snap_id = 29031 AND e.snap_id = 29032 AND b.dbid = 1585360079 AND e.dbid = 1585360079 AND b.instance_number = 1 AND e.instance_number = 1 AND b.stat_id = e.stat_id AND e.stat_name IN ('sorts (rows)'); set termout on set sqlblanklines off --@zws '' '' --@dpc '' '' '' @dpc '' outline '' rollback; alter session set current_schema=SYS ; --//看到这样的代码非常无语,根本无需要连接,1次抽取完成需要的数值,然后处理就ok了. select * FROM dba_hist_sysstat b WHERE b.snap_id in (29031,29032) AND b.dbid = 1585360079 AND b.instance_number = 1 AND b.stat_name IN ('sorts (rows)'); --//先抽取然后很容易处理得到需要的结果,我们使用的监控大量的都是像上面的写法. --//我已经使用sql profile稳定了执行计划,执行dxvtb8qh04bkf.sql9dd_0脚本时.执行计划出现如下: Hint Report (identified by operation id / Query Block Name / Object Alias): Total hints for statement: 28 (U - Unused (6)) --------------------------------------------------------------------------- 0 - STATEMENT - ALL_ROWS - DB_VERSION('19.1.0') - IGNORE_OPTIM_EMBEDDED_HINTS - OPTIMIZER_FEATURES_ENABLE('19.1.0') 0 - SEL$3 U - leading(sn s nm) / rejected by IGNORE_OPTIM_EMBEDDED_HINTS - MERGE(@"SEL$3" >"SEL$2") 0 - SEL$335DD26A - MERGE(@"SEL$335DD26A" >"SEL$1") 0 - SEL$5 U - leading(sn s nm) / rejected by IGNORE_OPTIM_EMBEDDED_HINTS - MERGE(@"SEL$5" >"SEL$4") 0 - SEL$7286615E - MERGE(@"SEL$7286615E" >"SEL$1") 1 - SEL$573A9BEE - LEADING(@"SEL$573A9BEE" "SN"@"SEL$5" "SN"@"SEL$3" "NM"@"SEL$5" "S"@"SEL$5" "S"@"SEL$3" "NM"@"SEL$3") 6 - SEL$573A9BEE / SN@SEL$5 U - use_hash(sn s) / rejected by IGNORE_OPTIM_EMBEDDED_HINTS - INDEX_RS_ASC(@"SEL$573A9BEE" "SN"@"SEL$5" ("WRM$_SNAPSHOT"."DBID" "WRM$_SNAPSHOT"."SNAP_ID" "WRM$_SNAPSHOT"."INSTANCE_NUMBER")) 8 - SEL$573A9BEE / SN@SEL$3 U - use_hash(sn s) / rejected by IGNORE_OPTIM_EMBEDDED_HINTS - INDEX_RS_ASC(@"SEL$573A9BEE" "SN"@"SEL$3" ("WRM$_SNAPSHOT"."DBID" "WRM$_SNAPSHOT"."SNAP_ID" "WRM$_SNAPSHOT"."INSTANCE_NUMBER")) - USE_NL(@"SEL$573A9BEE" "SN"@"SEL$3") 10 - SEL$573A9BEE / NM@SEL$5 - FULL(@"SEL$573A9BEE" "NM"@"SEL$5") - USE_NL(@"SEL$573A9BEE" "NM"@"SEL$5") 12 - SEL$573A9BEE / S@SEL$5 U - use_hash(sn s) / rejected by IGNORE_OPTIM_EMBEDDED_HINTS - BATCH_TABLE_ACCESS_BY_ROWID(@"SEL$573A9BEE" "S"@"SEL$5") - INDEX_RS_ASC(@"SEL$573A9BEE" "S"@"SEL$5" ("WRH$_SYSSTAT"."DBID" "WRH$_SYSSTAT"."SNAP_ID" "WRH$_SYSSTAT"."INSTANCE_NUMBER" "WRH$_SYSSTAT"."STAT_ID" "WRH$_SYSSTAT"."CON_DBID")) - USE_HASH(@"SEL$573A9BEE" "S"@"SEL$5") 15 - SEL$573A9BEE / S@SEL$3 U - use_hash(sn s) / rejected by IGNORE_OPTIM_EMBEDDED_HINTS - BATCH_TABLE_ACCESS_BY_ROWID(@"SEL$573A9BEE" "S"@"SEL$3") - INDEX_RS_ASC(@"SEL$573A9BEE" "S"@"SEL$3" ("WRH$_SYSSTAT"."DBID" "WRH$_SYSSTAT"."SNAP_ID" "WRH$_SYSSTAT"."INSTANCE_NUMBER" "WRH$_SYSSTAT"."STAT_ID" "WRH$_SYSSTAT"."CON_DBID")) - USE_HASH(@"SEL$573A9BEE" "S"@"SEL$3") 17 - SEL$573A9BEE / NM@SEL$3 - INDEX(@"SEL$573A9BEE" "NM"@"SEL$3" ("WRH$_STAT_NAME"."DBID" "WRH$_STAT_NAME"."STAT_ID" "WRH$_STAT_NAME"."CON_DBID")) - USE_NL(@"SEL$573A9BEE" "NM"@"SEL$3") Note ----- - SQL profile switch tuning dxvtb8qh04bkf used for this statement --//我不明白为什么出现提示冲突.仔细简单发现原来底层的视图加入了提示. SYS@192.168.100.235:1521/orcl> @ ddl dba_hist_sysstat C300 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ CREATE OR REPLACE FORCE NONEDITIONABLE VIEW "SYS"."DBA_HIST_SYSSTAT" ("SNAP_ID", "DBID", "INSTANCE_NUMBER", "STAT_ID", "STAT_NAME", "VALUE", "CON_DBID", "CON_ID") AS select "SNAP_ID","DBID","INSTANCE_NUMBER","STAT_ID","STAT_NAME","VALUE","CON_DBID","CON_ID" from AWR_CDB_SYSSTAT; SYS@192.168.100.235:1521/orcl> @ ddl AWR_CDB_SYSSTAT C300 -------------------------------------------------------------------------------------------------- CREATE OR REPLACE FORCE NONEDITIONABLE VIEW "SYS"."AWR_CDB_SYSSTAT" CONTAINER_DATA ("SNAP_ID", "DBID", "INSTANCE_NUMBER", "STAT_ID", "STAT_NAME", "VALUE", "CON_DBID", "CON_ID") AS select /*+ leading(sn s nm) use_hash(sn s) */ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ s.snap_id, s.dbid, s.instance_number, s.stat_id, nm.stat_name, value, decode(s.con_dbid, 0, s.dbid, s.con_dbid), con_dbid_to_id(decode(s.con_dbid, 0, s.dbid, s.con_dbid)) con_id from WRM$_SNAPSHOT sn, WRH$_SYSSTAT s, WRH$_STAT_NAME nm where s.stat_id = nm.stat_id and s.dbid = nm.dbid and s.snap_id = sn.snap_id and s.dbid = sn.dbid and s.instance_number = sn.instance_number and sn.status = 0; --//注意看下划线,定义视图AWR_CDB_SYSSTAT里面出现了提示,怪不得11g下许多这类语句执行效率还是可以,到了19c引入PDB后,视图定义 --//发生了变化,导致像这样写法的执行计划发生了畸变,许多需要2-3秒才能完成. SYS@book> @ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SYS@book> @ ddl DBA_HIST_SYSSTAT C300 ---------------------------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE FORCE VIEW "SYS"."DBA_HIST_SYSSTAT" ("SNAP_ID", "DBID", "INSTANCE_NUMBER", "STAT_ID", "STAT_NAME", "VALUE") AS select s.snap_id, s.dbid, s.instance_number, s.stat_id, nm.stat_name, value from WRM$_SNAPSHOT sn, WRH$_SYSSTAT s, DBA_HIST_STAT_NAME nm where s.stat_id = nm.stat_id and s.dbid = nm.dbid and s.snap_id = sn.snap_id and s.dbid = sn.dbid and s.instance_number = sn.instance_number and sn.status = 0; --//11g就没有这类提示.
[20240321]提示冲突问题.txt
来源:这里教程网
时间:2026-03-03 19:42:56
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- library cache pin模拟与处理
library cache pin模拟与处理
26-03-03 - 年报盈利大幅增长,满帮抓住了数字物流“新质生产力”
年报盈利大幅增长,满帮抓住了数字物流“新质生产力”
26-03-03 - rac心跳延迟现象及排查
rac心跳延迟现象及排查
26-03-03 - 数据库管理-第157期 Oracle Vector DB & AI-08(20240301)
- 19c使用asm报磁盘组未挂在及密码错误
19c使用asm报磁盘组未挂在及密码错误
26-03-03 - AIGC赋能,天猫精灵、华米科技“抢跑”智能穿戴
AIGC赋能,天猫精灵、华米科技“抢跑”智能穿戴
26-03-03 - oracle数据库名、实例名、服务名等区分
oracle数据库名、实例名、服务名等区分
26-03-03 - 数据库管理-第159期 Oracle Vector DB & AI-10(20240311)
- 数据库管理-第158期 Oracle Vector DB & AI-09(20240304)
- 透视B站财报:从前景看“钱景”
透视B站财报:从前景看“钱景”
26-03-03
