特殊的物化视图刷新
现在有一个需求,某个环境中存在两个用户,一个用户中存在物化视图,另一个用户中存在源表,根据业务的需要,需要做一种特别的物化视图刷新。物化视图用户中的物化视图为CORP_NAME源数据用户中的表为ADD_CORP_NAME可能数据刷新是没有问题,关键就是在于CORP_NAME中的字段要比ADD_CORP_NAME多一些。CORP_ID &n...
通过单例模式模拟RAC连接
单例模式基本是学习设计模式的第一个模式,而且在工作中使用太普遍了,通用到我们感觉就应该是这样,但是如果真给你纸和笔,在5分钟内写出一个完整的单例模式,估计还是有不少人会中招。RAC是实时应用集群,是oracle的一种高可用方案,假设我们有2个节点,如果其中一个节点出现问题,另外一个节点依然能够正常工作,对于客...
mongoDB初探第一篇
早就久仰mongoDB大名,一直没有决心开始学习,从昨天开始尝试了一把,发现真是轻巧,熟悉了oracle之后,去看mysql,发现mysql真是够轻量级的,结果再看mongoDB,更加感觉轻量级。一般数据库的安装都是复杂,繁琐,都是需要一些配置的,有些还要一些第三方软件依赖等等。学习mongoDB感觉真是太轻巧了。感觉就是一个解压这...
海量数据迁移之sqlldr和datapump的缺点分析
在数据迁移中,sql*loader和datapump总是作为一些常用的数据迁移方案,自己在经历了一些项目之后,优点就不说了,说点这些方案的缺点,批评不自由,则赞美无意义,所以我在提出了一些失败错误的经验后,会在下一篇中给出这些缺点的解决方案。毕竟解决问题才是最重要的。使用sql*loader的缺点 可能存在潜在的...
重温快速排序
说起排序,总是会想起大名鼎鼎的快速排序,等自己再次翻开快速排序时,感觉是很陌生的,从这个对比也能看出自己确实是已经忘记了曾经重要的日子。快速排序使用了分治思想,分而治之。为了达到它传说中较低的时间度,接受了来自大家多年的挑战还依然是名副其实的快速排序。一个简单的例子就是通过简单的实例来说明。我们...
海量数据迁移之数据抽取流程
在之前的一些博文中花了大篇幅介绍了采用外部表抽取的一些细节,可能细节到了,基本原理的内容还希望再补充补充。采用外部表抽取数据的流程图如下:大体标注了一下抽取的基本结构,我们会尽量保证不去碰原本的数据源,会创建两个临时的用户,一个是只读用户,这个用户上只有同义词,只具有数据源中的select权限。这就对...
巧用外部表避免大量的insert
昨天开发咨询我一个问题,希望我对下面的语句进行调优。语句类似下面的形式SELECT subscriber_no FROM SUBSCRIBER SWHERE SUBSCRIBER_TYPE = 'RM' and CONV_RUN_NO in (20, 21, 22, 23) and not EXISTS (...
通过图表简化sql语句的表关联
在之前的博文中分享过一个执行了两天的一条sql语句,走了两个大表的扫描,导致执行时间很长,通过简化sql做了不小的改进,今天我们来看看还可以做些什么。上次简化后的语句如下:with tmp_logical_date as (SELECT logical_date FROM logical_date ...
通过编程控制CPU利用率
今天想起一个几年前学习过的程序,是在《编程之美》中提到的,是作为当时微软的面试题,写一个程序来控制CPU的利用率保持在50%,进一步延伸,能够写出程序来画出CPU利用率的正弦曲线。这个题目看起来真是奇怪,能够达到这种程度,编程感觉就是出神入化了,但是仔细看看这个题目还是有一些依据可循,也有点小聪明的意思。首...
最简单的web服务器实现(一)
tomcat作为web服务器,想必大家做过web开发的都离不开tomcat了,值得庆幸的是tomcat也是开放源代码的,最近准备好好琢磨琢磨tomcat的源码,还没开始就已经感觉到不少的未知恐惧了,慢慢来把。可能我的学习方式比较急功近利,但是这种方式收效也快,自己记得在<<Java程序员 上班那点事儿>>里作者写过一个最简单的web服务器...
不要成为技术的奴隶(一)
话说工作也好些年了,对开发技术,数据库技术也算有一些了解了。今天晚上本来想继续写一篇技术贴,但是突然闪过了这个想法,今天还是说说这个话题吧。oracle版本的变更先说数据库技术,这些年oracle,sqlserver,mysql,nosql的数据库技术真是越来越火,大数据火了一段时间,这些年都是云的概念,数据库技术也跟着火了一把,...
重温二分查找算法
二分查找在学习算法的时候会涉及到,算是一个基本的分治思想,对于算法的实现大家也都是很熟悉的,但是这个时候真会犯眼高手低的毛病。不信你自己试试,看你能够在段时间内写出可运行的二分查找算法。二分查找算法的思想非常易于理解,但是能够写出一个准确的二分查找程序绝非一个很简单的事情,从历史上来看,而非思想早...
通过shell脚本快速定位active session问题
如果你得到反馈,数据库突然间性能下降了好多,希望你能够尽快的定位出问题来,有一些思路和方法可以参考。分别从数据库层面,系统层面来定位,但是个人感觉而言还是不够快和准。因为绝大多数的问题都是由于active session导致的,所以我们的注意力集中在ash是比较合理的。ASH在这个时候就是一个利器,通过它能够得到几乎...
java中的序列化
java中的序列化是一个很有意思的接口,只需要声明而无需做额外的工作,但是在虚拟机内部却做了大量的工作保证了这一特点。只要对象实现了序列化接口,就会把它转换为一个字节序列,当需要的时候能够把这个字节序列完全恢复为原来的对象。这一过程是可以通过远程调用,网络进行,所以说从某种程度而言,序列化能够实现轻量级...
通过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...
通过java来格式化sql语句
经常在抓取一些sql语句的时候,得到的sql文本有格式的问题,如果尝试得到执行计划,每次都会费一番周折。比如下面的sql语句,基本包含了常见的格式问题。第3行,第4行出现了断行,执行的时候就会报错。select /*+ leading(s) index(s TABLE_BPM_STEP_INST_5IX) use_nl(s pp step) */ s.ALLOW_CREATE, s.ASSIGNEE, s.ASYN...
一个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...