-
Recent Posts
Recent Comments
- yangtingkun on 非空字段空值对查询的影响
- Eric Zong on 非空字段空值对查询的影响
- Kamus on Oracle Ace Director
- 设置全局死锁优先级 | yangtingkun on RAC全局死锁检测时间
- ORA-600(krbounotread_noctx)错误 | yangtingkun on ORA-600(krboReadBitmap_badbitmap)错误
Archives
- December 2020
- February 2019
- December 2018
- November 2018
- October 2018
- July 2018
- June 2018
- May 2018
- July 2016
- July 2013
- June 2013
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
Categories
Meta
Tag Archives: sql
利用分析函数改写范围判断自关联查询
最近碰到一个单条SQL运行效率不佳导致数据库整体运行负载较高的问题。 分析、定位数据库的主要负载是这条语句引起的过程相对简单,通过AWR报告就可以比较容易的完成定位,这里就不赘述了。 现在直接看一下这个导致性能问题的SQL语句,其对应的SQL REPORT统计如下: Stat Name Statement Total Per Execution % Snap Total Elapsed Time (ms) 363,741 363,740.78 8 .42 CPU Time (ms) 362,770 362,770.00 8 .81 Executions 1 Buffer Gets 756 756.00 0.00 Disk Reads 0 0.00 … Continue reading
SQL解决刑侦推理问题
前些天看到一个朋友在朋友圈里面贴了个图,上面是2018年刑侦科推理试题,看了一下题目,这些题目都是彼此依赖,很难找到一个题目作为入手点可以进一步分析,因此可能需要用纸笔配合大量的假设和试错才能继续完成。 原题如下: 不过这种问题其实是SQL擅长的领域,于是一时手痒,写了一个SQL语句: SQL> WITH T AS 2 (SELECT ASCII(‘A’) R FROM DUAL 3 UNION ALL 4 SELECT ASCII(‘B’) FROM DUAL 5 UNION ALL 6 SELECT ASCII(‘C’) FROM DUAL 7 UNION ALL … Continue reading
ITPUB SQL大赛第四期
SQL大赛第四期解法的最终答案。 第四期题目参考:http://www.itpub.net/thread-1411495-1-1.html版主newkid点评参考:http://www.itpub.net/thread-1417576-1-1.html 最近整理BLOG文章时发现,这篇文章当时没有贴出来。由于当时发现最后一题出现了错误,且手头的事情比较多,本打算搞清楚之后再把结果贴出来,没想到后来忘记了。虽然已经过去了一年了,不过信守自己的承诺,还是把最终结果贴出来。 我的代码为: WITH DAY AS ( SELECT TO_DATE(:P_START_DATE, ‘YYYYMMDD’) + ROWNUM – 1 DAY FROM DUAL CONNECT BY ROWNUM <= TO_DATE(:P_END_DATE, ‘YYYYMMDD’) – TO_DATE(:P_START_DATE, ‘YYYYMMDD’) + 1 ), COMPANY_INFO AS ( SELECT A.USER_ID, SERVICE_ID, B.COMPANY_ID, GREATEST(START_DATE, TO_DATE(:P_START_DATE, ‘YYYYMMDD’)) … Continue reading
SQLPLUS小技巧带行号PLSQL的粘贴
前两天写了一篇如何在SQLPLUS中粘贴SQL语句,但是改方法对于SQL有效,对于PL/SQL语句则存在一些小问题。 SQLPLUS小技巧带行号SQL的粘贴:https://yangtingkun.net/?p=1167 还是在sqlplus中粘贴带行号的问题,对于PL/SQL,之前给出的方法存在问题: SQL> DECLARE 2 V_NUM NUMBER; 3 BEGIN 4 FOR I IN 1..10000 LOOP 5 NULL; 6 END LOOP; 7 END; 8 / PL/SQL PROCEDURE successfully completed. SQL> DECLARE 2 . SQL> 2 V_NUM NUMBER; SQL> 3 BEGIN … Continue reading
SQLPLUS小技巧带行号SQL的粘贴
介绍一个SQLPLUS中粘贴SQL语句的小技巧。 除了Windows环境下的SQLPLUSW之外,当在sqlplus中运行了一个很长的语句后,得到的是一个带有行号的SQL: SQL> SELECT ksppinm name, 2 ksppstvl VALUE, 3 ksppdesc des 4 FROM x$ksppi x, x$ksppcv y 5 WHERE (x.indx = y.indx) 6 AND bitand(ksppiflg,268435456) = 0 7 AND ksppinm LIKE ‘max%size’; NAME VALUE DES —————— ————- ——————————- max_dump_file_size … Continue reading
将指定SQL的执行计划从共享池删除
如果Oracle的优化器产生了某种错误的执行计划,或者我们希望Oracle对于某个SQL重新进行分析,那么就需要这个SQL的执行计划在共享池中过期,而简单的方法在10.2.0.4以后才出现。 对于以前的版本而言,最显而易见的方法莫过于直接刷新共享池,但是如果是数据库中绝大部分的SQL都存在问题,那么这种方法无可厚非,也可能是见效最快的方法,而如果数据库中仅仅是个别的SQL存在问题,那么这种方法就过于暴力了。 SQL> SELECT COUNT(*) FROM dual; COUNT(*) ———- 1 SQL> SELECT sql_id, address, hash_value, executions, loads, parse_calls, invalidations 2 FROM v$sqlarea 3 WHERE sql_text = ‘select count(*) from dual’; SQL_ID ADDRESS HASH_VALUE EXECUTIONS LOADS PARSE_CALLS INVALIDATIONS ————- —————- ———- … Continue reading