Author Archives: yangtingkun

访问ASM的ONNN进程占用大量CPU

客户的11.2 RAC环境中突然一个O002进程占用了100%的CPU,且一直不释放。 导致这个问题的原因应该是通过ASMCMD工具从ASM中拷贝了一个归档日志到本地磁盘,随后就发现一个ora_ [root@node-2 ~]# top top – 21:14:25 up 257 days, 4:33, 2 users, LOAD average: 1.69, 1.70, 1.56 Tasks: 994 total, 2 running, 991 sleeping, 0 stopped, 1 zombie Cpu(s): 2.2%us, 0.1%sy, 0.0%ni, 97.5%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st … Continue reading

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

使用kfed出现无法初始化diag的错误

测试环境上使用kfed工具出现错误。 错误信息如下: grid@solaris:~$ kfed ERROR!!! could NOT initialize the diag context grid@solaris:~$ id uid=502(grid) gid=501(dba) grid@solaris:/u02/app/oracle/product/11.2.0/grid/bin$ ./kfed Unable TO run program edgrid@solaris:~$ kfed ERROR!!! could not initialize the diag context grid@solaris:~$ id uid=502(grid) gid=501(dba) grid@solaris:/u02/app/oracle/product/11.2.0/grid/bin$ ./kfed Unable to run program … Continue reading

Posted in ORACLE | Tagged , , , | 1 Comment

DBCA添加节点出现PRKC-1055错误

很早以前写过几篇文章,描述在RAC环境下添加节点的问题,其中在使用DBCA添加节点时,碰到了PRKC-1055错误。 Oracle10203RAC环境添加新节点(六):http://yangtingkun.itpub.net/post/468/493937 运行DBCA在配置好新实例的设置后,在最后运行的时候报错:Failed to create directory “” on “racnode3”, “PRKC-1055: Directory name passed was null”. PRKC-1055: Directory name passed was null。 本来一直认为是Oracle的DBCA处理不当,导致使用OMF存在异常,并最终引发了这个问题。最近Kamus也碰到了这个问题,最终发现是由于参数设置的问题,导致新增节点的目录参数设置和已有节点的参数冲突从而导致了问题。 可以参考文档DBCA Fails With PRKC-1055 While Adding a New Instance to an Existing RAC Database [ID 394519.1]。 简单的说,DBCA会验证目录设置在所有节点上是否存在。可以通过下面的脚本找到所有修改过的参数: SELECT … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

利用触发器解决更新主键冲突的问题

有朋友问我能否用触发器实现更新数据时,如果发现主键已经存在,则将冲突的主键更新为当前记录之前的主键值。 简单的说,如果表中存在主键为1和2的记录,如果一条UPDATE语句将1更新为2,那么想要实现的功能是为了确保这个UPDATE可以执行成功,在后台自动将ID为2的记录更新为1。 这个功能应该可以实现,但是直接在触发器中肯定无法实现,因为这是一个标准的变异表问题。而且即使是采用自治事务的方式,也需要小心,因为要修改原有的记录就必须通过UPDATE实现,而这个UPDATE又会导致触发器的触发,如果处理不当,就会导致循环触发。 SQL> CREATE TABLE T (ID NUMBER, NAME VARCHAR2(30), CONSTRAINT PK_T PRIMARY KEY (ID)); TABLE created. SQL> CREATE OR REPLACE PROCEDURE P_UPDATE_T (P_NEW NUMBER, P_OLD NUMBER) AS 2 BEGIN 3 FOR I IN (SELECT ID FROM T WHERE … Continue reading

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

ORA-600(6002)错误

客户数据库出现ORA-600(6002)错误。 在告警文件中出现大量的错误: Sun Apr 1 16:15:41 2012 Errors IN file /oracle/orcl/udump/orcl_ora_16555.trc: ORA-00600: internal error code, arguments: [6002], [0], [0], [4], [0], [], [], [] Sun Apr 1 16:16:43 2012 Errors IN file /oracle/orcl/udump/orcl_ora_16555.trc: ORA-00600: internal error code, arguments: [6002], [0], … Continue reading

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

四人过桥问题的SQL解法

看了开发版的帖子,又没有忍住,简单写了一个SQL语句。关于问题的详细描述可以参考http://www.itpub.net/thread-1595264-1-1.html 传说中的微软面试题: 有一群人A,B,C,D (人数>=2)要在夜里走过独木桥过河,他们只有一把手电筒。四个人的速度不同,过河分别需要1,2,5,10分钟,桥上最多走两个人,两个人一起走时按速度慢的计算。过河一定要用手电筒。请问最快的方法是如何安排,需要几分钟? 例子输出: A B,A,A C,A,A D 19 直接给出最终结果: SQL> WITH C AS 2 (SELECT NAME, TIME, POWER(2, ROWNUM – 1) POS FROM BRIDGE_CROSSING), 3 A AS 4 (SELECT 0 RN, A.NAME || ‘ ‘ || B.NAME NAME, … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

恢复导致ORA-600(kccfhb_1)错误

这篇文章仍然是RMAN-600错误的后续系列。 RMAN-600(8201)错误:https://yangtingkun.net/?p=690 RMAN-600(8201)错误的重现:https://yangtingkun.net/?p=716 恢复数据库出现ORA-38727:https://yangtingkun.net/?p=759 当控制文件里存在更大RESETLOGS的ORPHAN时,Oracle在10.2.0.3及以前版本是存在bug的,开始仅仅认为这个问题影响CATALOG模式的备份。但是测试发现,对于数据库的恢复同样存在影响。 如果数据库的FLASHBACK出于打开状态,那么恢复操作就会报错ORA-38727错误,而如果FLASHBACK处于关闭状态,恢复操作就可能碰到ORA-600(kccfhb_1)错误。 [orat1@hpserver2 ~]$ sqlplus / AS sysdba SQL*Plus: Release 10.2.0.3.0 – Production ON Mon Apr 16 10:58:58 2012 Copyright (c) 1982, 2006, Oracle. ALL Rights Reserved. Connected TO: Oracle DATABASE 10g Enterprise Edition Release 10.2.0.3.0 … Continue reading

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

恢复数据库出现ORA-38727

一个测试数据库在恢复时出现ORA-38727错误。 错误信息如下: [orat1@hpserver2 ~]$ rman target / Recovery Manager: Release 10.2.0.3.0 – Production ON Sat Apr 14 09:56:01 2012 Copyright (c) 1982, 2005, Oracle. ALL rights reserved. connected TO target DATABASE: TEST10G (DBID=1030910857) RMAN> recover tablespace tbs013; Starting recover at … Continue reading

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

2012年4月数据库技术大会第三天

由于今天有事,只听了金官丁和BITI的演讲。 发现我确实和ITPUB的数据库大会八字不合,前两次都和重要的事情发生了冲突,导致无法参加,这次总算没有发生正面的冲突,不过第三天的演讲还是受到了影响,只能听两个小时左右的演讲,连上午的重头戏之一,biti_rainy、eygle和piner三巨头的圆桌会议都错过了。 好在听了的两场演讲让我不需此行。Biti和金官丁都已经华丽的转型为管理人员,他们的一些思考可以给现在还在技术职位上奋斗的DBA们指出方向。个人认为,技术人员容易犯一个毛病,只顾低头研究技术,忘了抬头看看方向。如果方向的选择存在问题,不但容易绕弯路,也容易对自己的前途产生迷茫。如果说技术的获取会有多种渠道,那么方向的思考却是数据库大会给我们带来的最大收获之一。让我们听听那些通过技术走向成功的人的经验,对于我们思考自己的方向和前途有着非常大的借鉴意义。 大会今天圆满结束了,三届大会人数一届高过一届,这说明数据库大会受到越来越多国内DBA们的认同,最后希望明年的数据库大会能够碰到更多的老朋友,也结识更多的新朋友。

Posted in NEWS | Leave a comment

2012年4月数据库技术大会第二天

今天的主题中王珊教授、Eygle和老虎是亮点。 上午首先是《数据库系统概论》的作者王珊带来的《Big data时代数据库的机遇、调整和应战》。说实话,我就属于半路出家,没有接触过数据库的基础理论。虽然对于基本的三范式有一些了解,不过像《数据库系统概论》这种专业的理论基础确实没有看过。虽然没有拜读过王珊教授的数据库理论,但是现场听到王教授的关于Big Data的演讲,感触还是非常深的。王教授的理论和技术方面,不是我这种后学之辈有资格进行评价的。不过以王教授这种国内数据库的先行者,现在尚且不断的学习新知识,研究最新的数据库应用方向,足以说明在数据库是学无止境的,因此革命尚未成功,同志们仍需努力。 Eygle的演讲内容已经很熟悉了,一方面是对他最近的一些案例比较了解,另一方面是公司内部有过类似的演讲。Eygle的场面掌控能力非常强,而且安全性方面的内容也非常吸引人。 无独有偶,Eygle后面一个主题,杨宁给我们带来的也是安全相关的内容《数据库攻防实践与SOX安全审计》。两个安全方案的演讲放在一起很有意思,一个是从DBA角度看如何进行数据库的安全管理,另一个是从攻击的角度看Oracle存在哪些漏洞。而大会的两场安全方面的演讲也说明安全性相关问题收到越来越多人的关注。 下午主要听了老虎的演讲,演讲前半部分是一个RAC加载的性能案例分析,而后半部分变成了数据建模的新的算法和数据分析方法。这两部分内容跨度之大,整个大会上无出其右。如果说前半部分是一个很容易理解的CASE,那么后半部分就基本上不知所云了。

Posted in NEWS | Leave a comment