Category Archives: ORACLE

所有Oracle技术文章

利用分析函数改写范围判断自关联查询

最近碰到一个单条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

Posted in ORACLE | Tagged , | Leave a comment

UPDATE语句是否带有WHERE语句对更新重启动的影响

最近看到一个比较有意思的例子,是和更新重启动有关。 更新重启动是Oracle中一个隐藏的知识点,当Oracle在读取数据时,会构造读一致性,当读取的内容发生了修改,Oracle会通过UNDO信息来还原数据的前镜像,把数据还原到查询发生的时刻,通过构造一致性的结果来实现读取数据的一致性和隔离性。 Oracle实现的读一致性也被称为多版本读一致性,每个会话都会构造自己的一致性查询版本。但是对于写操作而言,这种方式是不可能的,因为最终的数据只有一份,如要要修改数据,就只能修改唯一的这份数据,所以对读操作,访问的是一致性版本,而对于写操作,修改的永远是当前版本。 既然写操作只能修改当前版本,当写操作执行的过程中,发现要修改的记录发生了变化,破坏了更新发起时刻的一致性,这时就触发了更新重启动,也就是说更新操作会放弃之前的修改,然后重新发起一次新的更新操作。 ITPUB上有一个有意思的案例,展示的就是更新重启动现象,链接如下:http://www.itpub.net/forum.php?mod=viewthread&tid=2102897 这里来重现一下更新重启动,建立一张简单测试用表,在会话一插入初始数据并进行更新操作: SQL> SET SQLP ‘SQL1> ‘ SQL1> CREATE TABLE T_UPDATE (ID NUMBER); Table created. SQL1> INSERT INTO T_UPDATE SELECT ROWNUM FROM DUAL CONNECT BY LEVEL < 4; 3 rows created. SQL1> COMMIT; Commit complete. SQL1> … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

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

Posted in ORACLE | Tagged , , | Leave a comment

非空字段空值的产生

上一篇讨论了非空字段中如果存在空值对于查询的影响,这里描述一下导致问题的原因。 非空字段空值对查询的影响:http://yangtingkun.net/?p=1481 书接上文,其实CBO的判断本身是没有问题的,问题在于,为什么一个空值会存在非空约束的字段中。 重新看一下问题: SQL> select * from t_def; ID NAME TYPE ———- —————————— ——– 1 a SQL> select * from t_def where type is null; no rows selected SQL> select * from t_def where type is not null; ID … Continue reading

Posted in BUG, ORACLE | Tagged , , | Leave a comment

非空字段空值对查询的影响

BLOG有三年没有更新了,其实这篇文档也是三年前写的,不过当时没有贴出来,今天看到有人问起,于是分享出来。 这是客户数据库中碰到的一个有意思的问题。 数据库版本为11.2.0.3,客户的DSG同步软件在同步某张表时出现了错误,报错无非插入空值ORA-1400,本来这是一个很简单的问题,但是诊断发现问题比较有意思: SQL> select * from t_def; ID NAME TYPE ———- —————————— ——– 1 a SQL> select * from t_def where type is null; no rows selected SQL> select * from t_def where type is not null; ID NAME … Continue reading

Posted in BUG, ORACLE | Tagged , , , | 2 Comments

密码延迟验证导致的系统HANG住

又是一个11g新特性导致的问题。 这个新特性很早之前就研究过,也在其他客户处碰到过类似的问题。从11g开始,如果一个用户使用不正确的密码尝试登录数据库,那么随着登录失败次数的增加,每次登录验证前延迟等待的时间也会增加: SQL> SET TIME ON 18:30:54 SQL> 18:30:58 SQL> conn test/test Connected. 18:31:25 SQL> 18:31:25 SQL> conn test/a conn test/a conn test/a conn test/a conn test/a conn test/a conn test/a conn test/test conn test/a ERROR: ORA-01017: invalid username/password; logon … Continue reading

Posted in ORACLE | Tagged , , , , | Leave a comment

IP地址被清空导致实例重启

客户10.2.0.4 RAC for Solaris 10环境突然出现了实例重启的现象。 数据库正常运行到下午3点左右,随后两个节点分别重启,其中一个节点上的实例无法自动启动。检查两个实例的告警日志发现,在节点重启前,两个节点都出现了明显的ORA-27504错误: Wed Apr 10 15:00:05 2013 Errors IN file /oracle/admin/orcl/udump/orcl1_ora_10997.trc: ORA-00603: ORACLE server SESSION TERMINATED BY fatal error ORA-27504: IPC error creating OSD context ORA-27300: OS system dependent operation:if_not_found failed WITH STATUS: 0 ORA-27301: OS … Continue reading

Posted in ORACLE | Tagged , , , , , , , , , , , | Leave a comment

ORA-7445(kjbcrcomplete)错误

客户10.2.0.5 RAC在验证表的逻辑结构是出现ORA-7445错误。 错误信息如下: Sun Mar 31 03:45:16 EAT 2013 Errors IN file /oracle/app/admin/orcl/udump/orcl2_ora_4039.trc: ORA-07445: 出现异常错误: 核心转储 [kjbcrcomplete()+5521] [SIGSEGV] [Invalid permissions FOR mapped object] [0x00000002A] [] [] 详细TRACE信息为: Ioctl ASYNC_CONFIG error, errno = 1 *** 2013-03-31 02:20:45.846 *** ACTION NAME:() 2013-03-31 … Continue reading

Posted in BUG | Tagged , , , | Leave a comment

Streams AQ: qmn coordinator waiting for slave to start等待

一个客户的10.2.0.5数据库的TOP 5等待出现了这个等待事件。 其实导致这个Streams AQ: qmn coordinator waiting for slave to start等待出现的原因除了参数设置不合理外,最主要的原因还是数据库太闲了: Event Waits Time(s) Avg Wait(ms) % Total Call   Time Wait Class CPU time 372 59.0 Streams AQ: qmn   coordinator waiting for slave to start 6 34 5,667 … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

ORA-600(13310)错误

客户10.2.0.4 RAC环境出现ORA-600[13310]错误。 错误信息如下: Sun Aug 1 04:08:24 2010 Errors IN file /oracle/admin/ORCL/udump/orcl1_ora_14964.trc: ORA-00603: ORACLE server SESSION TERMINATED BY fatal error ORA-27544: Failed TO map memory region FOR export ORA-27300: OS system dependent operation:socket failed WITH STATUS: 23 ORA-27301: OS failure … Continue reading

Posted in BUG | Tagged , , , , , , , , , , , , , | Leave a comment