12 2011 档案

基于Liquibase的数据库持续集成
摘要:以前公司的数据库程序Release流程其实蛮好的,能够自动部署各个版本,很方便(感谢公司美国团队的同事)。不过有个死穴就是每次升级的时候需要手工做patch,不难但是很麻烦。这几天在研究基于Liquibase的数据库持续集成,把原来的流程结合起来,可以很好的解决升级的问题。做了一个扫盲PPT,希望对大家有用。数据库持续集成View more presentations from wait4friend. 阅读全文

posted @ 2011-12-30 17:09 wait4friend 阅读(370) 评论(0) 推荐(0)

Oracle Execution Plan笔记
摘要:-- example select trs.name, rt.* from rps_transaction rt, rps_transaction_status trswhere rt.status_id = trs.id and rt.original_rps_batch_id = 2790000order by rt.id;Explain Plan ForSQL> explain plan for 2 -- example 3 select trs.name, rt.* 4 from rps_transaction rt, rps_transaction_status trs 5 w 阅读全文

posted @ 2011-12-28 10:14 wait4friend 阅读(897) 评论(0) 推荐(0)

项目中的一个dead lock分析
摘要:发现存在deadlock,并且发现一个有趣的现象,在trace文件中有如下片断(blocker和waiter具有相同的session id)Deadlock graph: ---------Blocker(s)-------- ---------Waiter(s)---------Resource Name process session holds waits process session holds waitsTX-00050006-00008b95 24 105 X 24 105 Xsession 105: DID 0001-0018-00076390 session 105: DID 阅读全文

posted @ 2011-12-21 13:52 wait4friend 阅读(482) 评论(0) 推荐(0)

数据变更通知(Databas Change Notification)
摘要:ORACLE提供的Databas Change Notification特性让我们可以通过Register的形式告诉数据 库,用户对某些表的内容改变感兴趣。最常用的地方是,在数据发生变化后,刷新Mid-Tier的数据Cache. 摘录一段文档内容--------------------------------------------------------------------------------Database Change Notification is a feature that enables client applications to register queries wi 阅读全文

posted @ 2011-12-12 14:52 wait4friend 阅读(1722) 评论(0) 推荐(0)

Connect By在10g中得增强, nocycle关键字等
摘要:我们的树状属性一般都是在一条记录中记录一个当前节点的ID和这个节点的父ID来实现。但是,一旦数据中出现了循环记录,如两个节点互为对方父节点,系统就会报ORA-01436错误。10G中,可以通过加上NOCYCLE关键字避免报错。并且通过CONNECT_BY_ISCYCLE属性就知道哪些节点产生了循环:drop table t;create table t(cid int,pid int);truncate table t;/* 1--|--2 |--3|--5|--1(cycle)|--6 |--411-- |--6|--112 */-- tree number 1insertinto t(ci 阅读全文

posted @ 2011-12-08 09:40 wait4friend 阅读(925) 评论(0) 推荐(0)

Oracle的数据集转换
摘要:以前的学习笔记,共享一下alter database character set zhs16gbk;这是正确的修改字符集的语句,但是只能从子集向超集转换。alter database character set internal_use zhs16gbk; 使用未公开的internal_use,可以在任意字符集之间转换,谨慎使用!! 在使用这个命令时,Oracle会跳过所有子集及超集的检查,在任意字符集之间进行强制转换,所以,使用这个命令时必须十分小心======================================================================== 阅读全文

posted @ 2011-12-06 09:49 wait4friend 阅读(358) 评论(0) 推荐(0)

绑定变量窥视(Bind Peeking )
摘要:Bind Peeking and Adaptive Cursor SharingBind Peeking 就是当在WHERE条件中使用绑定变量的时候,CBO会根据第一次使用的真实变量值来生成一个执行计划。在这个cursor的整个生命周期中,CBO不会 再对相同的SQL进行hard parse。这种办法的优点是:如果索引字段的值是均匀分布的,hard parse就降低了,性能提高。但是缺点也很明显:如果字段分布不均匀,并且第一次使用值不具有普遍性,那么执行计划就将非常糟糕。Oracle11g 提供了一个新特性,Adpative Cursor Sharing,或者叫 Extended Cursor 阅读全文

posted @ 2011-12-05 13:28 wait4friend 阅读(3207) 评论(2) 推荐(0)

Oracle10g下面AQ(高级队列)的测试
摘要:以前学习Oracle10g下面高级队列的测试例子,记下。这里假设一个简单的需求, 某单位有三种角色, Developer, Leader, PM, 消息也分三种类型, normal, urgent, secret. 不同角色仅仅关心某些信息,关系矩阵如下NormalUrgentSecretDevXXLeaderXXPMX下面我写了几个demo来实现这个需求, 流程如下, 很简单建立消息载体, 这里使用object建立queue table和queue建立 subscriber (即consumer)Enqueue, dequeue-------------------------------- 阅读全文

posted @ 2011-12-02 09:44 wait4friend 阅读(2348) 评论(0) 推荐(0)