<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Digest Net</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/" />
    <link rel="self" type="application/atom+xml" href="http://www.eygle.com/digest/atom.xml" />
    <id>tag:www.eygle.com,2010-06-21:/digest//4</id>
    <updated>2012-02-12T08:17:36Z</updated>
    <subtitle>Eygle的网摘,网摘来自网络,仅代表本人关注内容,不代表本人观点,如有侵权,请来信告知,即刻删除.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.12</generator>

<entry>
    <title>Oracle公司的历史发展（转Fenng文章）</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2012/02/fenng_oracle_history.html" />
    <id>tag:www.eygle.com,2012:/digest//4.2952</id>

    <published>2012-02-12T08:13:42Z</published>
    <updated>2012-02-12T08:17:36Z</updated>

    <summary>1970年的6月，IBM 公司的研究员埃德加·考特 （Edgar Frank Codd） 在 Communications of ACM 上发表了那篇著名的《大型共享数据库数据的关系模型》（A Relational Model of Data for Large Shared Data Banks）的论文。这是数据库发展史上的一个转折。要知道，当时还是层次模型和网状模型的数据库产品在市场上占主要位置。从这篇论文开始，拉开了关系型数据库(RDBMS)软件革命的序幕。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[转引Fenng的文章，原文： <a href="http://www.dbanotes.net/database/oracle_history.html">http://www.dbanotes.net/database/oracle_history.html</a><br /><br />Fenng原文按：这是这篇文章在 2009 年年底修订的版本，从成稿以来的第三次修订，补充了若干新发现的信息。仅供参考，如有谬误，敬请指正。所有信息来自公开资料，恕不负责信息准确性。<span class="byline">

<h2>1. ORACLE公司之起源</h2>

<p>很难想象，ORACLE 公司的这一段传奇居然要从 IBM 公司开始。</p> 

<p>1970年的6月，IBM 公司的研究员埃德加·考特 （Edgar Frank Codd） 在 Communications of ACM 上发表了那篇著名的《大型共享数据库数据的关系模型》（<a href="http://www.seas.upenn.edu/%7Ezives/03f/cis550/codd.pdf">A Relational Model of Data for Large Shared Data Banks</a>）的论文。这是数据库发展史上的一个转折。要知道，当时还是层次模型和网状模型的数据库产品在市场上占主要位置。从这篇论文开始，拉开了关系型数据库(<acronym title="Relational Database Management System
">RDBMS</acronym>)软件革命的序幕。</p>
 
<p>虽然早在1970年就诞生了关系模型理论，但是市场上迟迟不见关系型数据库管理软件的推出。主要原因是很多反对者认为关系型数据库速度太慢，比不上当时的层次式数据库。值得好笑的是 IBM 虽然1973年就启动了<a href="http://en.wikipedia.org/wiki/IBM_System_R">System R</a>的项目来研究关系型数据库的实际可行性，也没有及时推出这样的产品，因为当时IBM 的的 IMS（著名的层次型数据库）市场销路不错，如果推出关系型数据库，牵涉到 IBM 很多人的自身利益。再者，IBM 庞大复杂的官僚机构处在决策上远不那么灵活。</p> 

<p>1977年6月，Larry Ellison 与 Bob Miner 和 Ed Oates 
在硅谷共同创办了一家名为软件开发实验室（Software Development 
Laboratories，SDL）的计算机公司(ORACLE公司的前身)。那个时候，32岁的Larry 
Ellison，这个读了三家大学都没能毕业的辍学生，还只是一个普通的软件工程师。公司创立之初，Miner是总裁，Oates为副总裁，而
Ellison，因为一个合同的事情，还在另一家公司上班。没多久，第一位员工Bruce 
Scott（用过ORACLE数据库软件的人都知道有个Scott用户的吧？没错，就是这个Scott，至于Scott用户的密码Tiger，那是
Scott的女儿养的猫的名字。Scott工号是4）加盟进来，在Miner和Oates有些厌倦了那种合同式的开发工作后，他们决定开发通用软件，不过
们还不知道自己能开发出来什么样的产品。Oates最先看到了埃德加·考特的那篇著名的论文连同其他几篇相关的文章并推荐Ellison和Miner也阅
读一下。Ellison和Miner预见到数据库软件的巨大潜力(跟着 IBM 走，没错)，于是，SDL开始策划构建可商用的关系型数据库管理系统( <acronym title="Relational Database Management System
">RDBMS</acronym> )。</p>

<p><img src="http://www.dbanotes.net/Images/xOracle_Gang_of_4.jpg.pagespeed.ic.CiJUWQRinh.jpg" alt="Oracle Company Gang of Four, Oracle公司创始人" height="275" width="500" /><br />
图1 左起 Ed Oates、Bruce Scott、Bob Miner、Larry Ellison</p>

<p>很快他们就弄出来一个不太像样的产品，或者具体的说，更像一个Demo。根据 Ellison 和 Miner 
他们在前一家公司从事的一个由中央情报局投资的项目代码，他们把这个产品命名为 ORACLE。因为他们相信，ORACLE（字典里的解释有"神谕, 
预言"之意）是一切智慧的源泉。1979年，SDL 更名为关系软件有限公司（Relational Software，Inc.，<acronym title="Relational Software，Inc.">RSI</acronym>），毕竟"软件开发实验室"不太像一个大公司的名字。1983年，为了突出公司的核心产品，<acronym title="Relational Software，Inc.">RSI</acronym>再次更名为ORACLE (全称为Oracle Systems Corporation)。</p>

<p><br />
<img alt="Oracle_Company_Building.jpg" src="http://www.dbanotes.net/Images/Oracle_Company_Building.jpg.pagespeed.ce.hvTWehNuXN.jpg" class="mt-image-none" style="" height="375" width="500" /><br />
图2 美国 Oracle 公司总部一瞥</p>

<p>关于第一版和第二版的开发过程，现在能知道的是 Bob Miner 负责数据库引擎的部分，而 Scott 负责 <acronym title="Structured Query Language
">SQL</acronym> 的部分。Oracle V1 是在 PDP-11 上开发的，用的 PDP 汇编语言，机器有着"高达 128 KB" 内存。Oracle V2 也是在类似的开发环境下写出来的，编译后的文件有 ... 100K 之巨。那是个内存稀缺的年代。</p></span><h2>发展与壮大</h2>

<p>RSI在1979年的夏季发布了可用于<acronym title="Digital Equipment Corporation">DEC</acronym>公司的<acronym title="Progammable Data Processor">PDP</acronym>-11计算机上的商用ORACLE产品，这个数据库产品整合了比较完整的<acronym title="Structured Query Language">SQL</acronym>实
现，其中包括子查询、连接及其他特性。但不得不说，软件不是很稳定，并缺少事务处理这样的重要功能。出于市场策略，公司宣称这是该产品的第二版，但却是实
际上的第一版。之所以被命名为第2版而不是第1版，是因为Ellison认为潜在的客户更愿意购买第2个版本，而不是初始版本。（虽然这样做有些不太诚
实，还是要承认这是个十分高明的技巧。到现在还有一些公司把自己卖给客户的版本叫做1.0 
，学学1979年的ORACLE吧！）多年以后的今天，ORACLE公司声称是他们第一个提供了第一个<acronym title="Structured Query Language">SQL</acronym>关系型数据库管理系统。</p>

<p>虽然软件不是很好，但却不缺客户。美国中央情报局迫不及待的想买一套这样的软件来满足他们的需求。但在咨询了<acronym title="International Business Machines">IBM</acronym>公司之后发现<acronym title="International Business Machines">IBM</acronym>没有可以商用的产品，他们联系了<acronym title="Relational Software，Inc.">RSI</acronym>。于是<acronym title="Relational Software，Inc.">RSI</acronym>有了第一个客户。在当时，政府和军方的机构往往同时有几种计算机，而那时还没有什么"软件可移植"这样的说法，当然，也几乎没有具有这样的能力的应用软件。也就是说，给<acronym title="Progammable Data Processor">PDP</acronym>-11开发的ORACLE数据库不能用在<acronym title="International Business Machines">IBM</acronym>主机和<acronym title="Digital Equipment Corporation">DEC</acronym>的<acronym title="Virtual Address eXtended">VAX</acronym>上。很快用户就表现出来这样的需求：ORACLE能否同时在不同的操作系统上运行？这给<acronym title="Relational Software，Inc.">RSI</acronym>带来了新的挑战（主要是Miner和Scott）。70年代末期和80年代早期的软件一般都设计成在单一操作系统上运行，具有可移植能力的软件很少。</p>

<p>1983年3月，<acronym title="Relational Software，Inc.">RSI</acronym>发布了
ORACLE第三版。Miner和Scott历尽艰辛用C语言重新写就这一版本。出于移植性的考虑，Bruce 向 Miner 推荐 C 
语言，要知道，C语言当时推出不久，用它来写ORACLE软件也是具有一定的风险的，尽管 Miner 
不是很赞同，但除此之外，别无选择。很快就证明了这样做是明智之举：C 编译器便宜而又高效，移植性相当的好。用C重写 Oracle 的大部分工作由 
Bruce 承担，而 Miner 精力主要仍放在 PDP 汇编上。从这个版本开始，ORACLE产品有了一个关键的特性：<strong>[可移植性]</strong>。ORACLE第3版还推出了<acronym title="Structured Query Language">SQL</acronym>语句和事务处理的"原子性"--<acronym title="Structured Query Language">SQL</acronym>语句要么全部成功，要么全部失败，事务处理要么全部提交，要么全部回滚。ORACLE第3版还引入了非阻塞查询，使用存储在<strong>"Before Image File"</strong>中的数据来查询和回滚事务，从而避免了读锁定（read lock）的使用（虽然通过使用表级锁定限制了它的吞吐量）。同样是1983年，<acronym title="International Business Machines">IBM</acronym>发布了姗姗来迟的Database 2（<acronym title="Database 2">DB2</acronym>），但只可在VMS上使用。不管怎么说，ORACLE已经占取了先机。</p>

<p>在开发第三版还没有结束的时候，Scott 
离开了ORACLE。当时用C语言改写ORACLE的压力很大，无休止的软件调试终于让Scott不堪重负，选择了一走了之。把剩下的重担交给了
Miner一个人。在出售了自己的4%左右的股票之后，Scott 后来参与创建了Gupta公司（现更名为Centura 
Software）和PointBase公司（提供百分之百纯Java嵌入式数据库），都是开发和数据库相关的产品。多年后有人问到他的%4的
ORACLE股票的时候，Scott，这个曾经给ORACLE写出第一行代码的技术高手，也只能报以一笑了。如果能坚持下来，那是一笔几亿美金的财富。不
过当时的Scott没有那么多的想法，他只是太累了。</p>

<p><img alt="Bruce_Scott.jpg" src="http://www.dbanotes.net/Images/Bruce_Scott.jpg.pagespeed.ce.eJbmmLS384.jpg" class="mt-image-none" style="" height="200" width="200" /><br />
图3 Bruce Scott 后来是PointBase公司的创办者之一</p>

<p>相比竞争对手而言，ORACLE最先将其软件移植到<acronym title="Digital Equipment Corporation">DEC</acronym> <acronym title="Virtual Address eXtended">VAX</acronym>计算机上的VMS操作系统上。回过头来看，在 Oracle V2 发布之后，VAX 已经抢占了本属于 PDP 的大部分市场，要赢得先机，就必须尽快的让 Oracle 支持 <acronym title="Virtual Address eXtension 
">VAX</acronym> 。最初 Oracle 跑在 <acronym title="Virtual Address eXtension 
">VAX</acronym> 的模拟模式下，效果不佳，所以移植 Oracle 到 <acronym title="Virtual Address eXtension 
">VAX</acronym> 平台是必须要面对的事情。早在1979年公司就已经雇了一位<acronym title="Digital Equipment Corporation">DEC</acronym>公司的技术高手Robot Brandt进行<acronym title="Virtual Address eXtended">VAX</acronym>上ORACLE的开发。开始的时候资金有限，只能到加州大学伯克利分校去蹭机器进行开发，后来好一些，但机器也是借来的。尽管困难重重，Brandt还是比较成功的完成了移植工作。随着<acronym title="Virtual Address eXtended">VAX</acronym>小型机的大量销售乃至供不应求，ORACLE软件也成为<acronym title="Virtual Address eXtended">VAX</acronym>上最受欢迎的程序。这一点要归功于Larry对市场的先知先觉。如果说，是<acronym title="International Business Machines">IBM</acronym>引领着ORACLE公司走上数据库的大船，那么<acronym title="Digital Equipment Corporation">DEC</acronym>公司的<acronym title="Virtual Address eXtended">VAX</acronym>就是带着他们扬帆出海了。短短的几年之后，ORACLE数据库被移植到各种主要平台之上。ORACLE产品也一直因为有可移植性这个关键特性而被那些潜在的客户关注。</p>

<p>很长一段时间里，公司研发由Miner独力承担。Miner视金钱如无物，为人低调，和Ellison的锋芒必露形成鲜明的对比。在公司里，大家一
致认为他是老好人，他也深受员工爱戴。"Ellison是公司的大脑，Miner则当之无愧的成为公司的心脏"。他是个沉默的英雄，正如Steve 
Jobs背后的Steve Wozniak一样。</p>

<p>公司的另一位创建人，Oates，这个时候因为婚姻趋于破裂而情绪沮丧，已经不能把精力全部放到公司上，不得不离开公司。几年后，他又重返公司，重
新为ORACLE做出巨大的贡献，他许下诺言，在公司员工超过1万人的时候会再度离开。1999年，他完成了心愿。现在他正在纵情于音乐(组建了一个乐
队)，自得其乐。</p>

<p>1984 年 4 月，Oracle 拿到了 Sequoia Capital (红杉资本) 
的投资。同年10月，发布了第4版产品。从第四版开始，产品的稳定性总算得到了得到了一定的增强，用Miner的话说，达到了"工业强度"。但是还不够令
人满意，用户对产品的抱怨似乎永无休止。这一版增加了<strong>读一致性（Read Consistency）</strong>，这是数据库的一
个关键特性，可以确保用户在查询期间看到一致的数据。也就是说，当一个会话正在修改数据时，其他的会话将看不到该会话未提交的修改。可以看到，在
ORACLE第四版之前，产品始终是不稳定的，但是ORACLE的销售人员，尤其是Ellison，他在宣传ORACLE的时候总是不乏夸大其词，但他就
是有能力把软件卖出去，而且，还卖得很好，不得不承认，这的确有些神奇。</p>

<p>让我们看看1984年软件市场的情形，在数据库市场上的霸主是<a href="http://en.wikipedia.org/wiki/Ashton-Tate">Ashton-Tate</a>公
司，他们的拳头产品是刚推出不久的dBase 
III（确切的说dBase是PC上的数据库软件霸主），刚刚成为全球第三大的独立软件公司（第一和第二分别是微软、Lotus，而ORACLE在当时还
排不上号），这一年，也是苹果公司Macintosh诞生的年度，Steven Jobs用这个拳头产品挑战老大哥<acronym title="International Business Machines">IBM</acronym>，苹果的那个广告成为业界的一个永恒的经典。同样在这一年中，ORACLE公司的开发人员刚刚把产品移植到PC上。这是最好的年代，也是最坏的年代。数以千计的小公司在软件领域里争斗不休，新公司如雨后春笋般成立，ORACLE如何才能于不败之地？</p>

<p>在1985年，ORACLE发布了5.0版。有用户说，这个版本算得上是ORACLE数据库的稳定版本。这也是首批可以在Client/Server模式下运行的的<acronym title="Relational Database Mangement System">RDBMS</acronym>产品，在技术趋势上，ORACLE数据库始终没有落后。这意味着运行在桌面PC机（客户机）上的商务应用程序能够通过网络访问数据库服务器。1986年发布的5.1版还支持<strong>分布式查询</strong>(distributed queries)，允许通过一次性查询访问存储在多个位置的数据。</p>

<p>那是在1985年，当时曾经的最大的独立软件公司Cullinet(主要销售网状数据库)已经如流星般陨落。ORACLE的主要竞争对手是
Ingres数据库。Ingres在加州大学伯克利分校诞生，主要的设计者是当时鼎鼎大名的Michael 
Stonebraker教授。可以说Ingres数据库软件是上个世纪80年代技术上最好的数据库，Ingres市场分额的快速增长已经给ORACLE早
成了很大的压力。巧的是，这个时候，<acronym title="International Business Machines">IBM</acronym>公司再一次伸出"上帝之手"。</p>

<p>Ingres使用的是 <a href="http://en.wikipedia.org/wiki/Michael_Stonebraker">Stonebraker</a> 教授发明的<acronym title="QUEry Language">QUEL</acronym>（Query Language））的查询技术，这和<acronym title="International Business Machines">IBM</acronym>的<acronym title="Structured Query Language">SQL</acronym>大不相同。在某些地方<acronym title="QUEry Language">QUEL</acronym>甚至要优于<acronym title="Structured Query Language">SQL</acronym>。<acronym title="International Business Machines">IBM</acronym>当时担心Ingres把<acronym title="QUEry Language">QUEL</acronym>变成标准会对自己不利。经过一番衡量，决定把自己的<acronym title="Structured Query Language">SQL</acronym>提交给数据库标准委员会。而Stonebraker教授可不打算把<acronym title="QUEry Language">QUEL</acronym>提交给数据库标准委员会，学院派的他认为这麽做实际上是扼杀了创新精神。鹬蚌相争，渔翁得利。ORACLE看到并抓住了这个绝佳的机会，大肆宣布ORACLE全面与<acronym title="Structured Query Language">SQL</acronym>兼容，加上ORACLE当时对Ingres PC上的版本的攻击（弱化对手优势，化解自己弱势是他们最拿手的本领），再加上ORACLE公司销售上的强势，Ingres不断丢城失地，等到后来推出支持<acronym title="Structured Query Language">SQL</acronym>的数据库的时候为时已晚。紧跟<acronym title="International Business Machines">IBM</acronym>让ORACLE得以成长、壮大，拥抱标准，拥抱开放，拥抱变化，让ORACLE立于不败之地。</p>

<p>1986年3月12日，ORACLE公司以每股15美元公开上市，当日以20.75美元收盘，公司市值2.7亿美元。仅仅相隔一天，3月13日，微
软以每股21美元的发行价上市，以28美元收市，公司市值达到7亿美元。远远超过了ORACLE。微软和盖茨成功的光环的遮盖住了ORACLE和
Ellison的光芒，既生瑜，何生亮，可能这也是Ellison敌视微软的开始。</p>

<p align="center">
<img src="http://www.dbanotes.net/Images/Larry_Ellison.jpg.pagespeed.ce.oNK_RJoGbz.jpg" alt="Larry Ellison" height="455" width="351" />
<br />
图4 桀骜不驯的Larry Ellison，他和乔布斯是很好的朋友</p>
<br />

<p><span class="byline"><h2>经受挫折 </h2>
<p>ORACLE第6版于1988年发布。由于过去的版本在性能上屡受诟病，Miner带领着工程师对数据库核心进行了重新的改写。引入了<strong>行级锁（row-level locking）</strong>这个重要的特性，也就是说，执行写入的事务处理只锁定受影响的行，而不是整个表。这个版本引入了还算不上完善的<acronym title="Procedural Language extension to SQL">PL/SQL</acronym>（Procedural Language extension to SQL）语言。第6版还引入了<strong>联机热备份</strong>功能，使数据库能够在使用过程中创建联机的备份，这极大地增强了可用性。同时在这一年，ORACLE开始研发<acronym title="Enterprise Resource Planning">ERP</acronym>软件。 </p>

<p>公司发展看上去比较顺利，不过，噩梦才刚刚开始。</p> 

<p>由于过去对软件测试重视的程度不够--那个时候公司规模小，基本上都是客户帮助免费测试的。在第六版刚发布之后，很多迫不及待开始使用的用户就怨声
载道。这是个根本就没有测试好就进行发布的产品（也怪Ellison，大话总要说在前头，只好自尝苦果）。用户开始对ORACLE大肆抨击，ORACLE
的一些对手也开始落井下石，针对ORACLE产品的一些弱点进行攻击。开发人员一面应付愤怒的用户，一面加班加点地对程序进行接连不断的修正，最后，总算
得到了一个比较稳定的版本，暂时平息了用户的愤怒。</p> 

<p> 
但是，实际的问题并不在这里，几年来高速增长的同时也给公司带来了巨大的隐患，1990财年第三季度报表的公布引爆了一切。财务人员发现了1500万美元
的坏帐，并且公司利润距离预期相差甚远。接下来的时间里，大公司病的诸般症状接踵而来，面对股东的指控，股票一落千丈，公司前景暗淡，甚至面临破产。一度
靠贷款来维持自己的奢华生活也不变卖股票的Ellison也快撑不住了。公司下大力气整顿财务（财务主管杰夫·沃克，Jeff Walker 
，从某种程度上解救了公司）。公司宣布削减开支，裁退大量销售人员，同时聘用了专门的管理人才，<a href="http://en.wikipedia.org/wiki/Jeffrey_O._Henley">Jeff Henley</a>（CFO) 与 Raymond Lane (COO) 加盟 Oracle。</p>

<p>噩梦延续到ORACLE第七版的推出而结束。这个公司已经空谈了好几年的新版本（一度被讥讽为不过是Ellison的故计重施而已），直到1992
年6月才终于闪亮登场，这一次公司吸取了第六版匆忙上市的教训，听取了用户的多方面的建议，并集中力量对新版本进行了大量而细致的测试。该版本增加了许多
新的性能特性：<strong>分布式事务处理功能</strong>、增强的管理功能、用于应用程序开发的新工具以及安全性方法。ORACLE7还包含
了一些新功能，如存储过程、触发过程和说明性引用完整性等，并使得数据库真正的具有可编程能力。还有一点必需要说明的是，这个版本在原有的基于规则的优化
器（RBO）之外引入一种新的优化器：<strong>基于开销的优化器</strong>（Cost-Based Optimizer , <acronym title="Cost-Based Optimizer">CBO</acronym>）。<acronym title="Cost-Based Optimizer">CBO</acronym>根据数据库自身对对象的统计来计算语句的执行开销，从而得出具体的语句执行计划。在以后的几个重大版本中，ORACLE的工程师们逐步对这个优化器进行改进，<acronym title="Cost-Based Optimizer">CBO</acronym>逐渐取代了RBO。</p>

<p>ORACLE 
第七版是ORACLE真正出色的产品,取得了巨大的成功(笔者使用最早的版本就是就是第七版)。这个版本的出现真是好时机，当时Sybase公司的数据库
已经占据了不少份额，ORACLE借助这一版本的成功，一具击退了咄咄逼人的Sybase。公司的销售人员这次算到了给用户兑现空头许诺的时候。公司经过
两三年的治理，终于摆脱了种种麻烦，重新开始健康发展，销售额也从92年的15亿美元变为四年后的42亿美元。</p><p><span class="byline"><h2>跨上巅峰</h2> 

<p>"搅浑水"是Ellison的一项绝技。在1995年巴黎举行的欧洲信息技术论坛会议上，因为发言在盖茨之前，Ellison在即兴演讲中介绍了网
络计算机（Network 
Computer，NC）的概念(其实也就是唱反调)，所谓NC指的是配置简单却能充分利用网络资源的低价电脑，最为重要的是，它不需要操作系统，或者更
准确的说，不需要微软的操作系统。Ellison希望借此来抵制微软的强势，彼时 Windows 95 刚刚发布，风头正健。很快，ORACLE联合<acronym title="International Business Machines">IBM</acronym>、
Sun、Apple和Netscape在1996年制定了网络计算机的标准，但事实上人们从头到尾没有看到一台真正的NC生产出来。这次的演讲在业界引起
了轩然大波，通过这个事件，ORACLE公司吸引了足够多的注意力，同时也让人们看到ORACLE公司对于网络的巨大信心(或者说成功达到了放烟雾弹的效
果)。</p>

<p>1997年6月，ORACLE第八版发布。ORACLE8支持<strong>面向对象的开发</strong>及新的多媒体应用，这个版本也为支持Internet、网络计算等奠定了基础。同时这一版本开始具有同时处理大量用户和海量数据的特性。这个版本也算可圈可点了。</p>

<p>1998年9月，ORACLE公司正式发布ORACLE 8<em>i</em>。"<em>i</em>"代表Internet，这一版本中添加
了大量为支持Internet而设计的特性。这一版本为数据库用户提供了全方位的Java支持。ORACLE 
8i成为第一个完全整合了本地Java运行时环境的数据库，用Java就可以编写ORACLE的存储过程。对，Java，只要是能够打击微软的武
器，ORACLE都要派上用场。ORACLE8i 添加了SQLJ（一种开放式标准，用于将<acronym title="Structured Query Language">SQL</acronym>数据库语句嵌入客户机或服务器Java代码）和ORACLE interMedia（用于管理多媒体内容）以及<acronym title="Extensible Markup Language">XML</acronym>等
特性。同时，ORACLE 8i 
极大程度上提高了伸缩性、扩展性和可用性以满足网络应用需要。接下来的几年中，ORACLE陆续发布了8i的几个版本，并逐渐添加了一些面向网络应用的新
特性。面对开源运动的蓬勃发展，ORACLE自然不甘落后，1998年十月ORACLE发布了可用于Linux平台的ORACLE 8 以及ORACLE
 Application Server 4.0，随后不久，ORACLE又发布了ORACLE 8i for Linux。在 
.com大潮中，ORACLE是站在风口浪尖的弄潮儿.</p>

<p>在2001年6月的ORACLE OpenWorld大会上，ORACLE发布了ORACLE 9<em>i</em>。在ORACLE 9i的诸多新特性中，最重要的就是Real Application Clusters（<acronym title="Real Application Clusters">RAC</acronym>）
了。说起ORACLE集群服务器，早在第五版的时候，ORACLE就开始开发ORACLE并行服务器（ORACLE Parallel Server 
，OPS），并在以后的版本中逐渐的完善了其功能，不过，严格来说，尽管OPS算得上是个集群环境，但是并没有体现出集群技术应有的优点。在完全吸收了
Rdb（ORACLE在1994年收购了Compaq公司的Rdb数据库，此前Rdb属于<acronym title="Digital Equipment Corporation">DEC</acronym>公司，<acronym title="Digital Equipment Corporation">DEC</acronym>公司在<acronym title="Virtual Address eXtended">VAX</acronym>上实现了第一个可以商用的Rdb集群数据库）的一些技术优势之后，ORACLE终于推出了真正的应用集群软件。<acronym title="Real Application Clusters">RAC</acronym>使得多个集群计算机能够共享对某个单一数据库的访问，以获得更高的可伸缩性、可用性和经济性。ORACLE 9i的<acronym title="Real Application Clusters">RAC</acronym>在TPC-C的基准测试中打破了数项记录，一时间业内瞩目。这个新的数据库还包含集成的商务智能（BI）功能。ORACLE 9i第2版还做出了很多重要的改进，使ORACLE数据库成为一个本地的<acronym title="Extensible Markup Language">XML</acronym>数据库；此外还包括自动管理、<strong>Data Guard</strong>等高可用方面的特性。</p>

<h2>历史还在继续</h2>

<p>2003年9月8日，旧金山举办的ORACLE World大会上，Ellison宣布下一代数据库产品为"ORACLE 
10g"。ORACLE应用服务器10g（ORACLE Application Server 
10g）也将作为甲骨文公司下一代应用基础架构软件集成套件。"g"代表"grid 
,网格"。这一版的最大的特性就是加入了网格计算的功能。何谓网格计算？网格计算可以把分布在世界各地的计算机连接在一起，并且将各地的计算机资源通过高
速的互联网组成充分共享的资源集成。通过合理调度，不同的计算环境被综合利用并共享。ORACLE宣称10g可以作为网格计算的基础，矛头直指最大的敌人<acronym title="International Business Machines">IBM</acronym>的"随需应变"！看来，ORACLE公司已经把这一次的"赌注"押在了网格计算的大市场上。但前景如何？让我们拭目以待。 </p>

<p>如果说，<acronym title="International Business Machines">IBM</acronym>是IT
产业中的一头巨鲸，那么ORACLE一定就是一条大鲨鱼：咄咄逼人，善于进攻。就在2003年6月初，ORACLE突然宣布51亿美金收购仁科
（PeopleSoft），业内再次震动。此举又一次露出ORACLE 
一贯善于进攻的本性。要知道，ORACLE在发展过程中很少对企业进行收购的，那么收购仁科目的何在？首先，ORACLE觊觎企业应用软件市场已久，但苦
于不能进一步扩大市场分额，尤为重要的是，一旦成功，可以直接对最大的敌人<acronym title="International Business Machines">IBM</acronym>进行打击，还可以阻击SAP等巨头的强势。时至今日，ORACLE依然以不达目的不罢休的态势和仁科缠斗，结果如何，让我们拭目以待。</p>

<p>"人生最大的快乐是击败敌人"，Ellison一定很喜欢这句话。</p>

<p>后记：2004年12月13日，Oracle 公司宣布签订了以每股26.50美元、总计约 103 亿美元的代价收购 仁科(PeopleSoft) 的最终协议。历时十八个月的争斗终于尘埃落定。</p>

<p>--<acronym title="End of File
">EOF</acronym>--</p><p><br /></p></span></p></span></p><span class="byline"></span><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>The difference between UTF8 and AL32UTF8</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2012/01/the_difference_between_utf8_an.html" />
    <id>tag:www.eygle.com,2012:/digest//4.2946</id>

    <published>2012-01-18T09:20:48Z</published>
    <updated>2012-01-18T09:22:33Z</updated>

    <summary>But again, UTF8 *contains* all characters know in AL32UTF8, the difference between them is pure the way some characters are stored (AL32UTF8 is a bit more efficient for some characters)</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[The difference between UTF8 and AL32UTF8 are: <br /><br />UTF8 stores Unicode characters with code points &gt; U+FFFF as two surrogate characters, three bytes each <br /><br />AL32UTF8 stores Unicode characters with code points &gt; U+FFFF as one four-byte character <br /><br /><p>UTF8 will not be updated anymore when new Unicode versions are released, only AL32UTF8 and AL16UTF16 will. <br /><br />Due
 to compatibility problems with pre-9i versions use UTF8 if you have 
Oracle8i clients connecting to the database. Use AL32UTF8 in pure 
Oracle9i environment. <br /><br />UTF-8 encoding is variable-width. In UTF-8, each character can be represented by either one, two, or three bytes. <br /><br />UTF8
 is a varying width 1-3 bytes per character Unicode encoding. It is 
supported for both database and national character sets. It is a binary 
superset of US7ASCII. UTF8 corresponds to Unicode CESU-8 encoding. <br /><br />AL32UTF8
 is a varying width 1-4 bytes per character. It is supported for CHAR, 
VARCHAR2, LONG and CLOB only (database character set). It is a binary 
superset of UTF8 (in 9.2 only) and US7ASCII. AL32UTF8 corresponds to 
Unicode UTF-8 encoding.</p><p>This is what Metalink says. In Note: 237593.1 <br /><br />There
 is a possible problem for 817 and lower versions: Problems connecting 
to AL32UTF8 databases from older versions 8i and lower.<br /><br />The 
default UTF8 characterset for 9i/10G is AL32UTF8, however this 
characterset is NOT recognised by any pre-9i clients/server systems.<br /><br />Oracle
 recommends that you use UTF8 instead of AL32UTF8 as database 
characterset if you have 8i (or older) servers and clients connecting to
 the 9i/10g system until you can upgrade the older versions.<br /><br />UTF8
 is unicode revision 3.0 in 8.1.7 and up. AL32UTF8 is Unicode 3.0 in 
9.0.1, Unicode 3.1 in 9.2, Unicode 3.2 in 10.1 and Unicode 4.01 in 10.2<br /><br />Besides
 the difference in Unicode version the "big difference" is that AL32UTF8
 has build in support for "Surrogate Pairs" (also known as Surrogate 
characters or "Supplementary characters"). <br />Practically this means that in 99% of the cases you can use UTF8 instead of AL32UTF8 without any problem. <br /><br />There
 are only a few situations where Surrogate Pairs are already used on 
client side. Windows system with HKSCS2001 (hong kong extension) is one 
of those. Note that you actually can *store* Surrogate Pairs in UTF8 but
 will store 2 * 3 byte characters and not like AL32UTF8 one 4 byte 
character.<br /><br />Note that if you now use UTF8 as database characterset
 and -in the future you do a roll out of new 9i or higher clients and 
all your other databases are upgraded to 9i or higher, you can simply do
 a alter database characterset to go from UTF8 to AL32UTF8 so downtime 
will be limited to a few minutes if the need to go to AL32UTF8 should 
arise. There is no performance impact on staying on UTF8<br /><br />NOTE:<br />This
 note is ONLY relevant if you have already a 9i AL32UTF8 database with 
data in. If you still need to create the 9i system then choose UTF8 
instead of AL32UTF8 as database characterset in the database creation 
assistant.<br /><br />So, *IF* you have already a 9i system running with 
AL32UTF8 then you can use the following steps in this note to change the
 database characterset to UTF8 without losing data.<br /><br />You can't 
simply use "ALTER DATABASE CHARACTERSET" to go from AL32UTF8 to UTF8 
because UTF8 is a SUB-set of AL32UTF8 (some codepoints which are correct
 in AL32UTF8 are not known in UTF8)<br /><br />But again, UTF8 *contains* 
all characters know in AL32UTF8, the difference between them is pure the
 way some characters are stored (AL32UTF8 is a bit more efficient for 
some characters)<br /><br />So you will run into ORA-12712 if you try alter database ...</p><p>Quote from : <a href="http://songhefei.itpub.net/post/7281/473958">http://songhefei.itpub.net/post/7281/473958</a><br /></p> ]]>
        
    </content>
</entry>

<entry>
    <title>Redo损坏导致ora-600[4000]的恢复案例一则</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2012/01/redo_ora-600_4000.html" />
    <id>tag:www.eygle.com,2012:/digest//4.2941</id>

    <published>2012-01-02T14:43:03Z</published>
    <updated>2012-01-02T14:47:31Z</updated>

    <summary>将trace文件往下翻，可以看到出现问题的block的dump信息，在block的itl中果然有一条活动事务存在。用bbed找到对应块，设置offset到61，将itl的flag从20改为80，重新计算block的checksum并apply。然后尝试重新启动数据库，这次ora-600[4000]错误没有了，报的是ora-600[2662]错误，数据库无法open。2662就比较容易了，网上相关的处理案例已经一大堆了，将数据库启动到mount状态，设置10015事件来调整scn即可</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ora600" label="Ora-600" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[作者：NinGoo 链接：<a href="http://www.ningoo.net/html/2009/ora-600_4000_affter_redo_corruption.html">http://www.ningoo.net/html/2009/ora-600_4000_affter_redo_corruption.html</a><br /><br /><p>据说今天是光棍节，逢年过节，必有大事。快下班的时候，一位朋友碰到了一个大问题，数据库服务器异常断电重启以后，数据库无法启动，报<strong>ora-600[4000]</strong>错误，尝试了使用隐藏参数，还是无法打开。</p>
<pre>ORA-00704: bootstrap process failure
ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [4000], [46], [], [], [], [], [], []
</pre>
<p>从<a href="http://www.ningoo.net/html/2009/ora-600_internal_error_categories.html">ora-600内部错误的类型</a>可以看到，4000是trasaction undo相关的内部错误。搜索一下可以发现，logzgh同学已经两次碰到过该问题了(<a href="http://logzgh.itpub.net/post/3185/191423">第一次</a>，<a href="http://logzgh.itpub.net/post/3185/489281">第二次</a>)。看来在异常宕机的情况下，这个问题出现的机率还是比较高的。既然是有先例的，恢复起来应该是没有问题的，这个案例和logzgh的第一个案例基本一样，trace文件里显示也是obj$上有异常事务:</p>
<pre>ORA-00600: internal error code, arguments: [4000], [46], [], [], [], [], [], []
Current SQL statement for this session:
select ctime, mtime, stime from obj$ where obj# = :1
</pre>
<p>将trace文件往下翻，可以看到出现问题的block的dump信息，在block的itl中果然有一条活动事务存在。用<strong>bbed</strong>找到对应块，设置offset到61，将itl的flag从20改为80，重新计算block的checksum并apply。然后尝试重新启动数据库，这次ora-600[4000]错误没有了，报的是<strong>ora-600[2662]</strong>错误，数据库无法open。2662就比较容易了，网上相关的<a href="http://www.eygle.com/archives/2005/12/oracle_diagnostics_howto_deal_2662_error.html">处理案例</a>已经一大堆了，将数据库启动到mount状态，设置<strong>10015</strong>事件来调整scn即可</p>
<pre>alter session set events '10015 trace name adjust_scn level 1';
</pre>
<p>如果数据库已经处于open状态，则可以使用如下语句来调整SCN:</p>
<pre>alter session set events 'IMMEDIATE trace name ADJUST_SCN level x';
</pre>
<p>再次重新打开库，报<strong>ora-600[2256]</strong>，继续使用10015事件，这次level设置为(ora-600错误的第三个参数+1)*4</p>
<pre>alter session set event '10015 trace name adjust_scn level 20';
</pre>
<p>重启，报<strong>ora-600[4097]</strong>错误，好了，现在基本上恢复已经接近尾声了，使用下面几个隐藏参数，可以正常将数据库打开了。接下来就是告诉朋友做全库export/重建库/import了。</p>
<pre>_allow_resetlogs_corruption=true
_allow_terminal_recovery_corruption=true
_corrupted_rollback_segments=(_SYSSMU1$, _SYSSMU2$, _SYSSMU3$, _SYSSMU4$, _SYSSMU5$, _SYSSMU6$,
 _SYSSMU7$, _SYSSMU8$, _SYSSMU9$, _SYSSMU10$)
</pre>
<p>年关将近，事故高发时期，阿弥陀佛，多求个平安吧。话说这个案例还没来得及些写呢，晚上回家的路上又接到说有人truncate了一张表。。。</p><p><br /></p> ]]>
        
    </content>
</entry>

<entry>
    <title>数据天下:阿里巴巴一淘背后的数据野心</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/12/etao_alibaba.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2922</id>

    <published>2011-12-05T05:35:19Z</published>
    <updated>2011-12-05T05:48:46Z</updated>

    <summary>马云你能创造奇迹吗?如果把阿里系所掌握的所有数据，再配以先进的数据挖掘技术，阿里巴巴将从一个B2B、B2C、C2C交易平台变身成为一家超级商业智能(BI)企业。从很早开始，阿里内部就建立了强大的数据挖掘部门，其掌握的数据挖掘技术在国内互联网行业内应是数一数二的;其次，今年上半年，阿里巴巴悄然收购了作针对中小网站流量统计的CNZZ，此举目的很明确，那就是把百万量级的中小网站的数据也逐步整合到阿里的数据体系中。而且，这些数据不仅仅是部分中小电商网站的数据，更多是海量网民在众多网站间的行为数据。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="IT新闻" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="alibaba" label="alibaba" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[（原文链接 <a href="http://news.cyzone.cn/news/2011/12/05/219410.html">http://news.cyzone.cn/news/2011/12/05/219410.html</a> ）<br /><span style="font-family: 楷体_gb2312">抵制一淘，京东商城捍卫的是什么?是数据。阿里巴巴最有价值的是什么?是数据。</span><br /><br />
<p>　　谁对中国20-40岁女性的身材(三围)最了解?这个人不是别人，而是阿里巴巴的老大<a href="http://capital.cyzone.cn/people/347/" target="_blank" class="keylink">马云</a>----他只要下个命令，让数据挖掘工程师把淘宝某段时间内20-40岁女性购买相关商品的数据汇总，再做个简单的挖掘，答案就放在那了。</p>
<p>　　2010年以来，随着凡客、京东与苏宁易购这两类B2C电商的崛起，国内掀起了又一次B2C电商的热潮，与以往的电商热不同，这次电商热的主流
参与者是众多传统企业。面对这种局面，淘宝祭出了建立2年却不温不火的淘宝商城，将其独立拆分运营，旨在吸引更多传统大中企业来此安家落户，而不要自己做
独立电商。</p>
<p>　　<b>但是很显然，淘宝商城是拦不住数以万计、十万甚至百万计的大中小型传统企业最终做独立B2C的趋势的。而且，接下来还会有更多的凡客、京东杀出来。这种趋势是会让<a href="http://capital.cyzone.cn/people/347/" target="_blank" class="keylink">马云</a>睡不着觉的，因为这种趋势发展下去，会把淘宝王国一点一点解构掉。</b></p>
<p>　　为了让自己能睡着觉，马云拿出了一个用他自己的话说是"要让百度睡不着觉"的对策，也就是一淘。一淘的底子实际上是原来淘宝的站内搜索，拆分独立后嫁接了全网搜索尤其是电商网站产品页抓取的技术。一淘的推出，标志着马云第一次大张旗鼓地把触角伸到了非阿里--淘宝体系的独立电商领域。一淘对于马云
来说绝不仅仅是个电商搜索工具，从战略上说，他是希望一淘最终能成为中国电子商务网站的搜索、导航门户。如果能做到这点，纵使独立电商的大潮如何汹涌，马
云都可高枕无忧。</p>
<p>　　但是事情却没那么顺利。一淘一推出就毁誉参半，京东等大型的独立B2C网站首先表示将用技术手段封杀一淘的抓站蜘蛛或爬虫。一淘想从包括京东在内的大小独立电商网站获得什么?京东等抵制一淘的网站捍卫的又是什么?答案很简单：数据。</p>
<p>　　如果你问我马云旗下这些公司最有价值的是什么，我的答案也是：数据。如今很多互联网企业对数据重视程度不断提高，但多数其他互联网企业的数据，其价值都无法与阿里巴巴所掌握的数据相提并论。</p>
<p>　　这里我们回想一句马云在2008年2月的"冷预言"：冬天来了，准备过冬吧。这句话在莺歌燕舞的2008年冒出来，几乎所有的人的反应都是：这是疯人疯语。</p>
<p>　　但令人意想不到的是，半年多后，大洋彼岸就传来了美国次贷危机进而引发全球金融危机的消息。马云为什么能如此先知先觉?答案跟本文开篇部分那个
半开玩笑的问题一样，马云不仅能从淘宝数据知道中国女性的身材情况，他同样能通过阿里巴巴的数据知道海量中小企业的经营状况，甚至能部分地知道美欧等国当
地居民消费力水平的变化。把这些数据结果跟不断恶化的次贷危机趋势一叠加，他就很容易地成了"先知"了。</p>
<p>　　如今业界对阿里巴巴旗下公司的标准描述是：阿里巴巴是中国最大的B2C平台;淘宝是国内最大的C2C平台;支付宝是中国最大的互联网第三方支付工具;拆分出来的淘宝商城有望成为国内最大的B2C平台;而一淘的目标则是成为基于商品搜索的网购门户。</p>
<p>　　把上面描述的加在一起等于什么?等于阿里巴巴通过旗下的各项业务积累了海量网民网购行为特征数据、众多商家的基本交易数据。然后呢?如今中外很多互联网公司手上也都掌握着很多数据，但是，我们也没有看到什么真正的奇迹发生。</p>
<p>　　马云你能创造奇迹吗?<b>如果把阿里系所掌握的所有数据，再配以先进的数据挖掘技术，阿里巴巴将从一个B2B、B2C、C2C交易平台变身成为一家
超级商业智能(BI)企业。从很早开始，阿里内部就建立了强大的数据挖掘部门，其掌握的数据挖掘技术在国内互联网行业内应是数一数二的;其次，今年上半
年，阿里巴巴悄然收购了作针对中小网站流量统计的CNZZ，此举目的很明确，那就是把百万量级的中小网站的数据也逐步整合到阿里的数据体系中。而且，这些
数据不仅仅是部分中小电商网站的数据，更多是海量网民在众多网站间的行为数据。</b></p>
<p>　　如果这就是马云秘而不宣的下一个梦想，那么一淘的出现就已经暴露了他的新野心。</p><p><br /></p> ]]>
        
    </content>
</entry>

<entry>
    <title>阿里巴巴谈用人：eHR打造价值观体系</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/11/oracle_hcm_peoplesoft.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2912</id>

    <published>2011-11-23T08:59:13Z</published>
    <updated>2011-11-23T09:11:55Z</updated>

    <summary>阿里巴巴集团e-HR资深经理宗鸣表示：&quot;通过实施基于PeopleSoft 人力资源解决方案的e-HR 平台，阿里巴巴的人力资源政策制度和统一流程在整个集团得到了更加有效无误的贯彻，人力资源部门的员工也从事务性的工作中逐步被释放出来，帮助我们实现了&apos;让人力资源管理实践更加开放简单&apos;的目标。&quot;</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[文章来源： <a href="http://www.chinabyte.com/303/12190303.shtml">http://www.chinabyte.com/303/12190303.shtml</a><br /><br />2011年10月28日，<a class="keyword_link" href="http://www.chinabyte.com/303/12190303.shtml" target="_blank">阿里巴巴</a>集团采用<a class="keyword_link" href="http://com.chinabyte.com/oracle/" target="_blank">Oracle</a> PeopleSoft<a class="keyword_link" href="http://com.chinabyte.com/" target="_blank"> 企业</a>人力资本管理(HCM)构建了集团统一的阿里HR<a class="keyword_link" href="http://info.chinabyte.com/" target="_blank">信息化</a>建设平台(简称e-HR平台)，成功实现了集团内人才开发、培训、绩效评估、薪资等管理工作的规范化、流程化和<a class="keyword_link" href="http://www.chinabyte.com/keyword/%E8%87%AA%E5%8A%A8%E5%8C%96/" target="_blank">自动化</a>，全面提高了人力资源管理工作效率，满足了集团内部组织变化和核心价值观传承的需求，支持了企业的快速发展和业务增长。
<p>　　阿里巴巴成立于1999年，是中国最大的<a class="keyword_link" href="http://www.chinabyte.com/keyword/%E7%94%B5%E5%AD%90%E5%95%86%E5%8A%A1/" target="_blank">电子商务</a>公司，它拥有的<a class="keyword_link" href="http://net.chinabyte.com/" target="_blank">互联网</a>用户遍布全球，成立之初只有18人。现在该公司在中国、香港、台湾、日本、韩国、英国和美国等国家和地区已拥有2万多名员工。</p>
<p>　　阿里巴巴走向成功离不开人力资本战略。阿里巴巴一直在努力推进企业价值观和员工素质的融合发展，为不同类型的员工提供不同的职业发展通道和广阔的成长空间，不断满足企业战略发展所需。</p>
<p>　　为了充分发挥人才的价值，更好地管理人力资本，进而提升组织关键能力和核心竞争力，阿里巴巴组织IT 和管理方面的专家进行了人力资源管理的咨询论证，并经过广泛市场调研和严密选型，选择了PeopleSoft HCM软件构建统一的e-HR平台。</p>
<p>　　在<a class="keyword_link" href="http://com.chinabyte.com/oracle/" target="_blank">甲骨文</a>合作伙伴毕博管理咨询公司的协助下，阿里巴巴实施了核心人力资源管理(Core HR)、薪资与福利管理、电子绩效管理、培训管理等诸多<a class="keyword_link" href="http://www.chinabyte.com/keyword/%E6%A8%A1%E5%9D%97/" target="_blank">模块</a>，并与财务管理等系统实现了充分集成与全面整合，构建统一规范的e-HR平台，为集团提供了人员信息和组织信息的单一可信数据源，并可与其他系统进行分享。由此，阿里巴巴在全球化背景下的人力资本的理念、价值观体系及相关活动项目都得以充分推行和落实。</p>
<p>　　借助PeopleSoft 
HCM软件，阿里巴巴成功将e-HR平台推广到包含港台和海外子公司在内的所有子公司，所有分支机构能同时开展人力资源管理工作，实现了整个集团的人力资
源工作流程规范化和自动化，显著提高了人力资源管理的精确性和工作效率，并从容应对了企业员工人数从2000人到2万多人的急剧扩张、业务高速发展、组织
机构和人员全面改制重组的巨大挑战。</p>
<p>　　此外，利用PeopleSoft HCM 
电子绩效管理模块，阿里巴巴构建了一个集团统一标准的全过程跟踪绩效管理平台，显著提高了绩效和评估等工作的时效性和可靠性，同时通过全新的绩效考核机制
提升了员工的企业价值观绩效，并通过对人力资源数据的智能分析为管理层战略决策提供了有效支撑。</p>
<p>　　更重要的是，在本次部署PeopleSoft 
HCM软件中，阿里巴巴通过自主创新不断对新平台进行调整，完善和丰富系统功能，取得了让新平台更加适应集团发展需求的重要成功，如在将原来的一家公司拆
分为集团子公司架构的组织重组过程中，集团内部不断磨合沟通，寻求最佳解决办法，最终圆满完成了架构调整、流程设置、人员配置等。</p>
<p>　　甲骨文高管及客户相关引言</p>
<p>　　阿里巴巴集团e-HR资深经理宗鸣表示："通过实施基于PeopleSoft 人力资源解决<a class="keyword_link" href="http://solution.chinabyte.com/new/" target="_blank">方案</a>的e-HR 平台，阿里巴巴的人力资源政策制度和统一流程在整个集团得到了更加有效无误的贯彻，人力资源部门的员工也从事务性的工作中逐步被释放出来，帮助我们实现了'让人力资源管理实践更加开放简单'的目标。"</p>
<p>　　甲骨文公司大中华区人力资本管理业务发展总监叶天禄表示："人才是一个企业保持持续快速发展的关键资本，发现人才、管理人才并给予其符合企业业
务发展所需的技能、发掘人才潜力，成为了每个企业的管理之重。作为同类最佳的人力资本管理软件，Oracle PeopleSoft 
企业人力资本管理(HCM)软件，可帮助企业通过对人进行投资而使其增值并创造新的价值，增强企业核心竞争力。"</p>
<p>　　甲骨文公司副总裁及大中华区管理软件业务总经理潘杰君表示："甲骨文全面、开放、集成的应用软件解决方案适用于所有规模的不同行业企业，并为这
些企业提供了全方位的选择。借助甲骨文业界领先的应用软件产品和解决方案，我们致力于帮助更多的客户优化企业绩效，实现显著的业务增长。"</p><p><br /></p> ]]>
        
    </content>
</entry>

<entry>
    <title>ORA-600 [25012] 错误的因果与消除</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/11/ora-600_25012.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2904</id>

    <published>2011-11-21T07:31:43Z</published>
    <updated>2011-11-21T07:37:03Z</updated>

    <summary>ora-600[25012]错误的本质原因是因为oracle在构造一致读的过程中发现undo block的rdba不对了，说到底还是因为块的损坏，解决方法就是往前递增全库的SCN，使oracle不产生一致读就可以了。当然，如果这个块已经坏的面目全非，那上述这种方法也不一定行。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[转摘崔华的文章，最近碰到多次 25012 （&nbsp; <a href="http://dbsnake.com/2011/02/ora-600-25012-reco.html">http://dbsnake.com/2011/02/ora-600-25012-reco.html</a> ）<br /><br /><p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ora-600[25012]</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">错误的本质原因是因为</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">oracle</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">在构造一致读的过程中发现</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">undo block</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">rdba</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">不对了，说到底还是因为块的损坏，解决方法就是往前递增全库的</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">SCN</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，使</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">oracle</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">不产生一致读就可以了。当然，如果这个块已经坏的面目全非，那上述这种方法也不一定行。</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></b></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></b></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">我们来看一下我构造的这个例子：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;drop table t1; </font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Table dropped.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;create table t1(id number,name varchar2(10));</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Table created.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;insert into t1 values(1,'cuihua1');</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">1 row created.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;insert into t1 values(2,'cuihua2');</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">1 row created.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;commit;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Commit complete.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;select * from t1;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ID NAME</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">---------- ----------</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1 cuihua1</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2 cuihua2</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">这么改：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">递增上述两条记录所在的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">itl</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit SCN;</span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">修改上述两条记录所在的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">itl</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">undo block</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">RDBA</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">；</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">改完后</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ora-600[25012]</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">如期而至：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;select * from t1;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">select * from t1</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>*</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">ERROR at line 1:</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; COLOR: red; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ORA-00600: internal error code, arguments: [25012], [11], [971], [], [], [],</span></b></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">[], []</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">此时的解决方法很简单----就是递增全库的</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">SCN</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">不让</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">oracle</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">产生一致读就可以了。</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"></span></b></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">递增完全库的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">SCN</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">后可以看到</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ora-600[25012]</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">已经不复存在：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;select * from t1;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ID NAME</span></font></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">---------- ----------</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1 cuihua1</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2 cuihua2</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-family: Arial; font-size: 10pt;" lang="PT-BR"><font color="#000000">&nbsp;</font></span></p><div class="asset-content entry-content">

                                    <div class="asset-body">
                                        <p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial"><font color="#000000">我在"</font></span><span style="FONT-FAMILY: Arial; COLOR: gray; FONT-SIZE: 10pt" lang="EN-US"><a href="http://dbsnake.com/2011/02/ora-600-25012-reco.html"><span style="COLOR: gray">Oracle</span><span style="FONT-FAMILY: 宋体; COLOR: gray; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial" lang="EN-US"><span lang="EN-US">数据库恢复之如何解决</span></span><span style="COLOR: gray">ORA-600[25012]</span><span style="FONT-FAMILY: 宋体; COLOR: gray; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial" lang="EN-US"><span lang="EN-US">错误</span></span></a></span><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">"这篇文章提到--<b style="mso-bidi-font-weight: normal">--</b></span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ora-600[25012]</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">错误的本质原因是因为</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">oracle</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">在构造一致读的过程中发现</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">undo block</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">rdba</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">不对了，说到底还是因为块的损坏，解决方法就是往前递增全库的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">SCN</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，使</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">oracle</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">不产生一致读就可以了。</span><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></b></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></b></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">我在写完上述这篇文章后得到了朋友的反馈说即便递增了全库的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">SCN</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，依然报错</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ora-600[25012]</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">。</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">这是有可能的，因为如果</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">oracle</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">是因为相应的</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">transaction</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">未</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">而被迫产生的一致读，那么这种情况下无论你怎样递增</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">SCN</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">都是没有效果的。此时我们的解决方法就是手工把这个</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">transaction</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">改成</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">就好了。</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></b></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></b></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">我们来看一个实例：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;drop table t1; </font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Table dropped.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;create table t1(id number,name varchar2(10));</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Table created.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;insert into t1 values(1,'cuihua1');</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">1 row created.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;insert into t1 values(2,'cuihua2');</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">1 row created.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;commit;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Commit complete.</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;select * from t1;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>ID NAME</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">---------- ----------</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1 cuihua1</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2 cuihua2</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">这么改：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">修改上述两条记录所对应的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">itl</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">flag</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，改为未</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">；</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">清掉上述两条记录所对应的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">itl</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">中的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit SCN</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">；</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">修改上述两条记录所对应的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ktuxe</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">中的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit flag</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，由</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">0x09</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">改为</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">0x10</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，<b style="mso-bidi-font-weight: normal">注意这个</b></span><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit flag</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">是一定要改的，因为要避免</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">oracle</span></b><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的延迟块清除</span></b><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">；</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">4、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">修改上述两条记录所在的</span></font><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US">itl</span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US">undo block</span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; COLOR: black; FONT-SIZE: 10pt" lang="EN-US">RDBA</span><span style="FONT-FAMILY: 宋体; COLOR: black; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">；</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">改完后相应</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">block</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ktbbh</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">如下所示：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">BBED&gt; p ktbbh</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">struct ktbbh, 72 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>@20<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>ub1 ktbbhtyp<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@20<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x01 (KDDBTDATA)</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>union ktbbhsid, 4 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@24<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub4 ktbbhsg1<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@24<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0000775d</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub4 ktbbhod1<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@24<span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>0x0000775d</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>struct ktbbhcsc, 8 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@28<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub4 kscnbas<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@28<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x80000904</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 kscnwrp<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@32<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0001</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>b2 ktbbhict<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@36<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>ub1 ktbbhflg<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@38<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x03 (KTBFONFL)</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>ub1 ktbbhfsl<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@39<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x00</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>ub4 ktbbhfnx<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@40<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x00000000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>struct ktbbhitl[0], 24 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@44<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>struct ktbitxid, 8 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@44<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 kxidusn<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@44<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0011</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 kxidslt<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@46<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x001f</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub4 kxidsqn<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@48<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x00000167</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>struct ktbituba, 8 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@52<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b style="mso-bidi-font-weight: normal"><span style="mso-spacerun: yes">&nbsp;</span>ub4 kubadba<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@52<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0xf2c00484</b></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ub2 kubaseq<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@56<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x003e</span></font></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub1 kubarec<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@58<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x23</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span><b style="mso-bidi-font-weight: normal"><span style="mso-spacerun: yes">&nbsp;</span></b></span><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ub2 ktbitflg<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@60<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0002 (NONE)</span></b></font></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>union _ktbitun, 2 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@62<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>b2 _ktbitfsc<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@62<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 _ktbitwrp<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@62<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b style="mso-bidi-font-weight: normal">ub4 ktbitbas<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@64<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x00000000</b></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>struct ktbbhitl[1], 24 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@68<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>struct ktbitxid, 8 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@68<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 kxidusn<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@68<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 kxidslt<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@70<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub4 kxidsqn<span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>@72<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x00000000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>struct ktbituba, 8 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@76<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub4 kubadba<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@76<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x00000000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 kubaseq<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@80<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub1 kubarec<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>@82<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x00</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 ktbitflg<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@84<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x0000 (NONE)</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>union _ktbitun, 2 bytes<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@86<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>b2 _ktbitfsc<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@86<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub2 _ktbitwrp<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@86<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>0x0000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ub4 ktbitbas<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>@88<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0x00000000</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">执行完上述修改后</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ora-600[25012]</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">如期而至：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;select * from t1;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">select * from t1</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>*</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">ERROR at line 1:</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; COLOR: red; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ORA-00600: internal error code, arguments: [25012], [11], [971], [], [], [],</span></b></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; COLOR: red; FONT-SIZE: 10pt" lang="EN-US">[], []</span></b></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">这个时候你会发现递增完全库的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">SCN</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">后库已经起不来了，报错：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Mon Feb 28 14:32:14 2011</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Errors in file /cadrasu01/app/oracle/admin/testdb/udump/testdb_ora_5955644.trc:</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; COLOR: red; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ORA-00600: internal error code, arguments: [4062], [17], [31], [16], [], [], [], []</span></b></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Mon Feb 28 14:32:15 2011</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">Errors in file /cadrasu01/app/oracle/admin/testdb/udump/testdb_ora_5955644.trc:</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; COLOR: red; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ORA-00600: internal error code, arguments: [4062], [17], [31], [16], [], [], [], []</span></b></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">Mon Feb 28 14:32:15 2011</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">当我们解决完上述错误后会发现</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ora-600[25012]</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">依然阴魂不散，即此时递增全库的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">SCN</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">是没有效果的：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;select * from t1;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">select * from t1</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>*</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">ERROR at line 1:</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; COLOR: red; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ORA-00600: internal error code, arguments: [25012], [11], [971], [], [], [],</span></b></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><b style="mso-bidi-font-weight: normal"><span style="FONT-FAMILY: Arial; COLOR: red; FONT-SIZE: 10pt" lang="EN-US">[], []</span></b></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">这时候这么改：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"></span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">1、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">修改上述两条记录所对应的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">itl</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">flag</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，改为</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">；</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">伪造一个</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit SCN</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，这个</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit SCN</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">只需要比相应的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">CSC</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">大一点点就好；</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 18pt; mso-list: l1 level1 lfo2; tab-stops: list 18.0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-fareast-font-family: Arial" lang="EN-US"><span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">修改上述两条记录所对应的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">ktuxe</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">中的</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">commit flag</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，由</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">0x10</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">改为</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US">0x09</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">；</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">改完后</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ora-600[25012]</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10pt; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-ansi-language: PT-BR">已经不复存在，上述两条记录又回来了：</span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"></span></font></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">SQL_testdb&gt;select * from t1;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><font color="#000000">&nbsp;</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><font color="#000000"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR">ID NAME</span></font></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000">---------- ----------</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1 cuihua1</font></span></p>
<p style="MARGIN: 0cm 0cm 0pt; BACKGROUND: #e6e6e6" class="MsoNormal"><span style="FONT-FAMILY: Arial; FONT-SIZE: 10pt; mso-ansi-language: PT-BR" lang="PT-BR"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2 cuihua2</font></span></p>
<p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-family: Arial; font-size: 10pt;" lang="PT-BR"><font color="#000000"><br /></font></span></p><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-family: Arial; font-size: 10pt;" lang="PT-BR"><font color="#000000">Metalink 上的一些解释：</font></span></p><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span style="font-family: Arial; font-size: 10pt;" lang="PT-BR"><font color="#000000"><br /> </font></span></p><pre>ORA-600 [25012] "Relative to Absolute File Number Conversion Error"

Note: For additional ORA-600 related information please read Note:146580.1

PURPOSE:
  This article discusses the internal error "ORA-600 [25012]", what
  it means and possible actions. The information here is only applicable
  to the versions listed and is provided only for guidance.

ERROR:
  ORA-600 [25012] [a] [b] [c]

VERSIONS:
  versions 8.0 and above

DESCRIPTION:

  We are trying to generate the absolute file number given a tablespace
  number and relative file number and cannot find a matching file number
  or the file number is zero.

ARGUMENTS:
  Arg [a] Tablespace Number
  Arg [b] Relative file number
  Arg [c] Absolute file number (This arg is present is more recent releases)

FUNCTIONALITY:
  KERNEL FILE MANAGEMENT TABLESPACE COMPONENT

IMPACT:
  POSSIBLE PHYSICAL CORRUPTION

SUGGESTIONS:        

  The possibility of physical corruption exists.

  Obtain the trace files and alert.log for this error and log a Service Request
  with Oracle Support Services for diagnosis.

  If the Arg [b] Relative file number returns 0 (zero), look for fake indexes
  that can cause this error.

  The following query list fake indexes :

  select a.*,b.flags from dba_objects a, sys.ind$ b
  where a.object_id = b.obj#
  and bitand(b.flags,4096)=4096;<br /><br /><br /></pre>
                                    </div>


                                </div><br />]]>
        
    </content>
</entry>

<entry>
    <title>对于SYS.ALL_SYNONYMS查询的性能问题</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/11/sys_all_synonyms.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2899</id>

    <published>2011-11-16T09:54:41Z</published>
    <updated>2011-11-17T09:57:48Z</updated>

    <summary>Oracle 10g之后，对于ALL_SYNONYMS的查询可能带来问题，以下是摘录。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[Oracle 10g之后，对于ALL_SYNONYMS的查询可能带来问题，以下是摘录。<br /><br /><blockquote><p><strong>In this Document</strong><br />
<span> <a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;doctype=PROBLEM&amp;id=377037.1#SYMPTOM">Symptoms</a><br />
<a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;doctype=PROBLEM&amp;id=377037.1#CHANGE">Changes</a><br />
<a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;doctype=PROBLEM&amp;id=377037.1#CAUSE">Cause</a><br />
<a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;doctype=PROBLEM&amp;id=377037.1#FIX">Solution</a><br />
<a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;doctype=PROBLEM&amp;id=377037.1#REF">References</a><br />
</span></p>
<hr size="1">
<h2 class="km">Applies to:</h2>
<p>Oracle Server - Enterprise Edition - Version: 10.2.0.1 to 10.2.0.4 - Release: 10.2 to 10.2<br />
Information in this document applies to any platform.</p>
<h2 class="km"><a href="editor-content.html?cs=UTF-8" name="SYMPTOM"></a>Symptoms</h2>
<p>In some cases queries against the ALL_SYNONYMS view are slower after upgrading to 10.2.0.x<br />
For example:</p>
<div class="kmcodeblock"><code class="km">SELECT /*+ RULE */ COUNT(*)<br />
FROM<br />
ALL_SYNONYMS WHERE OWNER='PUBLIC' AND SYNONYM_NAME='&amp;1'</code></div>
<p><strong>Oracle 10g Release 10.2:</strong></p>
<pre><div class="kmcodeblock">
<pre>call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       81      0.02       0.00          0          0          0           0
Execute     81      0.05       0.09          0          0          0           0
Fetch       81    355.93     371.05          0   45269282          0          81
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total      243    356.00     371.15          0   45269282          0          81</pre><p><strong></strong></p></div><p><strong>
Oracle 9i Release 9.2:</strong></p></pre>
<pre><div class="kmcodeblock"><code class="km">call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       81      0.02       0.02          0          0          0           0
Execute     81      0.04       0.01          0          0          0           0
Fetch       81      0.03       0.01          0        810          0          81
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total      243      0.09       0.05          0        810          0          81</code></div>
</pre>
<h2 class="km"><a href="editor-content.html?cs=UTF-8" name="CHANGE"></a>Changes</h2>
<p>Changed to a version higher than 9.2 from 9.2 or below.</p>
<h2 class="km"><a href="editor-content.html?cs=UTF-8" name="CAUSE"></a>Cause</h2>
<p>10g release 10.1.0.5, 10.2.0.1 and above contain a new view 
definition  for ALL_SYNONYMS which is the result of a fix to an 
outstanding defect.  This defect meant that certain synonyms would not 
be displayed when  selecting from ALL_SYNONYMS. To fix the defect a new,
 more complex,  ALL_SYNONYMS was required and as a side affect queries 
that select  against the new ALL_SYNONYMS definition  have much more 
complicated  execution plans and may be more expensive when compared to 
execution  plans in earlier versions (such as 9.2).<br />
For example:</p>
<p>Compare the  execution plan for ALL_SYNONYMS queries in 10046 trace  
file in 10.2 and in 9.2, to confirm execution plan is more resource  
consuming in 10.2 :</p>
<p><strong>In 9.2 execution plan is :</strong></p>
<pre>Rows     Row Source Operation
-------  ---------------------------------------------------
1  SORT AGGREGATE
1   FILTER
1    NESTED LOOPS
1     NESTED LOOPS
1      TABLE ACCESS BY INDEX ROWID USER$
1       INDEX UNIQUE SCAN I_USER1 (object id 41)
1      TABLE ACCESS BY INDEX ROWID OBJ$
1       INDEX RANGE SCAN I_OBJ2 (object id 34)
1     TABLE ACCESS BY INDEX ROWID SYN$
1      INDEX UNIQUE SCAN I_SYN1 (object id 98)
0    FILTER
0     NESTED LOOPS
0      NESTED LOOPS
0       TABLE ACCESS BY INDEX ROWID USER$
0        INDEX UNIQUE SCAN I_USER1 (object id 41)
0       TABLE ACCESS BY INDEX ROWID OBJ$
0        INDEX RANGE SCAN I_OBJ2 (object id 34)
0      INDEX RANGE SCAN I_OBJAUTH1 (object id 100)
0     FIXED TABLE FULL X$KZSRO
0    FIXED TABLE FULL X$KZSPR</pre>
<p><strong>In 10.2 execution plan is :</strong></p>
<pre>Rows     Row Source Operation
-------  ---------------------------------------------------
1  SORT AGGREGATE (cr=558882 pr=0 pw=0 time=4326033 us)
1   VIEW  ALL_SYNONYMS (cr=558882 pr=0 pw=0 time=4325993 us)
1    SORT UNIQUE (cr=558882 pr=0 pw=0 time=4325988 us)
1     UNION-ALL  (cr=558882 pr=0 pw=0 time=4325909 us)
1      FILTER  (cr=10 pr=0 pw=0 time=185 us)
1       NESTED LOOPS  (cr=10 pr=0 pw=0 time=173 us)
1        NESTED LOOPS  (cr=7 pr=0 pw=0 time=136 us)
1         TABLE ACCESS BY INDEX ROWID USER$ (cr=3 pr=0 pw=0 time=56 us)
1          INDEX UNIQUE SCAN I_USER1 (cr=2 pr=0 pw=0 time=39 us)(object id 41)
1         TABLE ACCESS BY INDEX ROWID OBJ$ (cr=4 pr=0 pw=0 time=77 us)
1          INDEX RANGE SCAN I_OBJ2 (cr=3 pr=0 pw=0 time=48 us)(object id 34)
1        TABLE ACCESS BY INDEX ROWID SYN$ (cr=3 pr=0 pw=0 time=31 us)
1         INDEX UNIQUE SCAN I_SYN1 (cr=2 pr=0 pw=0 time=17 us)(object id 98)
0       FILTER  (cr=0 pr=0 pw=0 time=0 us)
0        FILTER  (cr=0 pr=0 pw=0 time=0 us)
0         NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us)
0          NESTED LOOPS  (cr=0 pr=0 pw=0 time=0 us)
0           TABLE ACCESS BY INDEX ROWID USER$ (cr=0 pr=0 pw=0 time=0 us)
0            INDEX UNIQUE SCAN I_USER1 (cr=0 pr=0 pw=0 time=0 us)(object id 41)
0           TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0            INDEX RANGE SCAN I_OBJ2 (cr=0 pr=0 pw=0 time=0 us)(object id 34)
0          INDEX RANGE SCAN I_OBJAUTH1 (cr=0 pr=0 pw=0 time=0 us)(object id 100)
0        FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=0 us)
0       FIXED TABLE FULL X$KZSPR (cr=0 pr=0 pw=0 time=0 us)
0      NESTED LOOPS  (cr=558872 pr=0 pw=0 time=4325697 us)
0       NESTED LOOPS  (cr=558872 pr=0 pw=0 time=4325692 us)
7        NESTED LOOPS  (cr=558849 pr=0 pw=0 time=4325568 us)
1         TABLE ACCESS BY INDEX ROWID USER$ (cr=3 pr=0 pw=0 time=25 us)
1          INDEX UNIQUE SCAN I_USER1 (cr=2 pr=0 pw=0 time=15 us)(object id 41)
7         VIEW  _ALL_SYNONYMS_TREE (cr=558846 pr=0 pw=0 time=4325543 us)
7          CONNECT BY WITHOUT FILTERING (cr=558846 pr=0 pw=0 time=4325527 us)
7           FILTER  (cr=279521 pr=0 pw=0 time=1848969 us)
18            COUNT  (cr=279323 pr=0 pw=0 time=1505655 us)
18             NESTED LOOPS  (cr=279323 pr=0 pw=0 time=1143804 us)
25717              NESTED LOOPS  (cr=201352 pr=0 pw=0 time=1113824 us)
27395               NESTED LOOPS  (cr=148330 pr=0 pw=0 time=925979 us)
69679                NESTED LOOPS  (cr=51254 pr=0 pw=0 time=487918 us)
958                 TABLE ACCESS FULL USER$ (cr=233 pr=0 pw=0 time=2996 us)
69679                 TABLE ACCESS BY INDEX ROWID OBJ$ (cr=51021 pr=0 pw=0 time=431685 us)
69679                  INDEX RANGE SCAN I_OBJ2 (cr=3216 pr=0 pw=0 time=80937 us)(object id 34)
27395                TABLE ACCESS BY INDEX ROWID SYN$ (cr=97076 pr=0 pw=0 time=697424 us)
27395                 INDEX UNIQUE SCAN I_SYN1 (cr=69681 pr=0 pw=0 time=425927 us)(object id 98)
25717               TABLE ACCESS BY INDEX ROWID USER$ (cr=53022 pr=0 pw=0 time=309207 us)
25717                INDEX UNIQUE SCAN I_USER1 (cr=27305 pr=0 pw=0 time=150664 us)(object id 41)
18              TABLE ACCESS BY INDEX ROWID OBJ$ (cr=77971 pr=0 pw=0 time=598777 us)
26615               INDEX RANGE SCAN I_OBJ2 (cr=51865 pr=0 pw=0 time=371282 us)(object id 34)
7            FILTER  (cr=198 pr=0 pw=0 time=1794 us)
7             NESTED LOOPS  (cr=198 pr=0 pw=0 time=1489 us)
50              NESTED LOOPS  (cr=91 pr=0 pw=0 time=853 us)
7               NESTED LOOPS  (cr=52 pr=0 pw=0 time=414 us)
7                TABLE ACCESS BY INDEX ROWID SYN$ (cr=31 pr=0 pw=0 time=264 us)
7                 INDEX UNIQUE SCAN I_SYN1 (cr=24 pr=0 pw=0 time=179 us)(object id 98)
7                TABLE ACCESS BY INDEX ROWID USER$ (cr=21 pr=0 pw=0 time=126 us)
7                 INDEX UNIQUE SCAN I_USER1 (cr=14 pr=0 pw=0 time=74 us)(object id 41)
50               TABLE ACCESS BY INDEX ROWID OBJ$ (cr=39 pr=0 pw=0 time=320 us)
50                INDEX RANGE SCAN I_OBJ2 (cr=22 pr=0 pw=0 time=215 us)(object id 34)
7              INDEX RANGE SCAN I_OBJAUTH1 (cr=107 pr=0 pw=0 time=596 us)(object id 100)
2             FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=174 us)
18           COUNT  (cr=279325 pr=0 pw=0 time=1440703 us)
18            NESTED LOOPS  (cr=279325 pr=0 pw=0 time=1440701 us)
25717             NESTED LOOPS  (cr=201354 pr=0 pw=0 time=1112712 us)
27395              NESTED LOOPS  (cr=148332 pr=0 pw=0 time=926537 us)
69679               NESTED LOOPS  (cr=51255 pr=0 pw=0 time=487858 us)
958                TABLE ACCESS FULL USER$ (cr=233 pr=0 pw=0 time=2945 us)
69679                TABLE ACCESS BY INDEX ROWID OBJ$ (cr=51022 pr=0 pw=0 time=431397 us)
69679                 INDEX RANGE SCAN I_OBJ2 (cr=3216 pr=0 pw=0 time=80879 us)(object id 34)
27395               TABLE ACCESS BY INDEX ROWID SYN$ (cr=97077 pr=0 pw=0 time=687683 us)
27395                INDEX UNIQUE SCAN I_SYN1 (cr=69681 pr=0 pw=0 time=415512 us)(object id 98)
25717              TABLE ACCESS BY INDEX ROWID USER$ (cr=53022 pr=0 pw=0 time=308614 us)
25717               INDEX UNIQUE SCAN I_USER1 (cr=27305 pr=0 pw=0 time=150815 us)(object id 41)
18             TABLE ACCESS BY INDEX ROWID OBJ$ (cr=77971 pr=0 pw=0 time=591777 us)
26615              INDEX RANGE SCAN I_OBJ2 (cr=51865 pr=0 pw=0 time=363738 us)(object id 34)
7           FILTER  (cr=198 pr=0 pw=0 time=1794 us)
7             NESTED LOOPS  (cr=198 pr=0 pw=0 time=1489 us)
50              NESTED LOOPS  (cr=91 pr=0 pw=0 time=853 us)
7               NESTED LOOPS  (cr=52 pr=0 pw=0 time=414 us)
7                TABLE ACCESS BY INDEX ROWID SYN$ (cr=31 pr=0 pw=0 time=264 us)
7                 INDEX UNIQUE SCAN I_SYN1 (cr=24 pr=0 pw=0 time=179 us)(object id 98)
7                TABLE ACCESS BY INDEX ROWID USER$ (cr=21 pr=0 pw=0 time=126 us)
7                 INDEX UNIQUE SCAN I_USER1 (cr=14 pr=0 pw=0 time=74 us)(object id 41)
50               TABLE ACCESS BY INDEX ROWID OBJ$ (cr=39 pr=0 pw=0 time=320 us)
50                INDEX RANGE SCAN I_OBJ2 (cr=22 pr=0 pw=0 time=215 us)(object id 34)
7              INDEX RANGE SCAN I_OBJAUTH1 (cr=107 pr=0 pw=0 time=596 us)(object id 100)
2            FIXED TABLE FULL X$KZSRO (cr=0 pr=0 pw=0 time=174 us)
0        TABLE ACCESS BY INDEX ROWID OBJ$ (cr=0 pr=0 pw=0 time=0 us)
0         INDEX UNIQUE SCAN I_OBJ1 (cr=0 pr=0 pw=0 time=0 us)(object id 33)
0       TABLE ACCESS BY INDEX ROWID SYN$ (cr=0 pr=0 pw=0 time=0 us)
0        INDEX UNIQUE SCAN I_SYN1 (cr=0 pr=0 pw=0 time=0 us)(object id 98)</pre>
<h2 class="km"><a href="editor-content.html?cs=UTF-8" name="FIX"></a>Solution</h2>
<p>There is no resolution to this issue.<br />
In future versions it is  possible that this may be addressed but any 
fix would not be  back-portable to previous versions as architechtural 
changes are  required to enable it.</p>
<p>The current ALL_SYNONYMS view's changes and additional explain plan  
steps are necessary to resolve the original issue with the ALL_SYNONYMS 
 view.</p>
<p>To have similar performance from the ALL_SYNONYMS view on 10g  to version 9.2 do the following steps :</p>
<ol><li>Create a new view "SYS.ALL_SYNONYMS_920X" with all_synonyms  
definition from database 920X. The view definition for ALL_SYNONYMS is  
stored in the $ORACLE_HOME/rdbms/admin/catalog.sql script. To create the
  new view, login as the SYS user and execute the following:
<div class="kmcodeblock"><code class="km">connect / as sysdba<br />
create or replace view SYS.ALL_SYNONYMS_920X<br />
(OWNER, SYNONYM_NAME, TABLE_OWNER, TABLE_NAME, DB_LINK)<br />
as<br />
select u.name, o.name, s.owner, s.name, s.node<br />
from sys.user$ u, sys.syn$ s, sys.obj$ o<br />
where o.obj# = s.obj#<br />
and o.type# = 5<br />
and o.owner# = u.user#<br />
and (<br />
o.owner# in (USERENV('SCHEMAID'), 1 /* PUBLIC */)  /* user's private, any public */<br />
or /* user has any privs on base object */<br />
exists<br />
(select null from sys.objauth$ ba, sys.obj$ bo, sys.user$ bu<br />
where bu.name = s.owner<br />
and bo.name = s.name<br />
and bu.user# = bo.owner#<br />
and ba.obj# = bo.obj#<br />
and (   ba.grantee# in (select kzsrorol from x$kzsro)<br />
or ba.grantor# = USERENV('SCHEMAID')<br />
)<br />
)<br />
or /* user has system privileges */<br />
exists (select null from v$enabledprivs<br />
where priv_number in (-45 /* LOCK ANY TABLE */,<br />
-47 /* SELECT ANY TABLE */,<br />
-48 /* INSERT ANY TABLE */,<br />
-49 /* UPDATE ANY TABLE */,<br />
-50 /* DELETE ANY TABLE */)<br />
)<br />
)<br />
/</code></div>
</li><li>To force users to select from this new view without code modification, a private synonym can be created:
<pre><div class="kmcodeblock"><code class="km">CREATE SYNONYM username.ALL_SYNONYMS FOR SYS.ALL_SYNONYMS_920X </code></div>
</pre>
<p>This is private synonym must be created for any user executing which wants to use the new definition.<br />
Note  that the users could also select from the new definition directly 
but  this would require code references to be changed in the 
application.</p></li></ol>
<p><strong>Note</strong> that this workaround simply reverts to the  
previous view definition.It simply provides a workaround to achieve the 
 old performance in the short term.</p>
<p>Having reverted to the previous view definition users may hit <a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=BUG&amp;id=3369744">Bug:3369744</a> per which ALL_SYNONYMS does not show all accessible synonyms.</p>
<h2 class="km"><a href="editor-content.html?cs=UTF-8" name="REF"></a>References</h2>
<p><a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=BUG&amp;id=5454590">BUG:5454590</a> - SELECT FROM ALL_SYNONYMS AND ALL_OBJECTS IS MUCH SLOWER IN 10.2.0.2<br />
<a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;id=364822.1">NOTE:364822.1</a> - Poor Performance On Certain Dictionary Queries After Upgrade To 10g<br />
SR:16161618.6</p></blockquote>其他阅读： <a href="http://www.eygle.com/archives/2011/06/all_objects_xkgldp_xkzspr.html">http://www.eygle.com/archives/2011/06/all_objects_xkgldp_xkzspr.html</a><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>普希金的缪斯情节</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/11/puxijin.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2891</id>

    <published>2011-11-15T00:29:31Z</published>
    <updated>2011-11-06T03:32:04Z</updated>

    <summary>普希金的诗歌在语言上的最大的特点就是简洁和独特的音韵美。普希金的诗从一开始就表现出异乎寻常的简练。这也许是他的自然朴素之风相联系的。果戈里谈到普希金的诗时指出：&quot;这里没有华丽的词藻，这里只有诗；没有任何虚有其表的炫耀。一切都简朴，一切都雍容大方，一切都充满含而不露的决不会突然宣泄而出的光彩；一切都符合纯正的诗所永远具有的言简意赅。&quot;他的&quot;用语言把人们的心灵燃亮&quot;的崇高使命感和伟大抱负深深感动着一代又一代的人</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="精品美文" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="person" label="Person" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[（原文链接：<a href="http://www.8dou.net/html/article_show_56246.shtml">http://www.8dou.net/html/article_show_56246.shtml</a> ）<br />亚历山大.普希金是俄罗斯伟大的民族诗人，俄国积极浪漫主义文学的主要代表和俄国批判现实主义文学的奠基人。高尔基赞誉普希金是"俄国文学之始祖"，是
"伟大的俄国人民诗人"。①"俄国诗歌的太阳"。冈察洛夫说"普希金是俄罗斯艺术之父，是开山鼻祖"，这些称赞是切合普希金的。他在其并不是太长的创作生
涯中，为我们留下了包括诗歌、小说、喜剧、文学等大量文学遗产，而在这一切之中，最被人喜欢的，所传颂的则是他的抒情诗。<br />&nbsp;　　他的抒情诗里大部
分时对奶娘、爱过的女人、相识不久的女友、以及最后成为他的伴侣的冈察洛娃的眷恋与思念，但是他的抒情性，却有很强的感染力，他抒情，但不娇柔，他善于表
达思念，但不遮遮掩掩。"无怪当时有人说，读了普希金的诗，俄罗斯人的压抑的感情仿佛才得到了解放。"（卢永在高莽等译《普希金诗选》中的前言）这是他的
风格，他不拗句，几乎顺手拈来，感情的流露犹如流水般，让人清晰可辨。他的艺术的语言，开创了"俄罗斯的文学语言"丰富了俄罗斯语言的魅力，有如莎士比亚
的语言对英语产生的影响一般，他的抒情语言隽永流畅，又富有情思。<br />&nbsp;　　他对古希腊神话中的缪斯女神情有独钟，他说"当你陶醉于热烈的爱情，∕切
不可将爱情的缪斯遗忘"（《致巴丘什科夫》）他把缪斯歌唱，把他当做爱情的象征，这是对缪斯的一种钟情，更是对爱情的衷情。在他的作品里面，缪斯似的形象
让他更产生对爱情的向往与渴望，1816年更是进一步阐述了他的爱情追求"爱情对我的折磨我很珍重，∕纵然死也让我爱着死去！"（《心愿》）他的爱情的渴
望总是那么的强烈。<br />&nbsp;　　他的爱情诗总是那么的缠绵细腻。一见倾心的爱慕，长相思的痛苦，嫉妒的折磨，欲言又止的羞怯，绝望中的倾吐，回忆中的甜
蜜，都是那样的有感情，都恰如其分的化作他优美的诗句。在《致凯恩》："我记得那美妙的瞬间：你就在我的眼前降临，如同昙花一现的梦幻，如同纯真之美的化
身。""我忘却了你那温柔的声音，也忘却了你天仙般的容颜。"如此的缠绵悱恻，这爱情如梦幻般"在我的梦中盘旋"也如"幻想吹散"，他痛苦，他受折磨，
"没有泪水，没有生命，没有爱情。"这是他与凯恩长时间来往后离去的痛苦，泪水也流不下来，爱就这样失去了，但是还记得那曾有的美妙的瞬间，是那样的甜
蜜。"你的温柔的声音总响在耳边"，彼此之间的羞怯，让相会也缺少了言语，但却"无声胜有声"。<br />&nbsp;　　在爱里，他尽情的摄取人间的美；在爱里，他真诚的寻找自己坎坷的生涯的慰藉：在爱里，他不断的汲取创作的动力、生活的勇气。<br />&nbsp;
　　他的奶娘----阿琳娜·罗季翁诺夫娜，是他最早的生活中的缪斯。她给他带来温暖，给他带来诗的语言，也给他带来诗的灵感。对她的感情是深沉的，也是尊敬
的。她犹如缪斯掌管世间的抒情诗掌管着普希金的诗，普希金的诗歌最早的材料是她从小就给他讲的民间故事，这就是普希金的最早的缪斯。是她影响了普希金的的
创作生涯，是她给他诗的最初模式，是她让他知道这世间还有给他栖身和温暖的人。普希金的奶娘给他更多的爱与关怀。在《给奶娘》的诗里这样写道："我的严酷
岁月里的伴侣，∕我的老态龙钟的亲人！∕你独自在偏僻的松林深处∕久久、久久地等着我的来临。∕你在自己堂屋的窗下，∕像守卫的岗哨，暗自伤心，∕在那满
是皱褶的手里，∕你不时地停下你的织针。∕你朝那被遗忘的门口，∕望着黑暗而遥远的旅程：∕预感、惦念、无限的忧愁∕时刻压迫者你的心胸。∕你仿佛觉
得......"诗人并没有用什么华丽的辞藻，或者多么奇特的艺术形式，他只是用了最简单的、最质朴的形式来倾诉自己的最高尚的真挚情感。这是他在1826年写于
莫斯科的，这年沙皇突然将普希金召到莫斯科来，他的奶娘----阿琳娜·罗季翁诺夫娜对他的处境十分的担忧。普希金被流放，已经给她带来沉痛的心伤，而沙皇的
突然召回更让她对他的命运前途曾加更多的阴影。命运给他开了太大的玩笑，但他仍旧继续前往，正如他毫不畏惧的前往莫斯科一样。他对他的奶娘的深情厚谊超越
了亲身父母，一个慈母的期盼，一个慈母的关怀，是对儿子的担心，是母亲的所给与的儿子的母爱。普希金在诗中流露了对奶娘的眷念，表露出的无奈，是对母亲的
遗憾。因为命运现在不在他的掌控之中，他身不由己，也没办法去探望"老态龙钟的亲人"这是他"无限的忧愁"。诗人离开亲人太久了，没有能够回到亲人的怀里
述说他的苦痛。这首诗里他寻找自己坎坷的生涯的慰藉，但是却让他觉得很遥远，也似乎有点不太现实。他对奶娘的感情不是一般的深，也不是一般的沉，而是在深
和沉之外的亲爱。胡风在他的《文学与生活》里说"有真性的文艺作品，一定流贯着作者底感情、欲求、理想。"普希金的这首诗，流露出的感情，是真诚的，是有
真性的。<br />&nbsp;　　他以缪斯自比。在那首"从前是这样"的诗句里，这样写到"我从前这样，我现在还是这样：∕无忧无虑，缪斯多情，你们知道，朋友
们，∕凝视着美色，我怎能不动感情，∕有怎能没有怯懦的温柔、内心的激动。∕爱情在我一生中对我的戏弄还不够？∕在吉普里达撒下的虚妄的情网中，∕我久久
的挣扎着，像一只幼小的鹰，∕曾一百次受辱都还不知悔改，∕现在我又把自己的哀怨献给新宠......"缪斯是多情的，在诗人失去爱情之后，还有一个缪斯还在他的
身边，朋友们不知道，但是诗人还是勇敢的站起来，继续把爱情追求，"献给新宠"。在虚妄的情网中，他像只小鹰般苦苦的挣扎。这首诗是他内心的独白，也是他
爱情之一的独白。<br />&nbsp;　　诗人是多情的，但却又是真诚的。在1827年5月，普希金去彼得堡前夕写《给叶尼乌沙科娃》的诗中，说"虽然距离您很远很
远，我还是不能和您分离"这是他的真情的独白，虽然有可能是他"痛苦的回忆"，在"孤寂中怎样悲伤，我也不希求别人的宽慰----如果我有一天被吊在刑场，您
呢，会不会为我叹一口气？"他的言语很平常，但却组织得那样的有感情，有条理，不用过多的修饰，感情也随之滚滚流露，情思也绵绵。他的诗丰满，完整，含
蓄，匀称，这表现了他的诗的特性之一。<br />&nbsp;　　普希金的抒情诗随着他的年龄的增长，表达也更加富有哲理化，对自己生活处境的担忧，有时也表露出忧郁
的情调。但是普希金的忧郁不是温柔脆弱的心灵的甜蜜的哀愁。它永远是一颗坚强有力的心灵的忧郁；他对读者具有一种魅力，在读者的心底深刻而有力地回荡着，
和谐地振荡着他的心弦。普希金从不沉溺于"忧郁的情感"（别林斯基《论普希金的抒情诗》），的确，这种情感时常在他心里振鸣着，但并没有抹杀心灵别种声音
的合奏，以至成为单音。有时候，他在一阵沉郁以后，会象狮子耸动鬃毛似地突然摆摆头想把悒郁的阴云逐开。这种强烈的乐观情绪尽管没有完全把悒郁抹去，却给
了它一种特别的爽气，使心神振作。在《哀歌》里这样的忧郁也显得坚强而有力，在第一节里他说"想起过去荒唐岁月的那种作乐，∕我就心情沉重，像酒醉般受折
磨。"可以说这是他前期生活的写照，生活受折磨，心情也沉重。但是在第二节里一转他悲伤的情调，对生活也更加乐观，他说"我相信，生活不仅是操劳、灾难和
烦忧，∕总会有赏心悦目的事和我相伴：∕有时我会再次在和谐声中陶醉，∕有时会因为捏造、中伤而泪洒胸前，∕也许，在我悲苦一生的晚年，∕爱情会对我一展
离别的欢颜。"虽然有忧愁，但是却是振作的，有些忧郁，却是乐观与豁达。这是他对生活的深切的思考，对爱情哲理般的剖析。<br />&nbsp;　　普希金每首诗的基
本情感，就其自身说，都是优美的、雅致的、娴熟的；它不仅是人的情感，而且是作为艺术家的人的情感。在普希金的任何情感中永远有一些特别高贵的、温和的、
柔情的、馥郁的、优雅的东西。他的诗没有奇幻的、空想的、虚伪的、怪诞的理想的东西；它整个浸透着现实。它没有给生活的面貌涂上脂粉，它只是把生活自然的
真实的美表现出来。<br />&nbsp;　　他的作品的思想并不呈现为抽象的思想，并不是死的形式，而是活的创造，其形式的富于生命的美说明了那作品是有着庄严的思
想的。在这里面没有织补或者安装的迹象，没有思想和形式的分野，而是由两者溶合而成的整个的有机体。思想是从理智产生的；但能产生和创造活的东西的，是爱
情而非理智。因此，抽象的思想和诗的思想之间的区别是很明显的；前者是理性的果实，后者是作为热情的爱情的果实。普希金的诗中，特别是他的爱情诗中，诗的
思想表露得最直接，而抽象的思想在他后期的爱情诗作品中有着理性的思考。他后期的作品使得抽象的思想和诗的思想融合得非常的密切，有热情也有理性，形式也
更加严谨，诗的整体性得到有机的统一。冈察洛夫在《迟做总比不做的好》中说"普希金身上隐藏着一切种子和胚胎，这些种子和胚胎后来在我们这些艺术家身上发
育成为艺术的一切种类和形式。"②可以说普希金所创造的"普希金诗体"影响着以后的众多诗人，它是一种开创的形式，一种新的种类，给诗歌注入了新鲜的血
液。<br />&nbsp;　　"能够真实的反映生活的作品，能够真实地反映出生活底脉搏的作品，才是好的，伟大的。......文艺并不是生活的复写，文艺作品所表现的东西
须得是作家从生活里提炼出来，和作家底主观活动起了化学作用以后的结果。文艺不是生活的奴隶，不是向眼前的生活屈服，它必须站在比生活更高的地方，能够有
把生活向前推进的力量。"③<br />&nbsp;　　他的诗的内容是他一生的真实写照，是他生活的反应。艺术来源于生活，他的那些抒情诗都与他本人经历有关系，都来
源于他的亲身体验。在他短促的一生中，尽管他经历了多次的爱情、失恋，并最终为他所心爱的人走上了角斗场，成为统治阶级的牺牲品，但是他那善良的天性，高
尚的情感，明晰的理智使他认识到，诗人既是"天才的复仇者，真理的朋友"，又是"苍天倾注的生命和永恒的光明。"他在诗中除了批判丑恶，还有宣扬情感的高
尚，歌颂美好的事物。<br />&nbsp;　　普希金诗歌的艺术特色首先是真诚。别林斯基指出，普希金的诗的特征之一，那使他和以前的诗派严格区分的东西，是他的真
诚。另一个显著特点就是自然、朴素而优雅。普希金真正地把它们统一在一起，这就是普希金的高超之处。普希金的秘诀在于，他的情感"不仅是人的感情，而且是
作为艺术家的人的情感"，这样，诗的品味在很大的程度上就取决于艺术家情感和思想的品味了，或者说取决于诗人的思想和艺术的素质了。别林斯基认为："在这
一方面，可以把普希金的诗比作因感情和思想而变得炯炯有神的眼睛的美，如果您夺去这双眼睛变得炯炯有神的感情和思想，它们只是美丽的眼睛，却不再是神气和
秀美的眼睛了。"<br />&nbsp;　　普希金的诗歌在语言上的最大的特点就是简洁和独特的音韵美。普希金的诗从一开始就表现出异乎寻常的简练。这也许是他的自然
朴素之风相联系的。果戈里谈到普希金的诗时指出："这里没有华丽的词藻，这里只有诗；没有任何虚有其表的炫耀。一切都简朴，一切都雍容大方，一切都充满含
而不露的决不会突然宣泄而出的光彩；一切都符合纯正的诗所永远具有的言简意赅。"他的"用语言把人们的心灵燃亮"的崇高使命感和伟大抱负深深感动着一代又
一代的人。<br />&nbsp;　　注释<br />&nbsp;　　①高尔基著、缪灵珠译：《俄国文学史》，上海文艺出版社，1959年，第177页。<br />&nbsp;　　②冈察洛夫、屠格涅夫、陀思妥耶夫斯基、克罗连科著，冯春选编：《文学论文选》，1997年版，58页<br />&nbsp;　　③胡风著：《文学与生活密云期生活小记》，人民文学出版社，2001年。<br />&nbsp;　　参考文献：<br />&nbsp;　　郑克鲁主编，《外国文学史》上册，高等教育出版社，2008年。<br />&nbsp;　　（俄）冈察洛夫、屠格涅夫、陀思妥耶夫斯基、克罗连科著，冯春选编：《文学论文选》，1997年版。<br />&nbsp;　　（俄）普希金著，高莽等译：《普希金诗选》，人民文学出版社，2005年<br /><br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>内存数据库在江苏联通BOSS账务处理中的应用</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/11/boss_jiangsu_unicom.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2888</id>

    <published>2011-11-07T10:36:36Z</published>
    <updated>2011-11-02T09:38:58Z</updated>

    <summary>（原文出处：http://database.51cto.com/art/200612/36973.htm）引言 中国加入WTO之后，电信市场将逐步向外资开放，2006年开始外资将全面进入中国电信业，国际先进的服务模式和服务水平势必会对国内电信运营商提 出更高的挑战。同时国内电信业的竞争格局也发生了深刻的变化：第三、四张移动牌照即将发放，竞争形势更为残酷；用户增量市场逐渐萎缩，作为我们运营商更需 要的是如何提高自身服务质量，在存量市场中保持原有客户以及从竞争对手中获得客户。这些都意味着市场的竞争已逐步由技术驱动转向市场驱动和客户需求驱动， 电信运营商必须从传统的经营模式向&quot;以客户为中心，以市场为导向&quot;的经营模式转变，也将从单纯的网络竞争、价格竞争转向网络、价格与服务、渠道、品牌相结 合的全方位的竞争模式。 电信业正进入新一轮的高速发展时期，市场需求成为驱动力??市场部门不断推出的各种各样促销计划和市场推广活动，以及用于刺激用户使用运营商的服务 以扩大用户群的全新变化，使得计费账务系统必须实现非常复杂的资费、折扣的管理能力和资费批价的能力。随着电信业务的迅猛发展，电信运营商的计费账务系统 的压力也越来越大，如何保证计费账务系统的实时性成为各运营商关心的重点。 BSS系统是每个电信运行商的核心业务支撑系统。近年来，随着支持用户量和话单量的成倍增长和实时业务的不断扩展，数据处理量大量增加，业务处理模 式日趋复杂，必然导致主机CPU和I/O占用不断成线性增加。在此情况下，即使增加硬件支持，现有架构下系统的处理速度也很难得到质的提高。由此对业务产 生了极其不利的影响：账务功能不灵活，系统对业务需求的支撑灵活度不够；难以在短时间内响应市场需求，效率与灵活度难以兼得；计费实时性得不到确切的保 障，无法给用户提供实时准确的查询服务；账务批处理情况下可能造成与营业应用的性能相互影响。为此，现有的BSS系统进行框架结构上的全面改造已经是大势 所趋。 内存数据库介绍 1．什么是内存数据库 众所周知，相对于磁盘，内存的数据读写速度要高出几个数量级，将数据保存在内存中相对于从磁盘上访问数据能够极大地提高应用的性能。一方面由于从磁 盘上读写数据时需要进行磁头的机械移动，直接从内存中读写数据则是电信号的移动，两者速度完全不在一个数量级上；另外一个容易被忽略的时间就是系统调用时 间，因为每次对磁盘进行访问都需要进行一次操作系统的系统调用，而系统调用相对于普通的库函数调用要花费更多的时间。之所以要进行系统调用是因为处于用户 态的应用程序不能直接对外部设备进行操作，而需要进入内核态，由操作系统调用相应设备的驱动程序完成对设备的操作。系统调用一般是通过中断来完成 得，CPU只有在完成当前时钟周期的操作后在下一个时钟周期处理中断请求，并且在进行中断处理时需要进行上下文信息的保存与切换。所以一个应用如果频繁地 进行系统调用也会极大地降低系统地性能。正是由于这两方面的原因，使得从磁盘上读写数据比从内存中读写数据的时间开销要大得多。 传统的数据库管理系统的所有数据都是放在磁盘上进行管理，需要频繁地访问磁盘来进行数据的操作。如上所述，由于磁盘数据访问本身的性能瓶颈，数据库 管理系统的性能提升受到了很大的限制。然而，近年来，随着计算机技术的飞速发展，要解决这一问题已经有了现实可能：内存容量的不断提高，而价格不断下跌； 计算机进入了64位时代，操作系统可以支持更大的地址空间。 正是基于技术的发展，以及市场上对更加快速和实时的数据库管理系统的需求，出现了内存数据库系统。内存数据库系统抛弃了磁盘数据管理的传统方式，基 于全部数据都在内存中管理进行了新的体系结构的设计，并且在数据缓存、快速算法、并行操作方面也进行了相应的改进，所以数据处理速度一般比传统数据库的数 据处理速度要快很多，一般都在10倍以上。 2．内存数据库和磁盘数据库的性能测试对比 以下比较基于内存数据库和磁盘数据库中完全相同的数据库表结构和应用，测试对比的数据库为Oracle 9i和ALTIBASE 3.5.7，在相同的测试环境下进行。 表1 INSERT：对oracle和ALTIBASE进行相同表的插入操作，查看插入的效率。 INSERT：对oracle和ALTIBASE进行相同表的插入操作，查看插入的效率。 3．内存数据库和利用程序吊用内存的对比 由于内存的高速特点，早在2000年以前就有通过进程吊用内存的方式来进行程序处理，内存数据库提供的是一个模块化结构，保持一个核心引擎相对不变，外围可变，提供标准扩展接口和灵活的二次开发能力和良好的流程优化能力：在BSS系统中采用内存数据库的理由 拿江苏联通过去的BSS系统为例，账务处理模块的性能瓶颈是在计费处理和销账处理。 由于数据量大、用户资料量大、计费处理模型相对复杂、以Flist支持字段变化和格式可配置等原因，使得现在的计费处理速度相对较慢。而由于清单数 据量非常大，将其全部放入内存数据库中是不太可能的。为了利用内存数据库的高速度，则只能采取折中的方法，全部清单数据放在磁盘数据库中，根据实际情况只...</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[（原文出处：<a href="http://database.51cto.com/art/200612/36973.htm">http://database.51cto.com/art/200612/36973.htm</a>）<br /><br /><p><strong>引言</strong></p>
<p>中国加入WTO之后，电信市场将逐步向外资开放，2006年开始外资将全面进入中国电信业，国际先进的服务模式和服务水平势必会对国内电信运营商提
出更高的挑战。同时国内电信业的竞争格局也发生了深刻的变化：第三、四张移动牌照即将发放，竞争形势更为残酷；用户增量市场逐渐萎缩，作为我们运营商更需
要的是如何提高自身服务质量，在存量市场中保持原有客户以及从竞争对手中获得客户。这些都意味着市场的竞争已逐步由技术驱动转向市场驱动和客户需求驱动，
电信运营商必须从传统的经营模式向"以客户为中心，以市场为导向"的经营模式转变，也将从单纯的网络竞争、价格竞争转向网络、价格与服务、渠道、品牌相结
合的全方位的竞争模式。</p>
<p>电信业正进入新一轮的高速发展时期，市场需求成为驱动力??市场部门不断推出的各种各样促销计划和市场推广活动，以及用于刺激用户使用运营商的服务
以扩大用户群的全新变化，使得计费账务系统必须实现非常复杂的资费、折扣的管理能力和资费批价的能力。随着电信业务的迅猛发展，电信运营商的计费账务系统
的压力也越来越大，如何保证计费账务系统的实时性成为各运营商关心的重点。</p>
<p>BSS系统是每个电信运行商的核心业务支撑系统。近年来，随着支持用户量和话单量的成倍增长和实时业务的不断扩展，数据处理量大量增加，业务处理模
式日趋复杂，必然导致主机CPU和I/O占用不断成线性增加。在此情况下，即使增加硬件支持，现有架构下系统的处理速度也很难得到质的提高。由此对业务产
生了极其不利的影响：账务功能不灵活，系统对业务需求的支撑灵活度不够；难以在短时间内响应市场需求，效率与灵活度难以兼得；计费实时性得不到确切的保
障，无法给用户提供实时准确的查询服务；账务批处理情况下可能造成与营业应用的性能相互影响。为此，现有的BSS系统进行框架结构上的全面改造已经是大势
所趋。</p>
<p><strong>内存数据库介绍</strong></p>
<p><strong>1．什么是内存数据库</strong></p>
<p>众所周知，相对于磁盘，内存的数据读写速度要高出几个数量级，将数据保存在内存中相对于从磁盘上访问数据能够极大地提高应用的性能。一方面由于从磁
盘上读写数据时需要进行磁头的机械移动，直接从内存中读写数据则是电信号的移动，两者速度完全不在一个数量级上；另外一个容易被忽略的时间就是系统调用时
间，因为每次对磁盘进行访问都需要进行一次操作系统的系统调用，而系统调用相对于普通的库函数调用要花费更多的时间。之所以要进行系统调用是因为处于用户
态的应用程序不能直接对外部设备进行操作，而需要进入内核态，由操作系统调用相应设备的驱动程序完成对设备的操作。系统调用一般是通过中断来完成
得，CPU只有在完成当前时钟周期的操作后在下一个时钟周期处理中断请求，并且在进行中断处理时需要进行上下文信息的保存与切换。所以一个应用如果频繁地
进行系统调用也会极大地降低系统地性能。正是由于这两方面的原因，使得从磁盘上读写数据比从内存中读写数据的时间开销要大得多。</p>
<p>传统的数据库管理系统的所有数据都是放在磁盘上进行管理，需要频繁地访问磁盘来进行数据的操作。如上所述，由于磁盘数据访问本身的性能瓶颈，数据库
管理系统的性能提升受到了很大的限制。然而，近年来，随着计算机技术的飞速发展，要解决这一问题已经有了现实可能：内存容量的不断提高，而价格不断下跌；
计算机进入了64位时代，操作系统可以支持更大的地址空间。</p>
<p>正是基于技术的发展，以及市场上对更加快速和实时的数据库管理系统的需求，出现了内存数据库系统。内存数据库系统抛弃了磁盘数据管理的传统方式，基
于全部数据都在内存中管理进行了新的体系结构的设计，并且在数据缓存、快速算法、并行操作方面也进行了相应的改进，所以数据处理速度一般比传统数据库的数
据处理速度要快很多，一般都在10倍以上。</p>
<p><strong>2．内存数据库和磁盘数据库的性能测试对比</strong></p>
<p>以下比较基于内存数据库和磁盘数据库中完全相同的数据库表结构和应用，测试对比的数据库为Oracle 9i和ALTIBASE 3.5.7，在相同的测试环境下进行。</p>
<p>表1　<br /><img class="fit-image" src="http://database.51cto.com/files/uploadimg/20061228/1454510.BMP" /><br />INSERT：对oracle和ALTIBASE进行相同表的插入操作，查看插入的效率。 </p>
<p><img class="fit-image" src="http://database.51cto.com/files/uploadimg/20061228/1454511.BMP" /><br />INSERT：对oracle和ALTIBASE进行相同表的插入操作，查看插入的效率。</p>
<p><img class="fit-image" src="http://database.51cto.com/files/uploadimg/20061228/1454512.BMP" /><br /><strong>3．内存数据库和利用程序吊用内存的对比</strong></p>
<p>由于内存的高速特点，早在2000年以前就有通过进程吊用内存的方式来进行程序处理，内存数据库提供的是一个模块化结构，保持一个核心引擎相对不变，外围可变，提供标准扩展接口和灵活的二次开发能力和良好的流程优化能力：<br /><img class="fit-image" src="http://database.51cto.com/files/uploadimg/20061228/1454513.BMP" /><br /><strong>在BSS系统中采用内存数据库的理由</strong></p>
<p>拿江苏联通过去的BSS系统为例，账务处理模块的性能瓶颈是在计费处理和销账处理。</p>
<p>由于数据量大、用户资料量大、计费处理模型相对复杂、以Flist支持字段变化和格式可配置等原因，使得现在的计费处理速度相对较慢。而由于清单数
据量非常大，将其全部放入内存数据库中是不太可能的。为了利用内存数据库的高速度，则只能采取折中的方法，全部清单数据放在磁盘数据库中，根据实际情况只
将一段时间内的清单数据保存在内存数据库中，费用累计和优惠可以针对这一段时间内的清单数据进行一个事务性处理。其他数据，例如累计费用数据，用户资料，
费率和优惠信息等相对与清单数据来说数据量较小，可以直接放在内存数据库中。将数据加载到内存数据库中的基本原则是，数据经常用到且数据量不会很大，数据
查询操作比数据写和更新操作要频繁。除计费处理外，当其他业务应用需要用到这些数据时也都直接从内存数据库中取。</p>
<p>对于销账处理而言，由于在销账处理的过程中涉及到多张表，在用户请求缴费时，在数据库中会将查询出来的资料信息和费用信息放在两张临时表中，一个为
资料信息临时表，一个为费用临时表。由于所有缴费人员都同时用到这两张临时表，在传统数据库中往往出现大量争用，大大延长这两张物理表查询所需数据的时
间。将这两临时表放在内存数据库中后，由于内存处理速度远远快于磁盘IO，争用出现的可能大为降低，极大减少了单独事务的相应处理时间，得以满足大量并发
访问的要求。<br /><img class="fit-image" src="http://database.51cto.com/files/uploadimg/20061228/1454514.gif" /><br />图1　江苏联通BSS原账务处理流程</p>
<p>当然，如果不采用内存数据库来管理以上的数据，我们可以采取将这些数据组织成相应的数据结构，并用一些共享内存算法来进行查询和更新处理。但是从前
面提到的两者对比来看，这样做，开发量大，开发周期长，对程序员要求高；建立的系统也会难以维护、查询和二次开发，并且逻辑结构复杂，接口也难以扩展；而
最关键的是，数据完整性和一致性难以保障。相对于利用程序开发调用内存处理来说，内存数据库自有其优势。首先，内存数据库是产品化的数据库管理软件，已经
是完整的产品，极大缩短了开发周期；其次，内存数据库有着开放的平台和接口，程序开发和移植更加灵活便捷，也便于维护和二次开发；可以通过使用统一的
SQL语言方便的查询内存中的数据；在数据库中保障数据的安全性和完整性。这些优势，对于快速部署和简化维护都是有利的。</p>
<p><strong>内存数据库在江苏联通BSS账务处理系统中应用的特点和效果</strong></p>
<p>江苏联通在账务处理系统中采用了韩国的产品ALTIBASE内存数据库。为完成公司提出的计费实时性指标要求，我们认为只有从底层彻底改变整个账务
处理的体系架构，才能对性能有质的提高。ALTIBASE内存数据库管理系统是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。在江苏联通运
用之前，在电信领域ALTIBASE内存数据库只有韩国SK有大型的全面解决方案。江苏联通在综合分析了SK的案例以及组织了多次大规模周详的测试后才决
定运用此产品。</p>
<p>江苏联通是国内第一家将内存数据库运用于大型支撑系统的运营商。因为账务处理模块是效率瓶颈最大、也是对系统压力最大的一个模块，对用户打电话后查
询话单的实时性感知度以及小额欠费都有较大影响，江苏联通重点针对账务处理系统引入了ALTIBASE技术，以便于提高客户满意度和减少费用流失。</p>
<p>自ALTIBASE内存数据库在江苏联通BSS账务处理系统中上线一年来，运行一直非常稳定。在应用中，只把最需要的中间数据放到内存库中，节省了
内存的开销又提高了效率，把好钢用在了刀刃上。因为原先的账务处理瓶颈就在于读取营账的用户数据以及写入账务中间数据的频次非常高，频繁的物理读写造成了
I/O的瓶颈，而且会影响前台系统的性能。通过采用复制技术将Oracle磁盘数据库中账务处理需要用到的营账数据实时复制增量数据到ALTIBASE内
存数据库中去，将处理好的中间账务结果也写入ALTIBASE，这样做到了只把造成瓶颈的数据放到内存中处理，也就是用最快速的存储资源解决了开销最大的
处理操作。另外，ALTIBASE内存数据库管理系统为需要容错服务的系统提供实时数据库复制的功能，采用联机日志的网络复制实现了双机之间数据的同步。
采用双机热备的方式，既实现了高可用性又实现了负荷分摊。在我们的设计架构中实现了双机热备，同时我们将前台的实时话费的查询接口都链接到备库上，这样就
实现了双机分摊账务和营业两种应用的功效。<br /><img class="fit-image" src="http://database.51cto.com/files/uploadimg/20061228/1454515.gif" /><br />图2　江苏联通BSS现账务处理流程</p>
<p><strong>1．内存数据库在江苏联通BSS账务处理系统中应用的特点</strong></p>
<p>(1)只把最需要的中间数据放到内存库中，节省了内存的开销又提高了效率，把好钢用在了刀刃上</p>
<p>因为原先的账务处理瓶颈就在于读取营账的用户数据以及写入账务中间数据的频次非常高，频繁的物理读写造成了I/O的瓶颈，而且会影响前台系统的性
能。我们采用了复制技术将Oracle磁盘数据库中账务处理需要用到的营账数据实时复制增量数据到Altibase内存中去，将处理好的中间账务结果也写
入Altibase，这样做到了只把造成瓶颈的数据放到内存中处理，也就是用最快速的存储资源解决了开销最大的处理操作。</p>
<p><strong>2．采用双机热备的方式，既实现了高可用性又实现了负荷分摊</strong></p>
<p>ALTIBASE内存数据库管理系统为需要容错服务的系统提供实时数据库复制的功能，采用联机日志的网络复制实现了双机之间数据的同步。在我们的设
计架构中，备机既实现了双机热备、同时我们将前台的实时话费的查询接口都链接到备库上，这样就实现了双机分摊账务和营业两种应用的功效。</p>
<p><strong>3．投资保护</strong></p>
<p>使用内存数据库可节省硬件投资和系统维护成本。通过对比，如果要达到目前的计费实时性指标要求，按照开发商的建议，要将CPU扩展到32个，内存
64G，同时系统开发商还要作大量的程序修改工作；而目前在10个CPU、95G内存上系统正常运行，CPU的平均占用率大约在55%--75%（原先为
95%）。按照常识，1G内存的价格约为1颗CPU的1/10。即节省了约19个CPU的投资。而在收益方面：根据指标数据，采用内存数据库后，平均小额
欠费率下降到老系统的55％左右，按此推算，每月给公司节约成本千万以上。</p>
<p><strong>结束语</strong></p>
<p>在当今电信领域，传统的一些支撑系统的架构已经逐渐不能满足日益增长的业务需求和客户需求，引入一些新的技术来解决我们生产中遇到的问题是必然的，这些新的技术架构很可能在今后会成为一种发展趋势，就像SAN替代DAS、关系型数据库替代传统数据库那样。</p>
<p>ALTIBASE在江苏联通BSS系统中的运用就是一个采用新技术架构实现系统目标的典型案例。主要有以下几点经验可以借鉴于同类的新产品的应用上：</p>
<p>（1）不轻易对现有架构做大范围的改动，保证框架稳定；</p>
<p>（2）控制成本、有效使用，将好钢用在刀刃上；</p>
<p>（3）针对系统中最主要的问题，投入最合适的产品或解决方案，实现既定的目标。</p>
<p>江苏联通在账务处理系统中率先采用ALTIBASE内存数据库体系架构，提高了系统处理速度2.5倍，使得系统的实时性大大提高，降低了小额欠费率、减轻对生产系统的压力。</p>
<p>内存数据库只是多种新技术中有代表性的一种而已，只要解放思想、选用得当，完全可以在投入不大的情况下以这类实用的产品解决系统中本来难以改变的瓶
颈。在未来的BSS发展方向中内存数据库会逐渐成长为一股中坚力量，在客户细分、用户行为分析、产品管理、欠费控制系统等需要复杂高速运算的系统中发挥作用。 <br /></p><p><br /></p><br />]]>
        
    </content>
</entry>

<entry>
    <title>Oracle将15亿美元收购云服务商RightNow</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/11/oracle_acquire_rightnow.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2889</id>

    <published>2011-11-05T15:14:59Z</published>
    <updated>2011-11-05T15:25:33Z</updated>

    <summary>似乎没有人能阻止Oracle向云计算领域迈进的步伐，凭借强大的现金优势和数据库技术领先，Oracle不断通过收购来强化自己的新的探索。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[似乎没有人能阻止Oracle向云计算领域迈进的步伐，凭借强大的现金优势和数据库技术领先，Oracle不断通过收购来强化自己的新的探索。<br /><br />消息链接： <a href="http://tech.it168.com/a2011/1025/1263/000001263778.shtml">http://tech.it168.com/a2011/1025/1263/000001263778.shtml</a><br />甲骨文网站链接：<a href="http://www.oracle.com/us/corporate/acquisitions/rightnow/index.html">http://www.oracle.com/us/corporate/acquisitions/rightnow/index.html</a><br /><br /><b>2011年10月25日</b>，路透社消息，美国软件生产商甲骨文Oracle敲定一项协议,将以大约15亿美元收购在线客户服务公司
RightNow 
Technologies。此举引发市场揣测,认为其他所谓的云技术公司也将面临多宗并购.云技术公司通过互联网提供软件,数据和计算服务.<p>　　甲骨文的出价合每股43美元,较RightNow周五收盘溢价20%.RightNow股价周一收盘暴涨19.41%至42.94美元.甲骨文收高2.33%报32.87美元.</p><p>　　甲骨文正全力进军云技术市场,涉足的领域包括销售能力自动化,人力资源和数据库等系统.</p><p>　　"RightNow从甲骨文得到的报价非常优惠,我认为不会有其他公司来抢亲.不会再有这样的估值了."Pacific Crest分析师Brendan Barnicle说.</p><p>　
　自1997年RightNow创始人Greg 
Ginaforte在自家一间空闲卧室中起家,到2010年该公司已经是营收超过1.85亿美元的大公司,并可与更大的同业
SalesForce.com(CRM.N: 行情)和在线营销软件生产商Constant Contact(CTCT.O: 行情)展开竞争.</p><p>　　"相信甲骨文收购RightNow将给SalesForce.com的云服务业务带来更直接的竞争和更加难以应付的威胁,"Oppenheimer分析师Brad Reback说.</p><p>　　多年来,市场一直传言甲骨文有意收购SalesForce.com来充实自己的云技术实力.另一个可能的收购目标是NetSuite(N.N: 行情),甲骨文执行长埃利森已经部分拥有该公司.</p><p>　　但Rick Sherlund认为SalesForce.com并非不二之选,因为甲骨文正尝试拓宽"软件即服务(software-as-a-service)"这一整体业务模式,从而确保能够参与市场的全面竞争.</p><p>　　RightNow如果接受其他方提出的更高报价,可能需要向甲骨文支付约6,000万美元的分手费.如果协议在某些条件下告吹,分手费或只需1,800万美元左右.RightNow发言人拒绝对交易进一步置评.</p><p>　　甲骨文预期该宗交易将在今年底或明年初完成.</p><p>　　<b>会有更多并购交易涌现?</b></p><p>　　分析师表示,甲骨文在过去一年里不断买入资产以弥补云技术服务方面的空白,收购了包括ATG,Inquira和FatWire在内的公司.</p><p>　　"这次收购表明,甲骨文对于涉足云技术领域是认真的,"Susquehanna分析师Derrick Wood说,"不过我们认为,它不可能通过自体成长实现这一目标,如果想成为强大的竞争者,就需要借助收购来进入这一市场."</p><p>　　分析师估算,甲骨文收购RightNow的价格约占其现金和投资总额的4%.</p><p>　　但分析师认为,对小型云计算公司感兴趣的并非只有甲骨文一家,戴尔(DELL.O: 行情),惠普(HPQ.N: 行情)和微软(MSFT.O: 行情)等大型科技企业可能也有兴趣.</p><p>　　Pacific Crest的Barnicle表示,收购RightNow的交易对整个行业有利,因为这预示着一波收购热潮将会来临.</p><p>　　"我认为客户关系管理领域将继续有并购活动涌现,"Nucleus Research分析师Rebecca Wettemann说.</p><p>　　消息披露後,RightNow的同业之一Egain Communications(EGAN.O: 行情)股价一度涨至7.98美元,最终收高10.45%报7.82美元。</p><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>内存数据库的基本原理与内存数据库的应用</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/11/memdb_timesten_altibase.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2887</id>

    <published>2011-11-02T09:05:56Z</published>
    <updated>2011-11-02T09:31:53Z</updated>

    <summary>内存数据库，顾名思义就是将数据放在内存中直接操作的数据库。相对于磁盘，内存的数据读写速度要高出几个数量级，将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时，内存数据库抛弃了磁盘数据管理的传统方式，基于全部数据都在内存中重新设计了体系结构，并且在数据缓存、快速算法、并行操作方面也进行了相应的改进，所以数据处理速度比传统数据库的数据处理速度要快很多，一般都在10倍以上。内存数据库的最大特点是其&quot;主拷贝&quot;或&quot;工作版本&quot; 常驻内存，即活动事务只与实时内存数据库的内存拷贝打交道。显然，它要求较大的内存量，但并非任何时刻整个数据库都存放在内存，即内存数据库系统还是要处理I/O。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[<b>内存数据库，顾名思义就是将数据放在内存中直接操作的数据库</b>。相对于磁盘，内存的数据读写速度要高出几个数量级，将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时，内存数据库抛弃了磁盘数据管理的传统方式，基于全部数据都在内存中重新设计了体系结构，并且在数据缓存、快速算法、并行操作方面也进行了相应的改进，所以数据处理速度比传统数据库的数据处理速度要快很多，一般都在10倍以上。内存数据库的最大特点是其"主拷贝"或"工作版本"
常驻内存，即活动事务只与实时内存数据库的内存拷贝打交道。显然，它要求较大的内存量，但并非任何时刻整个数据库都存放在内存，即内存数据库系统还是要处理I/O。<br /><br />内存数据库是以牺牲内存资源为代价换取数据处理实时性的，内存数据库和磁盘数据库都是当今信息社会里每个企业所必须的关系型数据库产品，磁盘数据库解决的是大容量存储和数据分析问题，而内存数据库解决的是实时处理和高并发问题。两者的存在是相辅相成的，内存数据库的事务实时处理性能要远强于磁盘数据库。但是相对的，他的数据安全方面还没有达到磁盘数据库比肩的地步。<br />内存数据库将物理内存作为数据的第一存储介质，而将磁盘作为备份。随着电信业务的发展，系统对实时性的要求和对业务灵活修改的要求非常高，在此种情况下对于内存数据库的需求也越来越高。磁盘数据库的做法是将数据存入内存中进行处理，这种方式的可管理性及数据安全可靠性都没有保障。而内存数据库正是针对这一弱点进行了改进。<br /><br />实际上，内存数据库并不是一项时髦技术，其出现于上世纪60年代末，但由于市场的需求原因在90年代后期才开始发展。作为新一代数据库，Altibase产品已经走向混合型数据库，其版本Altibase 4.0已经有一套自带的磁盘数据库，用户一旦购买了Altibase的内存数据库，就无须再购买磁盘数据库。它把热数据（经常被使用的、访问比较高的、经常要运算的数据）放在内存数据库里，而把历史性数据放在磁盘数据库里，可为用户进一步减少投资。<br />对于内存数据库而言，可以将同样数据库的部分内容存放于磁盘上，而另一部分存放于内存中。用户可以选择将数据存储在内存表中以提供即时的数据访问。若访问时间不紧急或数据存于内存中所占空间过大时，用户可将这些数据存入磁盘表中。<br /><br />比如，<b>在手机用户开始拔打电话时，如果应用基于内存数据库技术的混合数据管理引擎，就通过内存表检索其服务选项并立即验证用户身份，而将通话清单和计费清单归档到磁盘表中</b>。从而，达到了速度与资源使用的平衡。<br /><br /><b>内存数据库的技术，一个很重要的特点，是可以对内存中的数据实现全事务处理</b>，这是仅仅把数据以数组等形式放在内存中完全不同的。并且，内存数据库是与应用无关的，显然这种体系结构具有其合理性。内存引擎可以实现查询与存档功能使用的是完全相同的数据库，同时内存表与磁盘表也使用的是完全相同的存取方法。存储的选择，对于应用开发者而言是完全透明的。<br /><br /><b>对于内存数据库而言，实现了数据在内存中的管理，而不仅仅是作为数据库的缓存</b>。不像其它将磁盘数据块缓存到主存中的数据库，内存数据库的内存引擎使用了为随机访问内存而特别设计的数据结构和算法，这种设计使其避免了因使用排序命令而经常破坏缓存数据库性能的问题。通过内存数据库，减少了磁盘I/O，能够达到了以磁盘I/O 为主的传统数据库无法与其相比拟的处理速度。<br /><br />因此，内存数据库技术的应用，可以大大提高数据库的速度，这对于需要高速反应的数据库应用，如电信、金融等提供了有力支撑。<br />（以上引自 <a href="http://hi.baidu.com/bluesky0205/blog/item/2dde5d08df57fe9f0b7b8258.html">http://hi.baidu.com/bluesky0205/blog/item/2dde5d08df57fe9f0b7b8258.html</a>）<br /><br />由于把大多数数据都放在内存中进行操作，使得内存数据库有着比磁盘数据库高得多的性能表现，这一特点非常契合电信企业运营支撑系统对实时性的要求。<br /><br />电信业的竞争正在全方位地展开，这种竞争必然带来新的价值链模式以及新的计费方式，这些变化对目前的电信运营支撑系统是一个挑战。比如，多种业务的计费环节将不再是单一的按照时长或通信距离收取费用，而可能是根据时长、内容、使用量等多种参数的组合计费。为了应对这些挑战，电信企业先后引入了内存数据库，以提高后台数据管理的实时性、精确性和灵活性。<br /><br />尽管内存数据库已不是传统磁盘数据库的概念，但是内存数据库本质上还是数据库，它也具有一般数据库的基本功能:<br /><br />■ 永久数据的管理，包括数据库的定义、存储、维护等;<br /><br />■ 完成各种数据操作，如查询处理、存取、完整性检查;<br /><br />■ 事务管理，包括调度与并发控制等;<br /><br />■ 对存取的控制和安全性检验;<br /><br />■ 具有数据库的可靠性恢复机制。<br /><br />相对于利用程序开发手段调用内存处理来说，内存数据库自有其优势。首先，内存数据库是产品化的数据库管理软件，极大缩短了开发周期; 其次，内存数据库有着开放的平台和接口，程序开发和移植更加灵活便捷，也便于维护和二次开发; 第三，可以通过使用统一的SQL语言方便地查询内存中的数据; 最后，能在数据库中保障数据的安全性和完整性。这些优势，对于快速部署和简化维护都是有利的。<br /><br />但<b>内存数据库也有其不可避免的缺点，比如: 不容易恢复，内存数据库中的数据不总是永久的，为了保证实时，也不一定是一致和绝对正确的，有的是短暂的，有的是暂时不一致或非绝对正确的</b>。<br /><br />电信企业一直是内存数据库的主要用户，近几年来，随着计算机硬件技术的飞速发展、内存容量的提高、价格下跌以及计算机进入64位时代操作系统后可以支持更大的地址，为内存数据库的实现提供了可能。目前内存数据库在电信行业的应用也日趋成熟，已有超过90G的电信系统案例，能自动扩展内存空间，不需要重启数据库，提供ESOL自定义存储过程，支持多线程，开发效率高，程序移植容易等等。<br /><br /><b>下面以两个例子来介绍内存数据库的应用</b>。<br /><ol><li><b>电信计费数据的加载</b></li></ol>电信的二次批价和实时累账是计费系统中的两个必备功能。<br />所谓二次批价是相对于一次批价来说的。<br />一次批价是按照国家标准资费来进行价格计算，比如: 全球通每分钟本地通话为0.4元，在一次批价完成后，会根据这个用户的套餐进行再一次的计算。以北京全球通用户接听4分钟的电话为例，一次批价完成后，这条话单的价格是1.6元，如果这个用户参加了10元包月接听套餐，那么在二次批价后，这次通话的费用就为0元。<br />一次批价是用于各大运营商之间结算的，而二次批价是针对用户个人的。<br /><br />实时累账是将用户从每月1号到目前为止的所有费用累加起来，也就是用户目前可以通过10086查到截止到前一天的实时话费。累账值可以帮助用户控制高额话费或是供用户即时查询消费信息。<br /><br />二次批价和实时累账过程涉及用户资料、用户套餐等与用户相关的信息，电信支撑系统在开始批价时必须加载这些数据。稍大一点的省级运营商的这些数据就会超过1000万条，计费处理模型也由于套餐的组合、产品的组合以及不同的优惠规则变得相当复杂，加载这部分数据对系统而言是一笔不小的开销，这就使得现在的计费处理速度比较慢，而且很难做到对数据的实时更新。内存数据库的引入在一定程度上解决了这个问题。<br /><br />在计费二次批价过程中数据量最大的是详单数据，这部分数据不用放在内存数据库中，每处理完一个话单文件或达到设定的提交记录数时直接操作磁盘数据库，不会影响系统性能。最急切的是将用户资料、套餐、营业套餐和计费套餐对应关系数据、计费套餐模型数据及用户累计数据放到内存数据库中，这部分数据查询操作远比数据新增和更新操作要频繁。除了这些数据外，当然还有应用需要的其他数据也都可以加载到内存数据库。<br /><br />在采用内存数据库后，<b>用户通过营业部或客户查询实时话费的时候完全可以做到实时，比目前只能提供查询到前一天的实时话费在业务上有了质的飞跃</b>。因为系统在处理这部分数据时查询流程和以前的完全一样，但系统省去了以往内存中的数据和磁盘数据库数据同步的环节，所以就能做到了实时查询。对于信控来说也同样，以往系统在累完账后要按照一定周期刷新信控数据，这就存在一个时间差，不能够完全做到实时。<br /><br />而采用内存数据库后，信控可以直接取得内存数据库中的实时话费累计表中的数据，完全实现实时预警、停机。二次批价和累账中采用内存数据库后，对防欺诈、收入保障系统也有相当大的好处，这样能够充分保证运营商的切身利益。<br /><br />另外，在采用内存数据库后，整体提高了系统批价、累账的处理速度，大大缓解访问磁盘数据库的压力，提高数据查询、修改、删除的效率，也为后付费和预付费的融合提供了可能。<br /><br /><b>电信计费数据的同步</b><br />电信营业数据和计费系统中的数据总是在不断的变化中，这就涉及内存数据库中的数据和磁盘数据库数据的同步问题（为了描述清楚，这里的磁盘数据库以Oracle DB为例来说明）。数据同步包括两部分: 从内存数据库到Oracle DB数据同步和从Oracle DB到内存数据库的同步。<br /><br />1. Oracle DB到内存数据库同步<br /><br />这部分数据同步采用增量表的方式，营业系统或CRM新增或更新的数据将生成到Oracle的增量表中，计费后台程序先到这些增量表中查询数据。如果能在这些增量表中查到数据就把这些数据更新到内存数据库对应表中，如果查不到，就直接从内存数据库中直接查询，从而保证了数据的完整性和实时性。由于增量表的数据量一般会很小，所以这部分操作不会影响系统的性能。<br /><br />2. 内存数据库到Oracle DB同步<br /><br />由于Oracle的计费后台批价、累账数据几乎都加载到了内存数据库中，所以Oracle数据库对应的数据表将主要用于对内存数据库的数据备份。<br /><br />用户最新的实时话费等信息都保存在内存数据库中，实时话费查询将直接连接到内存数据库中查询，保证用户得到最新的费用信息。信控也直接从内存数据库查询数据，因此对Oracle中的这部分数据已经没有实时性的要求。这时内存数据库到Oracle的同步可以由应用程序生成文件，定时地往Oracle数据库中同步备份，或者采用Oracle 存储过程在系统相对空闲时间段进行数据导入就可以了。<br /><br />总体而言，由于市场与技术的快速发展，电信业务在不断扩充，其运营和管理不断优化，传统的一些支撑系统的架构已经逐渐不能满足日益增长的业务要求和客户需求，引入一些新的技术来解决我们生产中遇到的问题是必然的。比如采用内存数据库来代替以前的共享内存技术，使得原来在内存中不标准的东西，包括接口、格式和管理都标准化了。<br /><br />内存数据库只是多种新技术中有代表性的一种而已，只要解放思想、选用得当，完全可以在投入不大的情况下克服系统中的瓶颈，以最小的代价获得最大回报。<br /><br />（以上内容引子： <a href="http://www2.ccw.com.cn/07/0712/b/0712b06_3.html">http://www2.ccw.com.cn/07/0712/b/0712b06_3.html</a> ）&nbsp; <br /><br />&nbsp;<br /><p>通用数据库大家见的多了，Oracle、Db2、Sqlserver、Sybase、Informix 
还有最近比较火的Mysql、和Pqllite，当然还不能忘记开源的PostgreSQL。通常情况下这些数据库可以承担重要业务，但是在要求高性能方面还是略有不足。在计费系统中如果用户信息常常改变的话延迟方面就会产生比较大的影响，甚至能影响到计费系统的正常运行。</p><br /><p>我接触到唯一的内存数据库就是<b>亚信在中移动计费中心稽核系统中使用的</b>。<b>由于稽核系统需要实施同步用户状态信息和订购信息，然后对产生的话单进行稽核，如果响应速度
较慢的话就会产生错误的结果。最初没有稽核系统的时候，计费的标准基本是sp发过来的，然而用户方面却经常发现自己没有实际使用或者已经取消这项业务的时
候，自己的帐单中仍然收取了费用，因此中移动决心要对sp的话单进行稽核，以自己的数据为标准，彻底剪断sp乱收费的手段</b>。</p><br /><p>如果要取到用户状态信息和订购信息的话就要从多个系统中同步过来，同时对话单进行稽核，中间的处理时间要求比较严格（用户可能会在短时间内检查自己的话费信息），对系统响应时间就要尽量短。</p><br /><p>通用数据库在这方面处于劣势。亚信就以三台rx8420作为数据库主机，将31个省用户的信息按照数量的多少分担到三台主机，每个省至少有一个入库进程，对于用户比较多的就采用多个进程进行入库。数据的采集来源主要是通过BOSS和计费的一级系统。</p><br /><p>由于数据是存储在内存中，所以存储的数据结构和通用数据库有所差异，同时为了保证数据的安全，在磁盘上有一个内存数据的镜像，每隔一定时间将内存中的数据同步到磁盘上，当主机故障时可以通过磁盘恢复数据。当主机故障时，会有备用主机通过HA接管。但是对于数据操作的日志和回滚就没有Oracle做的好了，只提供了简单的恢复机制。</p><br /><p>在计费系统中首先要对sp发来的话单进行稽核，主要标准是用户状态和订购信息。例如<b>用户最近7天一直处于关机状态，如果sp的话单中出现新的订购信息就将此条话单作为错单处理</b>。移动通过这种方式在和sp的博弈中取得主动。稽核系统上线后用户对于sp的投诉问题明显减少。</p>（以上内容引子： <a href="http://flying-madman.blogspot.com/2007/10/blog-post.html">http://flying-madman.blogspot.com/2007/10/blog-post.html</a> ）<br /><strong><span style="font-family: Courier New;"><br /></span></strong><p class="a14"><b>链接一:内存数据库与传统数据库的异同
</b></p><p class="a14">传统的数据库系统是关系型数据库，开发这种数据库的目的，是处理永久、稳定的数据。关系数据库强调维护数据的完整性、一致性，但很难顾及有关数据及其处理的定时限制，不能满足工业生产管理实时应用的需要，因为实时事务要求系统能较准确地预报事务的运行时间。
</p><p class="a14">对磁盘数据库而言，由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间
与估算的最坏情况执行时间相差很大，如果将整个数据库或其主要的"工作"部分放入内存，使每个事务在执行过程中没有I/O，则为系统较准确估算和安排事务
的运行时间，使之具有较好的动态可预报性提供了有力的支持，同时也为实现事务的定时限制打下了基础。这就是内存数据库出现的主要原因。
</p><p class="a14">内存数据库所处理的数据通常是"短暂"的，即有一定的有效时间，过时则有新的数据产生，而当前的决策推导变成无
效。所以，实际应用中采用内存数据库来处理实时性强的业务逻辑处理数据。而传统数据库旨在处理永久、稳定的数据，其性能目标是高的系统吞吐量和低的代价，
处理数据的实时性就要考虑的相对少一些。实际应用中利用传统数据库这一特性存放相对实时性要求不高的数据。
</p><p class="a14">在实际应用中这两种数据库常常结合使用，而不是以内存数据库替代传统数据库。 <br /></p><p class="a14"><br /></p><p class="a14"><b>链接二:几款内存数据库产品
</b></p><p class="a14">■ Oracle TimesTen  
</p><p class="a14">Oracle 
TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库，它为应用程序提供了实时企业和行业（例如电信、资本市场和国防）
所需的即时响应性和非常高的吞吐量。Oracle TimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中，它利用标准的 SQL 
接口对完全位于物理内存中的数据存储区进行操作。
</p><p class="a14">■ Altibase
</p><p class="a14">Altibase是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。它提供高性能、容错能力和事务管
理能力，特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。Altibase能够最大限度地发挥数据库服务系统的潜力，增强数据服务器的处理
能力。Altibase支持客户端/服务器架构或嵌入式架构。其中客户端/服务器架构非常适合一般的应用。而嵌入式架构将应用程序嵌入到数据库服务器，适
合于有高时效要求的实时系统。
</p><p class="a14">■ eXtremeDB  
</p><p class="a14">eXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库，只有
50K到130K的开销，速度达到微秒级。eXtremeDB完全驻留在主内存中，不使用文件系统（包括内存盘）。eXtremeDB采用了新的磁盘融合
技术，将内存拓展到磁盘，将磁盘当做虚拟内存来用，实时性能保持微秒级的同时，数据管理量在32BIT下能达到20G。 <br /></p><p class="a14"><br /></p> ]]>
        
    </content>
</entry>

<entry>
    <title>ACOUG - 2011 Oracle技术嘉年华圆满落幕</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/10/acoug_2011_oracle.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2886</id>

    <published>2011-10-30T13:37:54Z</published>
    <updated>2011-10-30T13:39:45Z</updated>

    <summary>&quot;Oracle技术嘉年华&quot;是由ACOUG发起并联合云和恩墨、ITPUB、IT168共同举办的一次数据库界的顶尖盛会。大会持续2天时间，共计28个主题演讲，邀请到24位中外嘉宾，其中有9位ACE总监（全球仅93位），1位ACE，1为Java Champion，另有多位国内知名专家及Oracle公司高级经理、架构师，阵容十分强大。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[<p>"<a href="http://www.acoug.org/events/229.html">Oracle技术嘉年华(OTN China Tour 2011)</a>"大会于2011年10月21日于北京国宾酒店圆满落幕！<br />
</p><p>"Oracle技术嘉年华"是由ACOUG发起并联合云和恩墨、ITPUB、IT168共同举办的一次数据库界的顶尖盛会。大会持续2天时间，共计28个
主题演讲，邀请到24位中外嘉宾，其中有9位ACE总监（全球仅93位），1位ACE，1为Java 
Champion，另有多位国内知名专家及Oracle公司高级经理、架构师，阵容十分强大。<br />
会场内座无虚席<br />
<img alt="" src="http://ww4.sinaimg.cn/mw600/8199ccf7jw1dmihnn9gzhj.jpg" title="会场 conference hall 1" class="alignnone" height="399" width="600" /><br />
ACOUG发起人之一盖国强先生发表题为《创新开放集成-数据库技术的未来》的演讲<br />
<img alt="" src="http://file.itpub.net/forum/201110/26/17025023kej7e57ziw6vok.jpg" title="盖国强 - 创新开放集成-数据库技术的未来" class="alignnone" height="399" width="600" /><br />
Oracle大中华区高级经理韩鄂春（Jack.Han）先生介绍Oracle ACE项目<br />
<img alt="" src="http://file.itpub.net/forum/201110/26/1702512r4rzr9j74tpn9pr.jpg" title="Jack Han介绍ACE项目" class="alignnone" height="399" width="600" /><br />
Dell公司Oracle实验室Kai YU在主会场发表演讲<br />
<img alt="" src="http://ww2.sinaimg.cn/mw600/8199ccf7jw1dmihnal2dfj.jpg" title="Kai YU " class="alignnone" height="399" width="600" /><br />
阿里巴巴运维部DBA，数据架构师张瑞先生发表演讲 - 《软硬件结合数据库解决方案》<br />
<img alt="" src="http://ww3.sinaimg.cn/mw600/8199ccf7jw1dmihrs47n5j.jpg" title="Jacky 张" class="alignnone" height="399" width="600" /><br />
oracle-base创始人Tim Hall先生演讲 - Clonedb The quick and easy cloning solution you never knew you had<br />
<img alt="" src="http://ww3.sinaimg.cn/mw600/8199ccf7jw1dmihpwlm57j.jpg" title="Tim Hall" class="alignnone" height="399" width="600" /></p>
<p>由于版面限制，我们把更多的内容传到了以下地址，欢迎大家下载：<br />
嘉宾PPT<br />
1、注册新浪微博，关注http://weibo.com/acoug 。我们已将全部的PPT上传至新浪微盘中，您可以分开或整体下载<br />
2、通过<a href="http://www.box.net/shared/kr51ck04jhbgjivp4vzv" title="box - ACOUG" target="_blank">http://www.box.net/shared/kr51ck04jhbgjivp4vzv</a> 逐个下载<br />
3、通过ITPUB<a href="http://www.itpub.net/thread-1504954-1-1.html" title="ITPUB" target="_blank">下载</a><br />
活动照片<br />
1、注册新浪微博，关注http://weibo.com/acoug 。我们已将全部的照片上传至新浪相册中<br />
2、可通过Google picasa网络相册<a href="https://picasaweb.google.com/113105509178594896082/OracleOTNChinaTour" title="OTN China Tour Pics" target="_blank">查看并下载</a>（由于众所周知的原因，访问速度较慢。如果您知道其他储存照片的网络位置，请邮件告知管理员admin#acoug.org，非常感谢！）</p>
<p>我们还要感谢本次活动的赞助商：<br />
云和恩墨<br />
<a href="http://www.acoug.org/wp-content/uploads/2011/10/logo%E5%A4%A7.jpg"><img src="http://www.acoug.org/wp-content/uploads/2011/10/logo%E5%A4%A7-300x51.jpg" alt="" title="YUNHE Tech" class="alignnone size-medium wp-image-230" height="34" width="200" /></a></p>
<p><a href="http://www.en-core.com/">韩国恩核（EN-CORE）公司</a><br />
<a href="http://www.acoug.org/wp-content/uploads/2011/10/logo.jpg"><img src="http://www.acoug.org/wp-content/uploads/2011/10/logo-300x194.jpg" alt="" title="en-core" class="alignnone size-medium wp-image-233" height="129" width="200" /></a></p>
<p><a href="http://precise.com/" title="precise">Precise</a><br />
<a href="http://www.acoug.org/wp-content/uploads/2011/10/PreciseLogo1797_TAG1-1.jpg"><img src="http://www.acoug.org/wp-content/uploads/2011/10/PreciseLogo1797_TAG1-1-300x49.jpg" alt="" title="PreciseLogo" class="alignnone size-medium wp-image-231" height="33" width="200" /></a></p>
<p><a href="http://www.dameng.com/dmweb/">达梦数据库</a><br />
<a href="http://www.acoug.org/wp-content/uploads/2011/10/dmlogo%EF%BC%88%E5%80%92%E5%BD%B1%EF%BC%89-1.jpg"><img src="http://www.acoug.org/wp-content/uploads/2011/10/dmlogo%EF%BC%88%E5%80%92%E5%BD%B1%EF%BC%89-1-300x149.jpg" alt="" title="dmlogo" class="alignnone size-medium wp-image-232" height="100" width="200" /></a></p>
<p>感谢各赞助商对活动的大力支持与赞助！</p>
<p>感谢各位嘉宾不辞辛劳，为我们分享他们在各自领域的心得及经验！<br />
感谢各位朋友能够抽出宝贵的时间参加会议，你们的参加让我们更有动力组织更多的分享活动！</p><p><br /></p> ]]>
        
    </content>
</entry>

<entry>
    <title>Oracle ODI 与 OWB 数据集成产品简介</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/10/oracle_odi_owb.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2880</id>

    <published>2011-10-29T15:07:45Z</published>
    <updated>2011-10-29T15:15:41Z</updated>

    <summary>ODI(Oracle Data Integrator)是Oracle在2006年10月收购Sunopsis公司后，整合Sunopsis Active Integration Platform而推出的一款数据集成工具，现在是Oracle Fusion Middleware的组件。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[<img alt="ODI.gif" src="http://www.eygle.com/digest/images/ODI.gif" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" height="73" width="218" /> <div><p>引用来源：<a href="http://www.ningoo.net/html/2007/an_introduction_of_oracle_data_integrator.html">http://www.ningoo.net/html/2007/an_introduction_of_oracle_data_integrator.html</a><br /></p><p>ODI(Oracle Data Integrator)是Oracle在2006年10月收购Sunopsis公司后，整合Sunopsis 
Active Integration Platform而推出的一款数据集成工具，现在是Oracle Fusion 
Middleware的组件。</p><p>和Oracle自己的OWB(Oracle Warehouse 
Build)相比，ODI支持更多的异构数据源，支持SOA，支持Jython，和OWB正好互补。ODI和OWB都是所谓的ELT工具，和通常所见的
ETL工具不同，它们不是采用独立的引擎而是采用RDBMS进行数据转换。做为领先的RDBMS供应商，Oracle选择ELT而不是ETL不是没有道理
的。</p>
ODI的主要组件包括模块知识库，图形模块和执行引擎，都是基于java编写，所以运行ODI需要有JDK的支持。另外还有一个基于J2EE的元数据导航器(Metadata Navigator)。<br /><br />Oracle的OWB(Warehouse Builder)和ODI（Data Integrator）都是使用E-LT的理念设计出来的数据抽取/数据转换工具，他们本身都可以作为一个ETL工具使用但是也有不同的特点，本文主要讨论他们之间的差异和关系。<br /><br />ODI和OWB：<a href="http://www.cnblogs.com/yonsin/archive/2009/08/23/1552282.html">http://www.cnblogs.com/yonsin/archive/2009/08/23/1552282.html</a><br />ODI和OWB是互为补充的，ODI有四个地方是对OWB的很好的补充：<br />1. 对于需要异构数据支持：当数据源或者目的不是Oracle数据库，ODI能够生成针对那个数据源的native的SQL操纵语句。<br />2.
 
对于需要实时数据集成的环境：ODI能够检测事件，一个事件可以触发ODI的一个接口流程。从而完成近实时的数据集成。下图是ODI提供的一些检测事件的
工具，可以用在package里（ODI 
workflow的代名词）如OdiFileWait是等待文件到达，OdiSleep类似于许多系统里的Sleep等待轮
询，OdiWaitForLogData则可以用于捕获增量数据的捕获的事件。这里的组件都是实现实时数据集成的关键部分。<br />3. 在数据抽取集成过程中需要和SOA集成，ODI本身提供了call web service的机制，并且ODI的接口也可以暴露为webService，从而可以和SOA环境进行交互。<br />4. 一致的CDC(Change Data Capture)支持，不同的数据源（Oracle，DB2等）对于变化数据获取都提供了不一样的技术框架，ODI把这些不同的技术框架屏蔽了，以一个统一的接口方式提供统一的CDC的设置框架，并提供订阅者的功能。<br /><br />而OWB相比于ODI也有自己的很多特点：<br />1. 丰富的Oracle数据运算符，能够提供Oracle数据库之间的高速转换抽取。<br />2. 从11g开始，OWB会作为Oracle的标准选件来提供，OWB本身会通过Oracle数据库的安装盘来安装，和所有的其他Oracle选项一样，都会和数据库核心紧密集成。<br />3. 数据质量管理：OWB的data profiling是一个相当强的数据质量管理工具，原理和流程是 数据采样-》分析采用数据的错误和规则-》生成纠正采样数据的mapping流程-》验证流程-》把流程应用到所有的数据上的循环。<br /><br />小结<br />OWB
本身除了运行需要较多的资源之外，本身是一个设计得相当好的工具（身边一些用过的人都评价还是很不错呀！），对于Oracle数据之间的抽取转换的功能完
全不是任何别的工具可以比的，当然OWB的主要不足都体现在ODI里了，所以，OWB和ODI是完全互相补充的工具，如果是要同时在建设一个数据中心的项
目里使用这两个工具的话，可以使用ODI来完成从异构数据源到staging 
Oracle数据的生成，或者用ODI完成需要实时数据同步的工作，而OWB可以用于从staging 
Oracle数据到Oracle数据仓库的Oracle数据源之间的工作，这样应该是最完美的设计。当然单独用OWB或ODI其实都可以完成这些工作，只
不过这两个工具合并起来用，应该是一个大型数据仓库项目的非常好的方式。<br /><br /><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>心灵世界:《约翰·克利斯朵夫》-王安忆复旦讲课</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/10/Romain_Rolland.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2879</id>

    <published>2011-10-28T02:44:56Z</published>
    <updated>2011-10-29T02:51:29Z</updated>

    <summary>原文出处：http://www.eyjx.com/eyjx/1/ReadNews.asp?NewsID=2305录自《心灵世界--王安忆小说讲稿》----以作家的创作实践论述现代小说的艺术。 第七章 克利斯朵夫是3世纪的一位著名的圣者，传说他身材高大，专门背人过河。 约翰·克利斯朵夫经过本能，理性，以及本能与理性融合这三个成长阶段，从黑暗混沌走向光明混沌。 他终于和圣者克利斯朵夫合而为一了。 我们现在开始讲《约翰·克利斯朵夫》。这个作品非常长，有四部。有趣的是，我了解到，在法国文学界对这部作品的评价不是很高，对罗曼·罗兰 （1866--1944）这个作家的评价也不是很高。但是这部由傅雷先生翻译的作品，在中国的影响非常巨大。有人说，中国的《约翰·克利斯朵夫》是傅雷 &quot;写&quot;的《约翰·克利斯朵夫》。因为我们无法去看原文，我们不知道问题出在什么地方。语言的鸿沟是难以逾越的。比如，福楼拜在法国文学史的地位非常高，可 是由于文字的隔阂，我看福楼拜的东西怎么也领会不到那种精致的语言上的魅力。因此翻译的作用是很大的。所以我今天不去谈罗曼·罗兰，就谈现在的中译本《约翰·克利斯朵夫》。 这本书我准备分四步来说。第一步是为《约翰·克利斯朵夫》的心灵世界命名。第二步简要描述一下故事的内容。第三步详细地分析这个心灵世界。第四 步是要解决那个关系问题。以前我们的提问是，现实世界和心灵世界的关系是什么。在这部作品里，我要换一种提问方式，就是一部真正的传记和这部虚拟的传记的 区别在什么地方。很多人都说这部作品是为贝多芬作传，随后便以传记的眼光去看它。我就想告诉大家它和真正的传记的区别在什么地方，这个区别就是我一直强调 的现实世界和心灵世界的关系。 第一步是为它命名。我用一个很现成的名字，就是&quot;一个天才的世界&quot;.第二步是简述这故事的内容，即这个天才走过的成长道路。用一句话概括，就是 从混沌走向混沌。他是从混沌出发，那就是一个婴儿刚刚睁开眼睛的时候，这世界是黑暗的，蒙昧的，在他眼睛里全是一些光影，光刺激他的眼睛，影子是很神秘 的。他又听到钟声，他觉得钟声里包含了很多内容，可他一点也不了解。他觉得世界是一团雾。当他走到生命的终点，他看到爱和恨，朋友和敌人，天和地，将来和 过去，全部又融为一体，又成为一个混沌。这个混沌就是永恒。听起来很像是中国哲学的天人合一的境界，可是这里面有根本的区别。这个境界在中国哲学里是靠顿 悟来发现的，而无论发现不发现，它总是存在的，是永存的现实。而在约翰·克利斯朵夫是怎样达到的呢？他是经过行动，一口气都不停的行动，倘若他有一片刻软 弱下来，他就达不到这个混沌一体的世界，这是个终极世界。于是，混沌到混沌之间便充满了奋斗。 第三步将是个漫长的过程，我将要详细分析这个天才世界的形成。他经历了三个阶段。第一个是生理、心理的成长阶段，我把它看作是一个物质性质的成 长阶段，就像是一个盛器、一个碗，它做好了。它是怎么样铸造成功的呢？全书分为十卷，我以为前三卷是写这一过程。我再给它一个命名，就是本能的形成。这个 孩子出生在莱茵河边的一个历史久远的小城，从他的祖父开始就是宫廷里的乐师。他的祖父是个善良的老人，他应该说是有天才的，可是他的天才像光一样，一闪即 逝，他没有能力把这些闪烁的灵感连接成章。天才的灵感在他身上就像周期出现的病症，折磨他，他想抓总是抓不住，他内心很痛苦，可是他是真的明白什么是好， 什么是不好。他的父亲和他的祖父正好相反，是一个很有生命力的人，可是他的生命力却很盲目，所以他呈现出的是疯狂的状态。在他那种蓬勃的热情一涌而上的时 候，他爱上了一个厨娘，违背他家庭的心意娶了这个厨娘，生下了克利斯朵夫和他的两个兄弟。可当他们真正结合以后，他却把他的爱情忘记掉了，好在他心地还是 善良的，因此他对这个家庭也还不坏。克利斯朵夫就生长在这样一个血缘之下。这个血缘第一是有生命力的，第二是有天才的，可是这两者在此之前始终不能在一个 人身上完满的结合，始终没有获得结合的契机。我们中国有句话叫水到渠成，而他们好像总是水不到渠不成，就差那么一点火候。但是克利斯朵夫生下来了，等待他 的是怎样的命运，我们都不知道。...</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="精品美文" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="person" label="Person" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[原文出处：<a href="http://www.eyjx.com/eyjx/1/ReadNews.asp?NewsID=2305">http://www.eyjx.com/eyjx/1/ReadNews.asp?NewsID=2305</a><br /><br /><font class="news"><p align="center">录自《心灵世界--王安忆小说讲稿》----以作家的创作实践论述现代小说的艺术。</p>
<p align="center">第七章</p>
<p>　　克利斯朵夫是3世纪的一位著名的圣者，传说他身材高大，专门背人过河。</p>
<p>　　约翰·克利斯朵夫经过本能，理性，以及本能与理性融合这三个成长阶段，从黑暗混沌走向光明混沌。</p>
<p>　　他终于和圣者克利斯朵夫合而为一了。</p>
<p>　　我们现在开始讲《约翰·克利斯朵夫》。这个作品非常长，有四部。有趣的是，我了解到，在法国文学界对这部作品的评价不是很高，对罗曼·罗兰
（1866--1944）这个作家的评价也不是很高。但是这部由傅雷先生翻译的作品，在中国的影响非常巨大。有人说，中国的《约翰·克利斯朵夫》是傅雷
"写"的《约翰·克利斯朵夫》。因为我们无法去看原文，我们不知道问题出在什么地方。语言的鸿沟是难以逾越的。比如，福楼拜在法国文学史的地位非常高，可
是由于文字的隔阂，我看福楼拜的东西怎么也领会不到那种精致的语言上的魅力。因此翻译的作用是很大的。所以我今天不去谈罗曼·罗兰，就谈现在的中译本《约翰·克利斯朵夫》。</p>
<p>　　这本书我准备分四步来说。第一步是为《约翰·克利斯朵夫》的心灵世界命名。第二步简要描述一下故事的内容。第三步详细地分析这个心灵世界。第四
步是要解决那个关系问题。以前我们的提问是，现实世界和心灵世界的关系是什么。在这部作品里，我要换一种提问方式，就是一部真正的传记和这部虚拟的传记的
区别在什么地方。很多人都说这部作品是为贝多芬作传，随后便以传记的眼光去看它。我就想告诉大家它和真正的传记的区别在什么地方，这个区别就是我一直强调
的现实世界和心灵世界的关系。</p>
<p>　　第一步是为它命名。我用一个很现成的名字，就是"一个天才的世界".第二步是简述这故事的内容，即这个天才走过的成长道路。用一句话概括，就是
从混沌走向混沌。他是从混沌出发，那就是一个婴儿刚刚睁开眼睛的时候，这世界是黑暗的，蒙昧的，在他眼睛里全是一些光影，光刺激他的眼睛，影子是很神秘
的。他又听到钟声，他觉得钟声里包含了很多内容，可他一点也不了解。他觉得世界是一团雾。当他走到生命的终点，他看到爱和恨，朋友和敌人，天和地，将来和
过去，全部又融为一体，又成为一个混沌。这个混沌就是永恒。听起来很像是中国哲学的天人合一的境界，可是这里面有根本的区别。这个境界在中国哲学里是靠顿
悟来发现的，而无论发现不发现，它总是存在的，是永存的现实。而在约翰·克利斯朵夫是怎样达到的呢？他是经过行动，一口气都不停的行动，倘若他有一片刻软
弱下来，他就达不到这个混沌一体的世界，这是个终极世界。于是，混沌到混沌之间便充满了奋斗。</p>
<p>　　第三步将是个漫长的过程，我将要详细分析这个天才世界的形成。他经历了三个阶段。第一个是生理、心理的成长阶段，我把它看作是一个物质性质的成
长阶段，就像是一个盛器、一个碗，它做好了。它是怎么样铸造成功的呢？全书分为十卷，我以为前三卷是写这一过程。我再给它一个命名，就是本能的形成。这个
孩子出生在莱茵河边的一个历史久远的小城，从他的祖父开始就是宫廷里的乐师。他的祖父是个善良的老人，他应该说是有天才的，可是他的天才像光一样，一闪即
逝，他没有能力把这些闪烁的灵感连接成章。天才的灵感在他身上就像周期出现的病症，折磨他，他想抓总是抓不住，他内心很痛苦，可是他是真的明白什么是好，
什么是不好。他的父亲和他的祖父正好相反，是一个很有生命力的人，可是他的生命力却很盲目，所以他呈现出的是疯狂的状态。在他那种蓬勃的热情一涌而上的时
候，他爱上了一个厨娘，违背他家庭的心意娶了这个厨娘，生下了克利斯朵夫和他的两个兄弟。可当他们真正结合以后，他却把他的爱情忘记掉了，好在他心地还是
善良的，因此他对这个家庭也还不坏。克利斯朵夫就生长在这样一个血缘之下。这个血缘第一是有生命力的，第二是有天才的，可是这两者在此之前始终不能在一个
人身上完满的结合，始终没有获得结合的契机。我们中国有句话叫水到渠成，而他们好像总是水不到渠不成，就差那么一点火候。但是克利斯朵夫生下来了，等待他
的是怎样的命运，我们都不知道。</p><br /></font> ]]>
        <![CDATA[<p>　　他睁开了眼睛，听到了莱茵河边教堂的钟声，那一团浑浑浊浊的光和影逐渐清晰，他慢慢地醒过来，看见了一个和谐的世界。但这和谐很快破裂了，他遭
到了第一次打击。一个孩子总是非常自然的感觉到他的家庭是合理的，他的爸爸妈妈是受人尊敬的，当他有一次穿着母亲给他做的整齐的衣服，到母亲工作的地方去
看他母亲，他发现他母亲只是在厨房里工作，恭恭敬敬地听主人使唤。那个主人让克利斯朵夫和他们家的孩子去玩，那家的孩子一眼就指出克利斯朵夫身上的衣服是
他穿旧的衣服，他和这些孩子起冲突的时候，他母亲又当着众人的面揍他，让他认错。这一切给了他非常大的打击，他认识到世界的不公平，认识到父母的软弱，认
识到自己的不幸。在这个和谐的世界在他面前开始破裂的同时，有一样东西也为安慰他而降临了，那就是音乐。他们家有一架钢琴，他有一天很偶然地，手触摸到了
琴键，他听到了琴键发出的声音，感到非常的喜悦，感到很宁静。这些声音是断断续续的，不成章，不成句的，使他感觉到神秘，觉得这不是人间的声音。当他在摆
弄钢琴的时候，他父亲的热情又上来了，他想我可以把这个孩子培养成一个神童，让他去为家族争得荣誉。于是就开始训练他弹钢琴。一旦进入训练，克利斯朵夫便
觉得他那个音乐的世界破灭了。他不知道他每天坐在那儿是干什么，可在他父亲的拳棒之下，他必须要这么做，练音阶，练琶音，练练习曲，这一切的训练都非常枯
燥乏味，将他所领略的来自天国的声音消灭掉了。但此时有一件事情，是助他承受了枯燥的训练。他时常到祖父家去，总喜欢一边玩一边瞎哼哼，有时候会发现祖父
在门外偷听，他没有在意，可是有一天祖父把他带到钢琴旁边，给他一份乐谱，说："克利斯朵夫，你弹一弹上面的曲子。"他就开始弹，弹出以后他发现这个乐曲
非常熟悉，可是他实在想不出在哪听到过，就问这是谁的曲子。祖父说克利斯朵夫，这就是你写的，当你在玩的时候，哼的时候我就把它记录了下来。祖父很伤感地
说，这些东西我追求了一辈子都没有得到，你会成为一个非常伟大的人，成为一个神童。于是克利斯朵夫沉浸到一种极大的虚荣心里去，他练琴就有了目的，他的祖
父和父亲开始策划在宫廷里召开他的作品独奏会。可是他的天性是完全不受束缚的，他有着不被自己所知觉的对音乐的理解，所以勤奋的练琴又不时被他内心的反抗
而扰乱。经历了很多乱七八糟的挣扎、哭泣、吵闹，音乐会上演了，结果虽然扫兴，可他确实成了这个小城有名的神童。</p>
<p>　　我以为在这时候，他经历了两件足以影响他的事情。第一件事是祖父带他去听大歌剧，一开始他很为那些女演员和布景分心，但慢慢他开始沉浸到音乐里
去了，觉得非常兴奋，激动。祖孙两人非常满足地走在回家的路上，他祖父告诉他这个歌剧的作者是某某人，他一听就大吃一惊，他说这难道是人写出来的吗？我曾
经碰到一个景颇族的孩子，他给我讲他的故事，读中学的时候住在镇上，在一个棺材店里寄宿，每天晚上有个汉族的老师给他们讲故事，他们就坐在棺材板上听，有
一天老师说现在我给你们讲曹雪芹写的《红楼梦》，这个孩子一下子跳起来了，大声问道书是人写的吗？这其实是一个非常动人的蒙昧时期，以为一切存在都是神圣
无上，都是神制造的，从来也没想到人也有机会，也有可能，也有使命承担神的义务。爷爷所说的这个简单的事实使克利斯朵夫感到有一天也会轮到他去做神明而造
物。这是一件于他很重要的事情。</p>
<p>　　第二件重要事情是由于他的舅舅，一个四海为家的小贩，有时会到他们家里小住几天。他们全家除了他母亲都是自视很高的人，父子们都以耍弄舅舅为乐
事。这个舅舅却以非常安详的态度来面对这一切，从来也不生气，只是默默地坐在一边，怀着一种冥冥之中和谁在对话的表情。有一天克利斯朵夫胡闹够了，就开始
卖弄地大声唱他的那些曲子，舅舅静静地听完之后说，可怜的克利斯朵夫，这真是难听啊。他很不服气，又唱另一首更好的，舅舅说这个更难听。舅舅看着他沮丧的
样子，怜悯地问，可怜的克利斯朵夫，为什么要写这样的东西，谁逼着你去写呢？他回答说因为我想成为一个伟大的人。他舅舅又问为什么要成为一个伟大的人呢？
他说因为我要写好听的东西。他舅舅就说，你这样就像一条追着自己尾巴跑的小狗。这使他想起了他最初在钢琴上按下琴键时候的声音，音乐是这样的，而现在的情
况却是那样的。这两件事情都是在帮助他调整他与音乐的关系，为他的成长奠下基础。</p>
<p>　　他慢慢长大，祖父死了，母亲非常善良，可是她的智商和才能只是一个厨娘，父亲酗酒更加厉害，越来越没理智，两个弟弟都是坏孩子，和他没有话说。
他在这个家庭里非常孤独。而他这样小小年纪也到宫廷里做了一个提琴手，为了能够挣点钱养活撑持这个家庭。他的童年进入了这么一个惨淡的时期。但是他所继承
的血缘是强壮旺盛的，他身体非常棒，经得起折磨，而且非常怕死，渴望生活，所以这一切都不会妨碍他健康地成长，长成一个强壮的孩子。然后，恋爱的时期到
了。</p>
<p>　　他的恋爱走过漫长的道路。首先是一次预演。他有一次去参加一个亲王的Party，在渡船上遇到一个男孩子，名叫奥多。奥多出生在一个中产阶级家
庭，他认出了克利斯朵夫，因为他已经是一个小名人了。克利斯朵夫生来缺少朋友，一下子遇见一个男孩子，而且是个干干净净有礼貌的男孩子，对他那么巴结，自
然非常激动。这两个孩子就开始了比爱情还要热烈的友谊。他们俩在同一个城市里，可是还要互相写信，他们信上写的话比情话还要情话，他们互相称呼对方"我的
灵魂"、"我的我"，说"你来杀我吧，你把我杀死了，我的灵魂还留出一线光明来爱你".因为他们俩的纯洁，这些过火的表达却也并不显得肉麻。其实他们完全
是两种人，只是在这共同的年龄里有一种共同的感情需要，这份需要把他们的眼睛全都蒙住了。他们的关系最终是被克利斯朵夫的两个弟弟破坏的。这是两个很庸
俗，很卑鄙的小子，偷看了他俩的情书，嘲笑他、讽刺他，把他哥哥的这种感情说得非常污浊。克利斯朵夫天性是有洁癖的，他绝不能容忍这种污辱，所以就和奥多
断了关系，这是一次热烈的友谊，其实也是一次爱情的前奏。</p>
<p>　　接着，他得到一次爱情的操练，就是他的初恋。他们家附近的空院子里，有一天搬进了一对贵族母女，母亲是一个寡妇，女儿叫弥娜，和克利斯朵夫一般
大，那位母亲请克利斯朵夫给她女儿做钢琴教师。这个女孩子很骄横，也很无聊，但她也很可爱、娇嫩，喜欢做媚眼，好像为她将来走进社交圈作准备，这些媚眼落
在克利斯朵夫身上自然是产生一些影响了。有一次克利斯朵夫给她上课时情不自禁地在她手背上吻了一下，从此以后，这个女孩子就等着克利斯朵夫再来吻她一下手
背。克利斯朵夫可是吓坏了，再也不敢了，这女孩子就非常勇敢地把她的手背贴到他嘴唇上。他们就这样爱上了，非常热烈。这是一次很正式，也很完整的爱情，从
热恋开始，以失恋告终。弥娜的母亲非常冷静地观察着事态的发展，并不横加指责，但是以一种极度的礼貌，使他清楚认识到自己的卑微地位，因此他们的爱情只是
游戏，是玩笑。这种态度对克利斯朵夫的刺激是很强烈的。他的第一次爱情遭到失败，同时他的父亲又死了，双重打击之下他不禁陷入迷茫。在他陷入迷茫中是谁来
救他呢？还是他的舅舅，他的舅舅就像承担了一个先知的使命。这时他是来告诉克利斯朵夫你的责任还没完成，你必须要生活下去，你还不能垮下来。克利斯朵夫心
里的力量是很强的，他不会垮下来的，但必须有人不断提醒他，才能使他清醒。因此他又把这个难关咬着牙挺过来了。</p>
<p>　　建构他身心的硬件部分还有两个任务没有完成。一个任务是宗教。克利斯朵夫是一个虔诚的教徒，只是他自己并无意识，因为这于他是件再自然不过的事
情。父亲死了以后，他们家境一下子衰落得很厉害。两个弟弟都跑了，一个跟着亲戚去学做生意，另一个不知去哪里浪荡了，只剩下他和母亲两个人，又孤独，又伤
心。他们离开了老房子，搬到一个比较小的房子里去，房东姓于莱。和于莱这一家作邻居，使他进入了这个小城的贫民生活。在这些底层的生活里，他开始去想宗教
是怎么回事。于莱这一家人的特点就是吵闹，每天天一亮就听到他们吵闹的声音，好像他们有着很重大的人生任务。实际上他们的人生任务只不过是要把地板擦一
擦，可是却喧哗得不得了。他常常想他们为什么而生存。于莱家里有一个男孩子，长得非常清秀，很孱弱，很安静，是一个在神学院学习的学生。克利斯朵夫就对这
个孩子感到很奇怪，在这么一个嘈杂的，充满了俗世的繁琐事务的人生里，有一个人在潜心学习宗教，必定是这个宗教给予了他什么指示，使他来承受这种生活。有
一天晚上他就和这个男孩子作了一次非常恳切的促膝谈心。这个男孩子看到克利斯朵夫平时这么骄傲，傲慢，这时却愿意和他说话，感到很高兴，也就滔滔不绝，很
愿意说话。一上来他就说"太吵了"，这句话真说到克利斯朵夫心里去了，他已经被这家人吵得没有办法了，听到他们自己家里人能说出这句话来，觉得真是找到知
音了。接着他就问男孩是怎么来看待宗教、上帝的，这个男孩子就向他叙述了上帝给他的东西。上帝给他一个安宁的世界。因为这个世界太嘈杂，太没有秩序，太乱
了，而上帝使他到达一个很和谐，很美丽，很有秩序的天地里去。克利斯朵夫感到非常失望，他想这算什么宗教？这个宗教那么软弱，甚至于比于莱一家的生活更软
弱。他觉得这个男孩所要藏身的和谐的世界甚至比嘈杂的世界更没生命力。他觉得如果宗教是这样的话我就不信上帝了。这完全是一种逃避。他让男孩子叙述他在那
个宗教世界里看到的景色，他看到的都是很虚幻的景象，看到云端，看到一片祥和。克利斯朵夫绝对不是一个虚无主义者，当他从混沌走向混沌，也可以说是从虚无
走向虚无，在此过程中他要求非常严格，绝对不允许有一点可以含糊过去的说法，须是实打实的，看得见，摸得着。所以，这个男孩子的宗教绝对不是克利斯朵夫能
认同的。男孩的宗教完全不足以抵抗人生，因为人生的压力是很沉重的，而他这个上帝太软弱了，所以克利斯朵夫要找一个更强大的上帝。但这时候他不知道他的上
帝在哪里，所以他唯一能做的就是把这个上帝扔掉，抛弃掉。这是他在宗教上的建设，它是以一种丧失的形式出现的。</p>
<p>　　身心建设的最后一项任务是欲念。这个欲念任务是由两个女人来帮他完成的。第一个叫萨皮娜，是一个有夫之妇，开了一个小杂货店，卖卖钮扣，针头线
脑。小杂货店正对着他的窗口。这个女人具有一种典型的女性气质--那就是懒。她就像一只猫一样老是在睡着，从来没看她把衣服穿整齐的时候，任何一件衣服在
她身上都像是一件睡衣。老是见她在那儿梳头，可是从来也没有把头发梳好过。别人来买扣子，因为放在高架上她就回答别人说没有。就是这样一个非常慵懒的形
象。她非常有吸引力，非常打动克利斯朵夫的欲念，但是他最终没有和萨皮娜真正地做爱。他们有过一次机会，那是去郊游，因为下雨在外留宿。他们的房间中间隔
了一扇门，可谁都没有勇气推开这扇门。人走向欲念其实很不容易，克利斯朵夫的欲念是真正的欲念，不像我们平时所说的上了床就是的轻薄之举，他是经历着很强
烈的情感。结果萨皮娜就在这天晚上受了凉，死了。她几乎是一种幻觉，像烟雾一样，一碰就散掉了。但她已经完成了她的使命，那就是从心理上启发克利斯朵夫的
欲念。紧接着就有一个女人在生理上来开启他的欲念。这个女人叫阿达。一个店员，有着丰满的身体和鲜红的嘴唇，彻头彻尾的一个小市民--健壮，粗鲁，精力旺
盛。她很渴望也很熟练地和克利斯朵夫上了床，她把克利斯朵夫欲念的盖子真正地揭开了。等到他和阿达的事情做完以后，我以为克利斯朵夫生理、心理的基本建设
就完成了。如果说这是一个器具的话，这个器具就已经做好了，接着就要看我们往里面放什么东西了。这时他的物质性的准备都已做好。这些准备：亲情、爱情、宗
教、性爱、包括音乐，全都是以丧失为结局的，可是，要做的都做成了，而且非常坚固。这种制作方式，带有着锻打和锤炼的性质。</p>
<p>接下来是第二个阶段，我叫它"思想的成长阶段"，我给它的另一个名字就是"理性".他将开始寻找思想，把思想输入健全的身心中去。我觉得书中的四、
五、六、七卷是描写这个阶段。他首先经历的就是否定的过程。这是很自然的，每个人在他少年的时候总是力图反抗，并且往往是从最身边的反抗起。他也是从最身
边的反抗起，他反抗他的祖国。他认为德国的思想全都是腐朽的垃圾，根本不能供给新鲜的血液。他四处看去都是痛苦，简直不能忍受。他苛刻地评价德国的历史、
文化、政治，德国成为他少年时代反抗的对象，他必须要找到一个对象，如果他生活在法国他就反对法国了。他对德国的要求实际上是一种自我要求，是一种非常严
格的自我否定。克利斯朵夫在这里说过这样一句话：他无情无意地把从母亲那边得来的武器去还击母亲，将来他才会发现他受到了母亲多少好处。这种反抗就好像是
一种蝉蜕，旧的躯壳小了，要挣脱它，换一身大的躯壳。</p>
<p>　　他否定了他的祖国，当然还须寻找一个能够替代的东西作他的思想。他很盲目地到处乱找。首先他找到犹太民族。他认识了一个犹太人，他很想到这些犹
太的家庭里去，看看这个民族能不能给他一些新鲜的、有刺激的，可以帮助他的东西。可当他和他们接触下来，却感到非常失望。他发现这些在德国的犹太人比德国
还德国，将来他还会发现在法国的犹太人比法国还法国。他发现这个民族非常能接受它所在的环境的特性。所以当他和他的犹太朋友结下友谊，深入到他的家庭去以
后，他对这个民族就再也不抱幻想了，他认为这个民族不可能给他什么东西，于是他就退了出来，重新投入茫然的寻找中。然后就发生了具有预兆性的事情，一个法
国的戏班子巡回演出到这个小城里来了。他对法国并没什么好感，他觉得法国人是一种很轻飘的人。但因为它演出剧目里有歌剧《哈姆莱特》，当然莎士比亚的东西
他总是要去看看的。他很快就被演奥菲利亚的女角吸引住了。这个女演员给他极有才气的印象，他看了戏以后就去找这个女演员。他发现她天性里就有一种对戏剧，
或者说对音乐的领悟力，她根本不学习，不用功，不想问题，只是玩，只是吃，只是谈恋爱，可她有艺术的天性。这个女演员就像一个孩子，一个洋娃娃，却是一个
很有生命的洋娃娃，那么热情，很会调情。她的调情克利斯朵夫根本不懂，他是一个认真的人，对他来说要就是爱，要就不是，没有调情这一说。所以她和他调情便
得不到回音，她也并不生他的气，反和他结下了很愉快的友谊。然后这个女演员对他说我下一站要去法兰克福演出，你来看吧。其实她只不过随便说说而已，说过就
忘了，但是克利斯朵夫很认真地接受了邀请。</p>
<p>　　这里还须回述一个情节，就是他去看这个法国戏班子演出，是他那有钱的犹太朋友给他的包厢票子，他在戏院门口看见一个等退票的女教师样子的法国女
孩，就把这个法国女孩子一块带到包厢看戏了，其时他并没有对这个女人留下印象。他从法兰克福看完演出，在回去的火车上，当两列火车并排在一个站头上临时停
车时，他却看见了另一列火车里坐着那个与他一同看戏的女教师。这交臂而过的一瞬间，却给他留下了很深刻的印象。他觉得法国以两个面目出现在他面前，一个是
活泼的，热情的，充满活力的，无忧无虑的；另外一个则是那么忧郁，那么深沉，那么安静。法国是以这样不同的两个女性出现在他的印象中，从此他对法国就怀有
了一种向往。然后这段时间他是在混乱中度过。他去给《社会党报》写文章，他根本不了解《社会党报》和王室唱对台戏的背景，他一直是拿着王室乐队的薪俸，却
去给《社会党报》写文章。亲王非常愤怒，把他叫去狠狠地训了一通。他也不知道应该说一些道歉的话，觉得这是我的自由，我想在哪儿发表文章就在哪儿发表文
章，于是就和王室断了来往。《社会党报》的人则趁虚而入，又来找他，他自然说了很多亲王的坏话，报纸上立即登出来了。就这样莫名其妙地卷入了无谓的政治纠
纷。而他发现忽然之间冒出了那么多的敌人，那是因为失去了王室的保护。他又是一个性子非常暴躁的人，难免到处树敌，搞得焦头烂额。在这些孤独的日子里，他
四处寻找着可以支持他的东西。他去探望一个儿童时期非常崇拜的作曲家，这个作曲家在他儿童时代的印象中英俊、聪明、潇洒、才华横溢，充满激情。他把他的希
望寄托在这个作曲家身上。他坐火车去他住的城市，找到他家，经过多少次闭门羹之后，终于见到了这位作曲家，可是作曲家已经完全不同了。他还保持着一股锐
气，可是他这股锐气只是埋怨、牢骚和不满，而且什么都看不上眼，年轻人，音乐会，新作品全都看不上眼，百般指责。自视很高，可是创造力已经消退了。他对克
利斯朵夫也表示了露骨的蔑视。为什么蔑视他？只是因为他蔑视所有的人，虽然心里对他的作品是有好感的。实际上他们两个人有很共同的地方，他们都是有才能的
人，都是锐利的人，孤独的人，想要自由的人，但是他们俩都因为情绪化的影响没有成为朋友，失臂而过。他从他童年偶像那儿离开的时候，感到很伤心，他唯一的
渺茫，脆弱的偶像都没有了。回家的路上他忽然想到，一个曾经给他写信的音乐爱好者住在这儿，就给他发了一份电报。这个音乐爱好者是一个大学教授，没有孩
子，妻子死了，一个人很寂寞地生活，唯一的安慰就是克利斯朵夫的音乐。他非常喜欢他的音乐。一收到电报，马上就在约定时间到火车站去接。他想当然地到头等
车厢接，但克利斯朵夫是坐四等车厢，两人就错过了。然后这个音乐爱好者就满城地去找，找到田野里，看到一个人躺在大树底下，很悠闲。他觉得这个人有点像，
但也不敢冒昧地打招呼，就悄悄地走近他，唱克利斯朵夫的音乐--"来吧，来吧"，克利斯朵夫一下子跳起来，他们就这样见面了。接着他就陷入了一群音乐爱好
者的包围。这些人都做着普通的职业，在乡村里生活，长得也粗俗，胃口且非常旺盛。其中有一个大胖子，宣布要演唱克利斯朵夫的曲子，克利斯朵夫顿时感到灾难
来了，他想尽一切办法阻止他唱，可是办不到，因为这人是被他们远道请来专门演唱的，他必须要唱。他唱出来的第一个声音却把克利斯朵夫镇住了，他怎么会那么
理解他呢？他唱得非常好，是心灵里的声音。他的赞许的眼光鼓励了胖子，胖子开始大加发挥，事情开始变糟了，克利斯朵夫为了使他停止，差不多就快打起来了。
在那里他过了很愉快的几天，又回到他的小城里，依然一无所得。这时候他心里有一个向往渐渐清晰了，他要去法国。可是他走不了，妈妈不让他走。母亲半夜里起
来走到他床边说，现在只有我一个人了，你走的话，我就完了。</p>
<p>　　可是没料想，机会来了。这一段时间他就像一个游魂，一个幽灵，一个无家可归的流浪者一样的到处乱走。有一天他走到一个乡村，这个乡村正在举行晚
会，喝酒，跳舞，唱歌，他就参加进去了。然后来了一群大兵，和农民因为争夺一个女孩子起了纠纷。克利斯朵夫是那么骚动，心里憋了一股热情和力气没有地方
用，就一下子挑起了殴斗，并且打得非常勇猛，造成了惨案。这时候整个村庄的人开始怨恨克利斯朵夫，说如果不是你在里面挑，这事情很快就过去了，很小的事
情，经常发生的，军民之间的一点小冲突，可是你进来之后事情变得复杂了。只有那个因她而起事的小姑娘感激他，说我帮你走，你不能回德国，你再也不能回你的
城市了。她把他送到边境，然后让他过了境，这时候他迫不得已，只能走了。当他踏上开往法国的列车，对着他要去的方向大声喊道："巴黎，救救我！救救我的思
想！"这时候他终于挣脱了他的反抗时期，去往巴黎，开始他的寻求和建设了。</p>
<p>　　他要找法国，找法兰西的精神，可是法兰西的精神在什么地方呢？在这里我特别想说一点，罗曼·罗兰写了整整三卷关于他寻找法国的故事，但是我以为
他绝对无意要对法国的历史、政治、文化作什么评价，他只是要把法国这个地方作为克利斯朵夫思想或者精神的救援，他只是让法国承担这个援助的任务。而我觉得
法国在那个时代足够有条件，有资格成为克利斯朵夫的思想家园，因为它是一个艺术的国家，聚集了很多艺术家，是一个艺术大都会，有着悠久的文明。他进入法国
是由表入里。他一下火车看到巴黎的情景感到非常伤心，满目凄凉，是那种日常抑郁的生活，马陷在泥浆里拉不动车，妇女提着篮子匆匆忙忙地走路，天非常的阴
沉......他不知道他要到哪里去寻找法国，可他知道他必须要在这里寻找。他身边没几个钱，只有两个认识的人在这儿，一个就是从小和他进行过爱情预习的奥多，这
时候已经成为一个商人，已经不能习惯克利斯朵夫那种粗声大气说话的方式，那种过分的热情，完全没有绅士的风度，所以对他很冷淡，可以说是把他拒之门外。他
只得再去找另一个熟人，高恩，是个出版商，专门出版通俗小说，什么黄色他出版什么，所以生意做得挺大的。这个人其实对克利斯朵夫也受不了，况且明显就是找
他吃口饭的样子。可是摆脱不掉，因为克利斯朵夫那么热情。不得已高恩带他见了一些音乐家。可是克利斯朵夫那么傲慢，他完全没有意识到自己是个流亡者，别人
叫他去教小姑娘弹钢琴，他觉得是对他的污辱。但是不管怎样，他把这个高恩给缠上了，高恩带着他进入了法国的音乐界。法国音乐界给他的印象是什么呢？"音乐
在巴黎就像两个穷苦的工人合租一间房子，一个人从床上起来，另一个人就钻进他的热被窝。"就是这样一种情景，到处都是音乐会，多得简直是泛滥了。每个人都
在听音乐，演奏的也是那么回事，但是没有想象，就凭着几千年积累下来的机械的技术在那儿演奏。整个的情形就像赶集，一个星期里同时有好几个地方在举行音乐
会，每天晚上都有音乐会的海报，到处都是制作和弦的铺子。音乐在法国变成一种遍地皆是的，工匠性质的技术，因此整个空气里都充满了音乐。法国的音乐批评界
也是很热闹的，到处都掀起很激烈的争辩，流派简直多得吓死人，其实都很无聊，譬如说有横读派和竖读派（音乐总谱有十几行，和弦是竖的，旋律是横的）。也涌
现了很多当代的新艺术。他非常认真地去听当代的新艺术，这些东西却给他重复的感觉。他总是对高恩讲你再带我去看看。高恩说你要看什么。他说，我要看法兰
西。高恩说你看到的不就是法兰西吗？他说这不是的，一定有更好的东西，否则我不能解释为什么有这么多文化在这儿诞生。他非常执著地去找。他抛开音乐界，进
入了文学，情形同样令他扫兴。他很刻薄地讽刺法国当红的女作家，说这些女作家不过是把在客厅里撒娇的方式拿到书本里来撒娇，向她的读者传送媚眼，把她的私
人小事像雨点一样洒给读者。整个文学界充满了这样的女性的气质，一种委靡的、衰退的、伤感的气质。他也不能忍受，觉得文学和音乐同样糟糕。但是他也承认在
这么乱七八糟、像赶集一样闹轰轰的情景之下，古典艺术还是始终支撑在里面。是一片废墟，那也是古典艺术的废墟，也是罗马的废墟。可是他还是不满意，和高恩
讲你还是要带我去看，我还是觉得没有看到法兰西。高恩说那么你只能自己去看了，我没有办法再带你了，我已经尽我的力把我所有能够企及的艺术界的东西都向你
展览了，而你还是不满意。从此以后，克利斯朵夫只能单枪匹马自己去看法国了。他能看到些什么东西呢？</p>
<p>　　他首先走进了一些沙龙，去研究女性。他发现这些形象各异的女性说到底只有一种类型，就是漂亮、时髦、擅长谈情说爱，但缺乏鲜活的生命力。他也接
触了犹太人，就像前面说的，他觉得法国的犹太人比法国还法国。他认识了社会党人，参加到社会团体的阵营里去，参加他们的一些疯狂的讨论。他就发现在这些政
治里充满了资产阶级虚伪的气味，平民全都给资产阶级腐蚀了。后来他生病了。睡在一所公寓里，孤苦伶仃，所有的朋友都断绝了来往，只有一个住在顶楼的女佣人
来照顾他。这个女佣人是一个没有什么人生目的，对生活也不去思考，只是凭着本能在那儿勤勤恳恳，认认真真地生活。她说了一些很简朴的话，譬如说，你看到的
法国是一些有钱人的，而我们才是真正的法国，她只会说这些很淳朴的话。这使我想起张贤亮的小说《牧马人》，一个右派考虑了那么多，受了那么多苦，怎么都不
能解决问题，一个四川逃荒来的小姑娘，说了两句很简单的话：犯了错误改就行了，以后我们不犯就是了，问题就解决了。在这里情况也有点相似，克利斯朵夫就是
从一些非常淳朴的人生里开始领悟到法国精神的微光。但是不同的地方在于克利斯朵夫是从这种最低级状态，最淳朴状态起步，他还要出发的。可是"牧马人"就到
这儿为止了，永远是那么朴素的道理要来解答我们这么复杂的人生，其实是不可能的。这是一个很大的区别。而克利斯朵夫就在这个女佣人给他的启示上重新出发
了，他终于找到了出发点。以前都在浮面，而现在终于找到了根，从根上重新出发寻找法国。</p>
<p>　　然后他在一个Party上认识了一个青年，是个诗人，很敏感的气质，叫奥里维。他觉得奥里维和他似曾相识，在哪里见过。后来才知道他的姐姐安多
纳德，就是前面所说的法国戏班子来德国小城演出时，他带去包厢看戏的那位法国女教师，后来在一个车站，火车交车时，他们又见过一次。她的姓叫耶南。作者这
么描绘这个家族："耶南是它的姓，耶南是那些几百年来驻守在法国的一角，保持着纯血统的旧家庭。虽然社会经过了那么多的变化，这等旧家庭在法国还比一般预
料的为多，它们与乡土有多多少少连自己也不知道的根深蒂固的联系。直要一桩极大的变故才能使它们脱离本土。"安多纳德家的家史几乎可以说是法国的近代史。
最初他们的祖先是农民、佃户，然后作了工匠，或者乡下的公证人。她的爷爷是一个很精明的买卖人，最终成为一个银行家，他很顽强，很规矩，很正派，喜欢享
受，头脑很实际，也很潇洒，然后把这个家业传到她父亲手里。她父亲人缘很好，感情充沛，对政治没有兴趣，作为一种时髦而反教会，他把他所有的财产都投资在
一件投机买卖里，结果破产。他自杀了，留下妻子带着安多纳德和奥里维姐弟俩到了巴黎。他们是真正的贵族，被巴黎的粗鲁吓坏了。这么乱，这么多的人，马路上
的马车声、人声，就像一个咆哮的大海。他们在旅馆里住下来，然后去投奔亲戚，亲戚都非常冷淡，将他们拒之门外。于是只能去找工作，贵族的面子又拉不下来，
觉得他们去做家庭教师很丢人。母亲只能去修道院教弹钢琴，收人非常低，勉强维持三口人的开销，最后母亲去世了，将姐弟俩孤苦伶仃地抛在巴黎。安多纳德为了
能使弟弟受高等教育，就到德国去做家庭教师挣学费。这就是我们前面所说的克利斯朵夫在德国的家乡遇到安多纳德的背景。当他在法兰克福回去的路上，从并列停
车的车窗内看见这个女孩子的时候，安多纳德正是被她的东家解雇了回法国。因为她被克利斯朵夫请进去的包厢，正是她东家的包厢。东家的包厢里坐着他家的女教
师和一个狂妄的音乐家，被认为是小城里面一件很大的丑闻，完全不能接受，就让她回家了。姐弟俩苦苦挣扎，他们的贵族气质在平民的生活里压榨到极点，地位、
财富、尊严、骄傲，一切都没有了，可是却保留了贵族血统里最好的气质，那就是精神的高贵。安多纳德她才是真正体现了法国的精神，然而这种精神的生命实在是
太微弱，时间延续得太久，变故消耗得太剧烈，他们姐弟两个人的生命力只够一个人用的。安多纳德把她全部心血倾注于弟弟一身，结果她死了，奥里维一个人活
着。当克利斯朵夫看到奥里维时，他从奥里维的眼睛里看到安多纳德的眼睛。这时候法国开始向克利斯朵夫展现它的面目。这里我还要说一句，事实上克利斯朵夫遇
到过很多女人，可真正有过爱情的是安多纳德，也正因为这是爱情，所以他们永远没有握过一次手，只是在包厢里看过一场戏，隔着车窗和隔着马路见上一面。安多
纳德是寄托在奥里维身上，与克利斯朵夫相爱。这是灵魂之爱，只有天才才配领受，却是以痛苦与寂寞为代价的。</p>
<p>　　法国终于向克利斯朵夫展现了面目，主要有这么两大段情节。第一段是，他和奥里维认识后马上就变成很亲密的朋友，两个人在贫民区里租了一间公寓，
公寓住的全都是平民。于是他看见了法国的平民精神，这种平民精神是以贵族精神作底的，所以它有一种永远不会堕落的性质，再难，再挣扎，也总是立着。他周围
有电气工人，有受过罗马教庭处分的神父，工程师和他的家人，他们互相不来往，保持着精神的孤独，这是法国潜藏的生机。这使克利斯朵夫感觉到法国的优秀分子
其实是隐藏在暗处，这是一种收到盒子里的精神，收敛起来的。法国贵族的传统全都被现代工业打碎了，流落到了巴黎就藏在一个个盒子似的公寓里。他终于接触到
了法国。</p>
<p>　　第二段是与奥里维的长谈。专辟一章，写他们两人在房间里，整整八天，足不出户，讨论法国的精神。奥里维向他叙述了法国，法国有美丽的灵魂，但法
国的生命力却慢慢衰微，由于它缺乏行动。这时候克利斯朵夫开始意识到德国的优势，德国具有一种强悍有力的平民的力量。法国具备了优美、高贵、精神的想象，
而德国充满了现实的力量。我是这么来看的，当罗曼·罗兰塑造克利斯朵夫时，他想让德国作他物质性的盛器，里面盛的是法国的思想精神。其实，无论是法国也
好，德国也罢，只是个命名而已，其间的内容给它命名什么都可以，按照罗曼·罗兰的方式，我们暂且称它为德国和法国。这时克利斯朵夫的思想已经基本形成，他
已经找到了精神的家园，就开始了他成长的第三个阶段。</p>
<p>　　第三个阶段我称之为"理性和本能的合作".他的整个物质性的本能和他的精神思想在双方都成熟的时候，是严重起着冲突的，要把它们协调起来，必须
经历一个艰难的，痛苦的融合过程。这就好像把新鲜血液输进身体，会产生强大的排斥力，何况克利斯朵夫又是一个本能极其健全和粗野的人。他是怎样达到灵与肉
的合二为一的呢？首先他经历了一系列的女朋友们。有专门的一卷，卷名就叫"女朋友们".这些女人实际上都没有可能成为他的归宿，只是作为他的一个暂时停泊
地。我想女性是和本能与精神都有直接关系的，她们往往会成为本能实现的载体，同时她们又具有精神化的虚无的特质。所以，这时候，他很希望在他的女朋友里找
到一个使他的精神和肉体能够结合，寄存的家园。这些女朋友各种各样。先是雅葛丽娜，也是一个贵族，很娇弱，有很多幻想，最后她和奥里维两人结成了夫妻。他
们俩的爱情纯洁、高贵、美丽，可是这两个真正的法国人是没有生命力的，所以最后他们是互相折磨，两人的婚姻以失败收场，留下了一个孩子。这个女朋友吸引过
克利斯朵夫，但他觉得她太柔弱，有一些无聊。又有一个女朋友叫赛西尔，是个钢琴家，像个工匠一样的机械，可是以她的技术也能达到很好的境界，能把音乐表达
得相当完美。她的才能是和技术连在一起的，她给予克利斯朵夫安宁的心境。有一晚她和克利斯朵夫睡在两个房间里，中间只隔了一层薄薄的墙壁，互相之间也没有
一点骚乱。可是她对于克利斯朵夫来说，欠缺了激情，还是无法安置他的灵与肉。然后他碰到一个法国女演员叫弗朗索阿斯。这弗朗索阿斯很有才气，经历过苦难，
心里充满了骚动。可是这个女人和克利斯朵夫实在太相像了，在一起是骚动加骚动，痛苦加痛苦，都是做加法的，没有一点互相替补和缓解，也不行。还有一个悄然
露面又悄然消失的女朋友。她的露面是有预示的含义的。那是在一个奥地利大使馆的晚会上，克里斯朵夫作为一个著名音乐家也被邀请参加，他在一面大镜子里看见
了一个女人的面容，觉得很面熟。长期以来他一直感到有一个人在支持他，帮助他，在批评界里给他开创局面。其实就是这个女人，叫格拉齐娅。我们最后再说，她
的含义要在最后才体现，但是她已经在这时候登场了。就这样，他接触了很多女朋友，可始终没有得到一个身心合一的境界，但是他也没有付出太大的痛苦。</p>
<p>　　太大的痛苦紧接着就要来了。他参加了工人运动，而且把奥里维也带了进来。在一次激烈的暴力行动里，奥里维丧身，他被迫逃亡，达到靠近瑞士的边境
地带，投奔一个乡村医生。乡村医生的妻子叫阿娜，是个虔诚的天主教徒，不苟言笑，呆板，严肃，足不出户。他们没有孩子，生活得很平静。克利斯朵夫来了后，
激起她极大的热情。这其实是克利斯朵夫很虚弱的时候，奥里维的死和逃亡生涯使他身心分离，一切空虚，阿娜就此进入了他的生活。阿娜是个非常虔诚的天主教
徒，这种通奸的事情是她深恶痛绝的，可是她阻止不了这种热情。而克利斯朵夫天生是有洁癖的，满心都是对她丈夫的感谢，他的道德，他的良心都不允许他做这种
事情，可是也同样阻止不了喷薄而发的热情。他们俩的偷情真是太痛苦了。再加上他们家有个女佣人，非常爱管闲事。有一天晚上克利斯朵夫到阿娜房间去，发现地
上铺着很细很薄的沙子，他们就知道是这个女佣人干的，企图抓到证据。他们感到非常紧张，愚人节紧接着就要来了，在愚人节里允许人们把最丑陋的东面都揭露出
来，可以用玩笑、调侃的方式来揭露，而且他们已经感觉到这个女佣人和她的朋友在设计让他们当众出丑的节目了。他们只能决定去死。一切准备都已做好，手枪也
偷到了，可子弹生了锈，打不出来，死也死不成。最后阿娜病倒，他只能逃走，逃到瑞士的山里，住在一个农民的小屋子里，谁都不见。他和这尘世断了一切的联
系，什么都没有了。而就当他绝对孤独的时候，他身心开始结合，就像是从炼狱里脱生。他觉得有一个力量在驱使他，他停不下来，必须写作。他完全不去考虑写出
的东西是好是坏，只感到身心的一种冲动使他必须写。我想，此时此刻，克利斯朵夫终于达到了理性和本能的融合，在他离开了所有的女朋友，在他孤独一人的身
上，两者协调起来。而紧接着，死亡来临了。</p>
<p>　　在他死亡以前他回到了人间，回到了巴黎，也回了自己的家乡。这时候他已经成为一个老音乐家，以前攻击过他的报纸开始吹捧他，而且以他来压制下一
代的音乐家。剧院的音乐会里到处在奏他的音乐，他已经被推崇为一代宗师了。可是他对这一切毫无感觉，他已经无所谓了。他知道什么是好什么是不好，这些都无
法左右他了。奥里维死了，可是奥里维有一个小朋友成长起来了，也开始在写诗。这是个工人的孩子，是个驼背，他的祖父是个鞋匠。他的诗里透露出奥里维的灵
光。奥里维的孩子也长大了。他心里宁静下来了。我们前面所说的格拉齐娅，再一次地也是正式地登场了。这个女孩子在很小的时候就爱上了克利斯朵夫，她以一个
儿童的心去爱他。她出生于一个意大利世家，她具有宁静、和谐、高尚、纯洁、仁慈的特质，她是克利斯朵夫心目中的罗马女神，而罗马始终被克利斯朵夫认为是最
高的艺术殿堂。克利斯朵夫非常想和格拉齐娅结婚，可是格拉齐娅始终不同意。她说我非常庆幸我们两人始终是很好的朋友，没有成为夫妻，而成为夫妻后那种日常
的琐事会把我们的感情磨蚀掉的，而我们现在却保持得非常好。克利斯朵夫只能承认这种关系，和她做一个好朋友。在克利斯朵夫临近死亡时，格拉齐娅和他说了一
句带有总结性的话：你已经越过火线了。</p>
<p>　　现在，我可以进行第四步，也就是为我的分析作出结论，我的结论是，《约翰·克利斯朵夫》不是为某一个具体的天才，比如通常以为的贝多芬作传，而
是写一种自然力，这是所有的生命里最好的一种生命力，原力里面最好的原力，是自然力的精华，它的光辉使它超越了真实，成为一个神话。</p>
<p>　　我还想要再进一步地证明一下我的结论，我觉得在那个时代，在20世纪开始之前和开始之初，艺术家是下苦力下死力的，而不是技巧性的。今天的艺
术，则是另辟蹊径。就像扛一个重东西，以前都是用力气来扛的，后来发现了杠杆的原理，学会了巧力。因此在《复活》、《约翰·克利斯朵夫》这类作品中，你很
难找到显著的特征来表明构造的用心和含义，一切看上去都那么日常和真实，但是我觉得还是能找到一些提示，来证明我刚才的观点：不是写一个具体的天才，而是
在写一种永恒的、自然的、生命的最精华。书中给了我们几点提示：一是这个名字，"克科斯朵夫"实际上是一个圣徒的名字，这是在3世纪的一个著名的圣者。主
人公克利斯朵夫经常想到在古罗马教堂门前的圣者克利斯朵夫的浮雕像，他想到哪一天才是他生命的终点：我和这个浮雕像合而为一的时候就是我的终点。圣者克利
斯朵夫传说他身材高大，专门背人过河，有一次他背一个小孩过河听到一个声音说，你背负的是全世界和创造世界的基督，他在宗教里是旅行者的主保圣人。约翰·
克利斯朵夫接近死亡时，脑子里最后的幻像是他背着一个孩子，这孩子拉着他的头发，一直在说"向前走，向前走......"，他说"咱们到了，唉，你多重啊，孩子，
你究竟是谁呢？"这个孩子说："我是即将到来的日子。"第二点提示是，克利斯朵夫忠诚地勤恳地毫不偷懒地走完了生命的全过程。书中有许多人，好人，善人，
软弱的人，都是早死的，夭折的，不等走到生命终点就死了，而克利斯朵夫顽强地努力地走到了生命的终点。在他最后死亡时，他还看到了古教堂门前圣者克利斯朵
夫的像，下有拉丁文铭文：当你看到克利斯朵夫的面容之日，是你将死而不死于恶死之日。用中国话说是善始善终。他忠诚地走完了生命的全过程，没有"早退"，
终于和圣者克利斯朵夫合二而一。</p>
<p>　　第三点提示，作者为克利斯朵夫规定的辉煌的定义是：音乐。音乐可说是一切创造物中最最虚无的东西，它最难物化，它是附在时间的流程上，转瞬即逝。而它的圣灵之光也就在此，它最具有神的特征和灵魂的特征。</p>
<p>　　我要说的观点在分析它的全过程中已经说明了，但我要找到提示性的东西作为我们的引导。现住我可以更肯定无疑地说它不是一个具体人物的传记，不是一个反映现实的作品，而是创造圣者的神话</p>]]>
    </content>
</entry>

<entry>
    <title>甲骨文收购企业搜索和数据管理公司Endeca</title>
    <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2011/10/oracle_buy_endeca.html" />
    <id>tag:www.eygle.com,2011:/digest//4.2873</id>

    <published>2011-10-19T06:34:53Z</published>
    <updated>2011-10-19T07:25:42Z</updated>

    <summary>甲骨文表示，整合了Endeca之后，甲骨文就可以为企业用户提供一个更加先进的企业数据管理平台。企业用户将能够访问、储存、管理、搜索和分析结构化和非结构化数据。</summary>
    <author>
        <name>eygle</name>
        <uri>http://www.eygle.com</uri>
    </author>
    
        <category term="Oracle摘" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="oracle" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
        <![CDATA[<img alt="Endeca.png" src="http://www.eygle.com/digest/images/Endeca.png" class="mt-image-left" style="float: left; margin: 0pt 20px 20px 0pt;" height="46" width="215" />据国外媒体报道，甲骨文周二（2011-10-18）宣布，它已经与企业搜索和数据管理公司Endeca签订了收购协议。<br /><br />甲骨文没有透露这项交易的财务条款。<b>Endeca之前总计获得6500万美元投资，其投资者包括：Bessemer、Venrock、英特尔、SAP、Ampersand Capital Partners、DN Capital和莱曼兄弟</b>。<br /><br />Endeca的核心技术可以<b>帮助企业用户关联和分析非结构化数据，为大型企业提供企业搜索服务，Borders、波音、福特、IBM和东芝都是它的客户。公司专注于开发向导搜索和关键字搜索结果自动分类技术</b>。<br /><br />Endeca的InFront产品可以为企业用户提供高级销售和电子商务内容瞄准工具。Endeca Latitude可以帮助企业用户快速开发分析应用软件，从非结构化和结构化数据源提取信息和数据。<br /><br />甲骨文表示，整合了Endeca之后，甲骨文就可以为企业用户提供一个更加先进的企业数据管理平台。企业用户将能够访问、储存、管理、搜索和分析结构化和非结构化数据。例如，甲骨文称，它的商务应用软件ATG Commerce与Endeca InFront结合在一起之后，就可以增强交叉渠道商务、销售和在线客户体验。甲骨文的商务智能产品与Endeca Latitude相结合，则可为企业用户提供更强大的分析平台。<br /><br />Endeca现在拥有600多家企业用户。甲骨文预计这项交易将在今年年底之前完成。 ]]>
        
    </content>
</entry>

</feed>

