Monthly Archives: June 2012

20120630 ACOUG活动

今天是ACOUG活动的日子,也是上半年的最后一天。 参加ACOUG的人很多,现场估计超过了100人,而且今天到会的ACE也很多,除了Eygle、Kamus、崔华和刚晋升为ACE的侯圣文之外,还有从成都赶过来的老熊。老熊虽然是第一次见面,此前打交道的次数也不多,但是有种一见如故的感觉,可能和老熊直爽的性格有关。 今天的第一个主题是杨海朝带来的《MySql的那点事儿》。杨海朝是新浪的首席DBA负责新浪微博的后台数据库,他带来的MySql方面的演讲介绍了如何利用mysql处理海量增长的大数据,以及如何满足前端应用的高可用需求。 第二个是Kamus带来的11g新特性。在10g已经推出了正常服务期,12c马上就要推出的今天,仍然有很多DBA对于11g的新特性不是很了解。Kamus的演讲应该算是一个新特性的普及,这次的内容是关于分区和高可用特性方面的新特性。 最后是崔华带来的SQL优化方面的主题,这次的内容是统计信息。崔华的演讲贯彻了他一向的风格,包含了大量的深入信息,并给出了很多Oracle内部算法和公式,而这些公式大部分来自他深入的研究,在其他的地方是无法看到的。

Posted in NEWS | Leave a comment

对象相关开发手册总结

从这篇文档中学到了不少语法和功能。 虽然对于TYPE以及COLLECTION类型经常使用,但是涉及到把这些类型作为表的存储结构接触的就少多了,而如果说在加上继承等告警特性,平常使用的就更少了。 在Oracle使用对象一般而言是为了简化某些工作,而把所有面向对象的语法和功能都搬到数据库中不太现实,而且一旦TYPE被应用到表结构中,就很难再进行改变,因此数据库中使用TYPE有一定的局限性。 不过对于一些语法和功能还是有必要知道的,或者至少在碰到问题时,应该知道查看那篇文档。

Posted in BOOKS | Leave a comment

HASH分区新增分区对索引状态的影响

一直认为Oracle对于所有分区的操作都是一样的,只有数据的改变才会导致分区状态的失效,没想到HASH分区的实现方式并不相同。 HASH分区表增加新的分区的一点研究:http://yangtingkun.itpub.net/post/468/195510 看一个范围分区SPLIT的例子: SQL> CREATE TABLE T_PART 2 (ID NUMBER, NAME VARCHAR2(30)) 3 PARTITION BY RANGE (ID) 4 (PARTITION P1 VALUES LESS THAN (10), 5 PARTITION PMAX VALUES LESS THAN (MAXVALUE)); TABLE created. SQL> INSERT INTO T_PART 2 SELECT ROWNUM, … Continue reading

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

单个分区索引失效导致绑定变量查询无法使用索引

一个客户碰到的问题,由于分区维护操作,导致个别分区对应的索引处于UNUSABLE状态,最终导致基于绑定变量的查询无法利用索引。 通过一个具体的例子来说明这个问题: SQL> CREATE TABLE t_part 2 (id NUMBER, 3 name varchar2(30)) 4 partition BY range (id) 5 (partition p1 VALUES less than (10), 6 partition p2 VALUES less than (20), 7 partition pmax VALUES less than (maxvalue)); TABLE created. … Continue reading

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

KFED-320错误

利用kfed的repair命令修复asm头块,碰到这个错误。 错误信息如下: $kfed repair /dev/rhdisk3 KFED-00320: Invalid block num1 = [3], num2 = [1], error = [type_kfbh]$kfed repair /dev/rhdisk3 KFED-00320: Invalid block num1 = [3], num2 = [1], error = [type_kfbh] 导致这个错误的原因是由于当前磁盘组的AUSIZE不是默认值1M,而是4M。 对于磁盘组的头块损坏,不知道具体AUSIZE的值的情况,有两个方法,一是通过ASM的告警日志文件,找磁盘组创建时的参数信息: SUCCESS: CREATE diskgroup oradata external redundancy disk … Continue reading

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

设置全局死锁优先级

测试控制全局死锁的隐含参数_lm_dd_interval时,突然想到这个问题。 RAC全局死锁检测时间:https://yangtingkun.net/?p=955 Oracle的死锁判断是没有优先级的,也就是说,当两个或多个会话发生死锁的时候,无法指定牺牲哪个会话,而是由Oracle随机决定。 不过对于RAC环境而言,死锁的检查不在是内部的随机实现,Oracle通过隐含参数_lm_dd_interval来控制死锁的检测时间。更重要的是,对于RAC环境而言,Oracle允许不同实例设置不同的值。而不同实例的检测死锁间隔不同,就意味着优先级的出现。 如果实例1上设置该值为默认值60秒,而实例2设置为30秒,那么当发生死锁后,永远是实例2上先检测到死锁,也就是说,实例2上会话会被牺牲掉。 这是两个实例上设置该参数相同的情况,两个会话分别连接到两个实例,产生死锁。实例1上的会话1: SQL> SELECT name FROM v$database; NAME ——— ORCL SQL> SELECT instance_number, instance_name FROM v$instance; INSTANCE_NUMBER INSTANCE_NAME ————— —————- 1 orcl1 SQL> SET sqlp ‘I1S1> ‘ I1S1> SHOW parameter _lm NAME TYPE VALUE ———————————— ———– … Continue reading

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

RAC全局死锁检测时间

对于单实例数据库而言,死锁的检测在秒级完成,而RAC环境则死锁的检测时间默认达到了1分钟。 对于单实例环境如果出现了死锁,那么马上其中一个进程就被中止,用户可以快速的得到错误返回。而对于RAC而言,死锁的检测并不是实时完成,而是需要60秒左右的时间。 会话1执行: SQL> CREATE TABLE t_deadlock (id NUMBER PRIMARY KEY, name varchar2(30)); TABLE created. Elapsed: 00:00:00.12 SQL> INSERT INTO t_deadlock VALUES (1, ‘a’); 1 ROW created. Elapsed: 00:00:00.00 SQL> INSERT INTO t_deadlock VALUES (2, ‘b’); 1 ROW created. Elapsed: … Continue reading

Posted in ORACLE | Tagged , , , , | 1 Comment

Oracle Ace Director

2012年6月23日端午节,图灵的百岁诞辰。今天一早收到了Oracle的邮件,我的Oracle Ace Director的申请批准了。 如果你没有Alan Turing那样的天才,那么想要成功只要靠后天的努力。 07年1月被评为Oracle的Ace,至今有5年半了,这次被Oracle评为Ace Director也是对自己付出的一种认可。 一分耕耘一分收获,不是付出了就一定有回报,但是没有付出就一定没有回报。这些道理每个人都懂,但是能真正做到的并不多。很多人可能在坚持了一段时间后没有看到结果就放弃了,而能够坚持到底的人绝大部分都成功了。 不敢说自己已经成功了,但是希望自己能作为一个例子,给一些刚进入Oracle数据库这个行业的人指一条道路——每天比别人更努力一点就可以了。

Posted in NEWS | 1 Comment

ORA-600(kkdlfjou_1)错误

10.2.0.5 RAC环境出现ORA-600[kkdlfjou_1]错误。 错误信息: Thu Jun 02 10:09:38 EAT 2011 Errors IN file /oracle/app/admin/orcl/udump/orcl2_ora_17796.trc: ORA-00600: internal error code, arguments: [kkdlfjou_1], [], [], [], [], [], [], [] Thu Jun 02 10:09:40 EAT 2011 Errors IN file /oracle/app/admin/orcl/udump/orcl2_ora_29452.trc: ORA-00600: 内部错误代码, 参数: [kkdlfjou_1], … Continue reading

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

ORA-600(krbounotread_noctx)错误

由于RMAN备份导致的BUG。 ORA-600(krboReadBitmap_badbitmap)错误:https://yangtingkun.net/?p=863 这个问题和以前碰到的问题属于同一个BUG,错误信息为: Tue May 8 02:18:42 2012 Backup optimization FOR file +DATA/orcl/datafile/index_ts1.ora stopped due TO errors: Tue May 8 02:18:42 2012 Errors IN file /u01/app/oracle/admin/ORCL/udump/orcl2_ora_3758.trc: ORA-00600: internal error code, arguments: [krboReadBitmap_badbitmap], [272945930], [+DATA/orcl/datafile/index_ts1.ora], [6], [30], [33554432], [1024], [19808273] Tue … Continue reading

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