关于Oracle的技术问答
今天和Oracle的一个资深前辈聊了下,聊了不少技术的问题,他也来了兴致,随机提了几个问题来问我,发现看似简单的问题还是有不少的干货,很多东西似懂非懂其实还是没有深入理解,限于篇幅,整理了一部分的问题,有些问题回答的对,但是感觉理解还是不够清晰深入。log buffer log buffer的作用 ...
特殊的物化视图刷新
现在有一个需求,某个环境中存在两个用户,一个用户中存在物化视图,另一个用户中存在源表,根据业务的需要,需要做一种特别的物化视图刷新。物化视图用户中的物化视图为CORP_NAME源数据用户中的表为ADD_CORP_NAME可能数据刷新是没有问题,关键就是在于CORP_NAME中的字段要比ADD_CORP_NAME多一些。CORP_ID &n...
巧用外部表避免大量的insert
昨天开发咨询我一个问题,希望我对下面的语句进行调优。语句类似下面的形式SELECT subscriber_no FROM SUBSCRIBER SWHERE SUBSCRIBER_TYPE = 'RM' and CONV_RUN_NO in (20, 21, 22, 23) and not EXISTS (...
通过pl/sql来格式化sql
在之前的一篇博文中分享了通过java来格式化sql,http://blog.itpub.net/23718752/viewspace-1444910/今天突然想试试通过sql来格式化一把sql试试,想起来容易,做起来难,自己捣鼓了半天,总算是弄出点雏形了。简单分享一下。我们还是格式化同一段sql语句。select /*+ leading(s) index(s TABLE_BPM_STEP_INST_5IX) use_nl...
一个oracle蠕虫病毒
关于计算机病毒,说起来内容就很丰富了,但是第一次听到关于oracle中的病毒时,却感觉很新鲜。这是一个蠕虫病毒,距离现在已经有10年了,但是现在看起来还是能够借鉴不少精华的东西。把里面的一部分内容能够应用到实际中还是很不错的选择。说起这个病毒,还有点小插曲。2005年10 月 31 日,有一个匿名者在 Full-disclosure...
一个oracle查询引起的bug
任何软件都不是完美的,oracle也是如此,隔一段时间就会收到oracle的邮件说建议打哪些安全补丁什么的。新发布的产品都是release 1,比如10gR1,稳定版本都在10gR2 不要小看着两个大版本的变化,印象比较深的就是10g 10.2.0.1的安装包有大概600多M,但是在10.2.0.2.0的补丁包就比安装包略大了,可见在产品线内做了很多的修改,...
关于ORA-12801,ORA-27090的简单分析
今天下午收到客户的邮件,说有一个job在运行的时候报错了,希望我们能帮忙看看是什么原因。ERROR: Caught en exception: ORA-12801: error signaled in parallel query server P130 ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O Linux-x86_64 Error: 2: No such file or directo...
关于sql_profile中的绑定变量
使用sql_profile来调优一些紧急的性能sql可以起到立竿见影的效果,如果sql语句本身结构就很清晰,简单,略作修改就能得到调优后的sql语句。但是如果语句中含有绑定变量,如果要得到调优后的sql_id就有些困难了。比如我们存在下面的sql语句。SELECT NVL(SUM(CUST.WEIGHT), 0) TOTAL_WEIGHT FROM BL1_CUSTOMER CUST...
使用sql*plus编辑sql文本
工作中可能会经常实用工具来编辑sql 文本,实用sql*plus来编辑的机会比较少,但是这些也是硬功夫,一旦有需要手工编辑,其实发现也是很容易的。CommandAbbreviationPurposeAPPEND text A text adds text at the end of the curre...
一条简单的sql语句导致的系统问题
新年,给大家拜年了。祝大家工作顺利,万事如意。今天照例简单检查了系统的情况,发现在客户的服务器在下午的3-5点这个时间段,数据库负载略有上升,但是幅度不大,因为生产的awr抓取频率是10分钟,所以还是能够通过awr分析出一些问题。负载情况如下:抓取了一个最新时间段的awr报告。查看数据库负载,比平时的负载要...
通过ORA错误反思sql语句规范
今天快下班的时候,有个开发的同事问我一个问题,说他在客户端执行一条sql语句,里面包含子查询,如果单独执行子查询,会报"invalid identifier"的错误,但是整个sql语句一致性就没有错误,而且数据的结果还是正确的,碰到这种问题,想必都是信心满满,越是奇怪越想探个究竟。为了能够简单说明这个问题,我使用如下下面的...
使用ash分析ORA-01652问题
今天在检查生产库的问题的时候,收到开发的邮件,他们在运行一个job的时候报出了ora的错误,想让我们来看一下是什么原因。ora错误是01652的错误,单纯来看是由于临时表空间不足造成的。ORA-01652:unable to extend temp segment by 128 in tablespace TEMP因为问题发生在上午,从shared pool里查看对应的sql已经查...
关于db_files和maxdatafiles的问题
昨天在做生产监控的时候发现有个库的表空间不够了,就发邮件给客户的dba去处理,但是得到的反馈是尝试添加的时候发现已经超过了数据文件的最大数限制。这个错误毫无疑问就是"ORA-00059: Maximum Number Of db_files Exceeded"一看到这个问题,一下子感觉就头大了。这个参数是在创建数据库的时候就应该考虑到的。竟然没有考...
使用logon trigger完成动态的session跟踪
在之前讨论过 关于oracle中session跟踪的总结,可以参见链接 http://blog.itpub.net/23718752/viewspace-1150568/基本的session跟踪方法都做了讨论,但是在实际应用中场景可能要复杂一些,比如我们可以对指定的session开诊断事件,如果session中运行的某个环节出现问题,可以根据诊断事件得到比较明细的递归sql...
同样的sql执行结果不同的原因分析
今天开发的同事问我一个问题,说有一个sql语句,在weblogic的日志中执行没有结果,但是手动拷贝数据到客户端执行,却能够查到。这种奇怪的问题一下子就能引起我的好奇心,从我知道的原因来看啊,可能是存在不可见字符造成的。对于不可见字符的问题,有必要先说明一下,可以简单举个例子。我们创建一个表,然后插入的数据...
关于ORA-01779问题的分析和解决
最近同事问我一个问题,是关于一个update语句的问题,需求有点特别,结果在使用update语句尝试了各种方法后,仍然是不依不饶的报出ORA-01779的错误。今天专门花时间分析了一下这个问题,还是有些收获。为了说明问题,我们先来看两组数据有两个表data,link,现在希望更新data表中的amount列值,和link表的credit_class做关...
关于shell中的pl/sql脚本错误排查与分析
今天有个同事问我一个问题,他说运行shell脚本的时候抛出了ORA 错误,但是对于错误的原因没有思路,想让我帮他看看。我查看了下,脚本的结构比较清晰,看起来像是按照shell脚本风格来做的,首先在pl/sql中声明了大量的procedure,类似shell中的function,大概有10多个procedure然后在最后使用一个类似main函数的pl/sql块...
awr中DB CPU过低的原因分析
前几天在做巡检的时候发现有个库的负载在某一个时间段内极高,高达100倍。一个10分钟的awr报告,得到的db time 却有1000分钟。Snap Id Snap Time Sessions Cursors/Session Begin Snap:2774513-Jan-15 06:00:...
强大的awr format
awr报告对于dba而言是工作中重要的一部分内容,有些时候感觉跟去医院看病的化验单一样,各种指标和参数。有些高了,有些低了都是需要注意的内容。之前打印了一份awr报告,竟然有将近40页的样子,但是阅读awr报告也只能按照一定的思路来看,如果通读,那确实是云里雾里。awr format 是在http://tylermuth.wordpress.com/这个...
关于SQLRecoverableException问题的排查和分析
上周的时候在升级时候,客户反馈某个job报了下面的错误,想让我们查看一下是不是数据库这边有什么问题。报错的内容如下。Caused by: java.sql.SQLRecoverableException: No more data to read from socket at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1142) ...