<?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:/digest/4</id>
   <updated>2010-03-17T13:35:54Z</updated>
   <subtitle>Eygle的网摘,网摘来自网络,仅代表本人关注内容,不代表本人观点,如有侵权,请来信告知,即刻删除.</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.32-en</generator>


<entry>
   <title>在数据库历史上最重要的人物简介</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2010/03/database_person.html" />
   <id>tag:www.eygle.com,2010:/digest//4.2517</id>
   
   <published>2010-03-17T13:15:24Z</published>
   <updated>2010-03-17T13:35:54Z</updated>
   
   <summary>E.F.Codd 以其对关系数据库的卓越贡献获得了1983 年ACM图灵奖。</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="人物传奇" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="265" label="Database" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      <![CDATA[<strong>埃德加·考特（EdgarF.Codd）</strong> 

　　计算机界公认的关系数据库之父。1970年他提出了关系模型的理论，1970年以后，E.F.Codd继续完善和发展关系理论；之后创办了一个研究所The RelationalInstitute和一个公司Codd & Associations；1990 年出版了专著The Relational Modelfor Database Management：Version 2
　　E.F.Codd 以其对关系数据库的卓越贡献获得了1983 年ACM图灵奖。

 

<strong>　　C.J.戴特(C.J.Date)</strong>
　　C.J.Date 是最早认识到Codd 在关系模型方面所做的开创性贡献的学者之一，他是关系数据库技术领域中非常著名的独立撰稿人、学者和顾问，他使得关系模型的概念普及化。他参与了IBM公司的SQL/DS和DB2两大产品的技术规划和设计。30多年来，Date 一直活跃在数据库领域中，其著作有《数据库系统导论》，《对象关系数据库基础：第三次宣言》（1998）等。

<strong>　吉姆·格雷（Jim Gray）</strong> 

　　Jim Gray使关系模型的技术实用化，他为RDBMS成熟并顺利进入市场起到了关键性的作用。他在事务处理方面取得了突出的贡献，使他成为该技术领域公认的权威，他也成为图灵奖诞生32 年来第三位在数据库技术的发展中作出重大贡献而获此殊荣的学者。曾参与主持过IMS、System R、SQL/DS、DB2等项目的开发。他的研究成果反映在他发表的一系列论文和研究报告之中，最后结晶为一部厚厚的专著：Transaction Processing: Concepts andTechniques。

 

<strong>　　Michael Stonebraker</strong> 

　　Michael Stonebraker是Ingres的创始人。他是加州大学伯克利分校的教授，著名的数据库学者，他在1992 年提出对象关系数据库模型。S t o n e b r a k e r 教授领导了称为Postgres 的后Ingres 项目。这个项目的成果是非常巨大的，在现代数据库的许多方面都做出的大量的贡献。Stonebraker 教授还做出了一件造福全人类的事情，那就是把Postgres 放在了BSD 版权的保护下。

 

<strong>　　Jeffrey D. Ullman</strong>
 

　　Jeffrey D. Ullman 是国际知名的数据库专家。现为斯坦福大学的Stanford W. Ascherman计算机科学教授。1996 年获得Sigmod 贡献奖和1998年Karl V. Karstrom 杰出教育家奖获得者。出版了多本数据库专著。]]>
      
   </content>
</entry>

<entry>
   <title>Office:试图运行的函数包含有宏或需要宏..</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2010/01/office_vba_word.html" />
   <id>tag:www.eygle.com,2010:/digest//4.2485</id>
   
   <published>2010-01-06T09:58:07Z</published>
   <updated>2010-01-06T10:02:31Z</updated>
   
   <summary>今天Office遇到了这个问题，参考如下方案得以解决</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="软件工具" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="130" label="Microsoft" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      <![CDATA[<p>今天Office遇到了这个问题，参考如下方案得以解决：</p>

<p>在安装OFFICE2007 、2010 时，如选择不安装共享功能，打开WORD时就会出现"你正在试图运行的函数包含有宏或需要宏语言支持的内容，而在安装此软件时，您（或您的管理员）选择了不安装宏或控件的支持功能"。</p>

<p><strong>解决方法1:</strong></p>

<p>XP系统：
在word选项----加载项----管理【com加载项】，转到----把"稿纸向导、书法加载项、斜线表头向导、信封向导、office special symbol input add-in"五项取消(若有六项或更多，一并取消试试，我的有六项，全取消，就ok了）----确定。</p>

<p>vista：
word选项----加载项----管理【com加载项】，转到----把几个勾勾都取消掉----确定，即可。VISTA中注意要以管理员身份进行，因为这些写入了注册表。（具体方法是，到office的安装目录，找到word.exe文件，反键，选以管理员身份登录，再进行设置即可）</p>

<p><strong>解决方法2:</strong></p>

<p>1.如已安装，则可执行安装文件，选择"添加或删除功能"，把共享功能里的"VBA项目的数字证书"装上，问题即可解决。
2.如还未安装WORD，则可在安装时选择共享功能里的"VBA项目的数字证书"装上，问题即可解决。</p>

<p>参考链接：
<a href="http://hi.baidu.com/xnail/blog/item/dc210ef3f61401cc0b46e071.html">http://hi.baidu.com/xnail/blog/item/dc210ef3f61401cc0b46e071.html</a></p>
<img hidden="true" style="border: medium none ; position: absolute; z-index: 2147483647; opacity: 0.6; display: none;" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADsElEQVR4nK2VTW9VVRSGn33OPgWpYLARbKWhQlCHTogoSkjEkQwclEQcNJEwlfgD/AM6NBo1xjhx5LyJ0cYEDHGkJqhtBGKUpm3SFii3vb2956wPB/t+9raEgSs52fuus89613rftdcNH8/c9q9++oe/Vzb5P+3McyNcfm2CcPj9af9w6gwjTwzvethx3Bx3x8xwd1wNM8dMcTNUHTfFLPnX6nVmZpeIYwf3cWD/PhbrvlPkblAzVFurKS6GmmGqqComaS+qmBoTI0Ncu3mXuGvWnrJ+ZSxweDgnkHf8ndVTdbiT3M7cQp2Z31dRTecHAfqydp4ejhwazh6Zezfnu98E1WIQwB3crEuJ2Y45PBTAQUVR9X4At66AppoEVO1Q8sgAOKJJjw6Am6OquDmvHskZ3R87gW+vlHz98zpmiqphkkRVbQtsfPTOC30lJKFbFTgp83bWh7Zx/uX1B6w3hI3NkkZTqEpBRDBRzG2AQHcwcYwEkOGkTERREbLQ/8HxJwuW7zdYrzfZ2iopy4qqEspKaDYravVm33k1R91Q69FA1VBRzFIVvXbx5AgXT44A8MWP81yfu0utIR2aVK3vfCnGrcUNxp8a7gKYKiLCvY2SUvo/aNtnM3e49ucK9S3p0aDdaT0UAVsKi2tVi6IWwNL9JvdqTdihaz79/l+u/rHMxmaJVMLkS2OoKKLWacdeE3IsSxctc2D5Qcl6vUlVVgNt+fkPPcFFmTw1xruvT7SCd7nuVhDQvECzJH90h0azRKoKFRkAmP5lKTWAGRdefoZL554FQNUxB92WvYeA5UN4PtSqwB2phKqsqMpBgAunRhFR3j49zuU3jnX8k6fHEQKXzh1jbmGDuYU6s4t1rt6socUeLLZHhYO2AHSHmzt19ihTZ48O8Hzl/AmunD/BjTvrvPfNX3hWsNpwJCvwYm+ngug4UilSCSq6k8YPtxDwfA+WRawIWFbgscDiULcCEaWqBFOlrLazurupOSHLqGnEKJAY8TwBEHumqUirAjNm52vEPPRV4p01XXMPAQhUBjcWm9QZwijwokgAeYHlHYA06KR1cT6ZvoV56pDUJQEjw0KeaMgj1hPEY4vz2A4eW0/e1qA7KtQdsxTYAG0H3iG4xyK1Y+xm7XmEPOJZDiENzLi2WZHngeOjj2Pe+sMg4GRYyLAsx7ME4FnsyTD9pr0PEc8zPGRAwKXBkYOPEd96cZRvf11g9MDe7e3R4Z4Q+vyEnn3P4t0XzK/W+ODN5/kPfRLewAJVEQ0AAAAASUVORK5CYII%3D" id="myFxSearchImg" height="24" width="24" />]]>
      

   </content>
</entry>

<entry>
   <title>如何继续使用8.5版本的MSN</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/11/85msn.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2456</id>
   
   <published>2009-11-17T06:48:32Z</published>
   <updated>2009-11-17T06:52:24Z</updated>
   
   <summary>新版的MSN对于我的破电脑来说实在是太重量级了，所以从网上找了一个方法，继续使用8.5的算了。</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="软件工具" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="62" label="Windows" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      新版的MSN对于我的破电脑来说实在是太重量级了，所以从网上找了一个方法，继续使用8.5的算了。

使用 ResHacker.exe 打开  msnmsgr.exe 在 Version Info &gt; 1 &gt; 1033 中找到 &quot;ProductVersion&quot;，将 &quot;8.5.0812″ 修改为新版本的 &quot;14.0.8064.0206&quot; 等即可

Resource Hacker，Compile Script ，保存即可。

再用一段8.0吧。


      
   </content>
</entry>

<entry>
   <title>数据库因ora-600[ktbair1]和ora-7445[ksmudr]宕机处理</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/11/ora-600ktbair1ora-7445ksmudr.html" />
   <id>tag:www.eygle.com,2010:/digest//4.2488</id>
   
   <published>2009-11-13T08:12:04Z</published>
   <updated>2010-01-13T08:56:18Z</updated>
   
   <summary>真是没想到了一个普通表格上面的数据块有问题导致了这么大的问题，这个块oracle未将它标志为坏块，而是failing状态，不知道是什么意思，如果标志为坏块，那事情就不会这样了。</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="5" 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://logzgh.itpub.net/post/3185/61974">http://logzgh.itpub.net/post/3185/61974</a><br /><br /><b>环境</b>：<br />    OS: AIX 4.3.3<br />    ORACLE: 8.1.7.4 OPS,非归档模式<br />    没有任何物理备份，只有一个月前的逻辑备份<br />    <br />客户一个重要的系统因ora-600 [ktbair1]错误而异常宕机，dba偿试去启动时，还是报这个600号错误。<br /><p>在告警日志文件中我们发现以下错误：<br /></p><blockquote>Errors in file /oracle/app/oracle/admin/ora73/bdump/smon_41086_ora73.trc:<br />ORA-00600: internal error code, arguments: [ktbair1], [1], [7], [], [], [], []<br />Errors in file /oracle/app/oracle/admin/ora73/bdump/smon_41086_ora73.trc:<br />ORA-07445: exception encountered: core dump [] [] [] [] [] []<br />ORA-00600: internal error code, arguments: [ktbair1], [1], [7], [], [], [], []<br />Errors in file /oracle/app/oracle/admin/ora73/bdump/pmon_31066_ora73.trc:<br />ORA-00474: SMON process terminated with error<br /></blockquote><p>该600号错误的错误堆栈如下：<br /></p><blockquote>----- Call Stack Trace -----             <br />calling              call     entry      <br />location             type     point      <br />-------------------- -------- -----------<br />ksedmp+00fc          bl       ksedst     <br />ksfdmp+0018          bl       ksedmp     <br />kgerinv+00e8         bl       _ptrgl     <br />kgeasnmierr+004c     bl       kgerinv    <br />ktbair+00d4          bl       kgeasnmierr<br />kdourp+09a0          bl       ktbair     <br />kcoapl+0650          bl       _ptrgl     <br />kcbapl+0080          bl       kcoapl     <br />kcrfwr+0db4          bl       kcbapl     <br />kcbchg1+14fc         bl       kcrfwr     <br />kcbchg+00a0          bl       kcbchg1    <br />ktuapundo+01dc       bl       kcbchg   </blockquote><p>从中我们可以知道，该600号错误是发生在事务回滚的阶段，在oracle回滚事务时发现块信息与redo信息不一致导致的。<br />于是开始我们相信增加10513事件以禁止smon进程回滚事务可以正常启动数据库。</p><p>但是增加10513事件后，启动数据库，却报出了一个ora-7445[ksmudr]错误。错误堆栈如下：<br /></p><blockquote>----- Call Stack Trace -----                    <br />calling              call     entry             <br />location             type     point             <br />-------------------- -------- ------------------<br />ksmudr+004c          ?        00000000          <br />ksmfrs+001c          bcl      ksdxexeotherwa+012<br />kcbema+08a0          bl       ksmfrs            <br />kcrpap+011c          bl       kcbema            <br />kcratr+0498          bl       kcrpap                   <br />kctrec+0588          bl       kcratr                 <br />kcvcrv+1530          bl       kctrec                     <br />kcfopd+02e4          bl       kcvcrv            <br />adbdrv+0640          bl       kcfopd                     <br />opiexe+2380          bl       adbdrv            <br />opiosq0+0c80         bl       opiexe            <br />kpoal8+06f8          bl       opiall0           <br />opiodr+06bc          bl       _ptrgl            <br />ttcpip+0a74          bl       _ptrgl            <br />opitsk+06d8          bl       ttcpip            <br />opiino+0670          bl       opitsk            <br />opiodr+06bc          bl       _ptrgl            <br />opidrv+056c          bl       opiodr            <br />sou2o+0028           bl       opidrv                     <br />main+0128            bl       sou2o                     <br />__start+0090         bl       main      <br /></blockquote><p> <br />从metalink上搜索该7445错误，基本上都是讲内存corruption方面的问题，未有任何有用的线索。<br />增加10231事件，错误依旧。</p><p>于是我们打算跟踪oracle启动过程，增加10046事件，启动数据库，通过产生的trace文件发现此时oracle启动在刚开始就报错了，<br />也就是没还有到查询数据字典和创建bootstrap$基表的过程，<br />而前面的600号错误是在回滚的阶段的报错。于是怀疑oracle在读取数据文件的checkpoint时就报错了。</p><p>于是偿试将其中一个数据文件offline drop(因为是非归档模式)掉后，再做recover datafile,然后将数据文件online起来，操作成功。<br />偿试recover database，又报出前面的ora-7445错误。至此基本上可以肯定是某个数据文件有问题导致了ora-7445错误。<br />于是先将数据库暂时改成归档模式将所有的文件都offline drop，再一个一个做recover datafile，然后online启来。<br />在这个过程中有两个文件出错，其中一个是6号文件，其是indx表空间，这个祼设备在物理上是不存在的，并且这个表空间里面没有任何数据，<br />直接将该文件offline即可，不用理会。另外一个是38号文件，它是属于data表空间的(最重要的表空间)，将其offline drop掉后，<br />将所有的事件去掉，偿试将数据库open，open成功！ 但是过了几分钟后数据库又宕下来了，报出前面的600号错误，<br />从告警日志里面可以看出是smon进程在做事务回滚导致的。于是此时再增加10513事件后，可以正常启动数据库，并不会自动宕机下来。</p><p>至此，数据库可以正常打开，但是38号文件无法online起来，所有的业务还是无法继续。我们采用dbv检测38号文件，未有坏块。<br />我们偿试查看38号文件上面有多少的表格和索引，但是dba_extents视图无法查看，报出ora-8103的错误。</p><p>同时我们发现查看dba_free_space和dba_data_files几张视图时，都会报出ora-8103错误。这表明oracle的基表上面数据有问题！ </p><p>偿试做recover datafile 38也是报出ora-7445错误。与此同时在alert日志里面不断地报出下面的错误：<br /></p><blockquote>Errors in file /oracle/app/oracle/admin/ora73/bdump/smon_41412_ora73.trc:<br />ORA-00376: file 38 cannot be read at this time<br />ORA-01110: data file 38: '/dev/rlvdata54'<br />ORACLE Instance ora73 (pid = 8) - Error 376 encountered while recovering transaction (43, 70) on object 34060.<br /></blockquote><p>通过dba_objects视图我们发现34060对象是so表(非常重要的表格).</p><p>问题处理到这里，当时觉的几乎没什么希望了，数据字典有问题，38号文件也有问题，并且是处于recover状态。除了重建数据库，<br />将一个月前的数据导入外好像没有什么好的办法了。</p><p>此时想起以前我用bbed修改数据文件头的scn号，以将表空间online起来的那次事件，为了使38号文件打开，我们决定再次采用<br />bbed修改38号文件的scn号，看看能不能将38号文件online启来。<br />修改成功后，直接online数据文件不行，还是要做recover，recover datafile 38很快做完，然后顺利将38号文件online启来。<br />此时查看38号文件上面的表格和索引，发现几乎所有的表格和索上都有一部分数据存在38号文件上面。</p><p>至此还是怀疑38号文件上面的错误信息引起了这一切，我们认为38号文件上面的数据块肯定有问题，但是采用dbv又查不到错误。<br />此时想起前面用bbed修改scn，校验数据文件时，它将587219块标志为failing状态(这个状态不知道是什么意思)通过Dba_extents视图，找出该块对应的segment就是so表。</p><p>我们偿试analyze table so validzte structure;执行正常，未报出任何错误。同时我们偿试select count(*) from so;返回结果也正常。</p><p><br />再偿试create table bak_so as select * from so;报出前面一样的ora-7445错误。<br />采用10231事件，想跳过坏块，取出正常的数据，但是依然报同样的ora-7445错误。然后我们采用rowid方法跳过该块，取出so表中其他正常的数据(丢失了64条记录)。将so表删掉重建，将索引建立回去，重新对so表做analyze分析。同时将外键增加回去。</p><p>至此一切正常，测试业务，正常！</p><p><b>后语</b>：<br />   真是没想到了一个普通表格上面的数据块有问题导致了这么大的问题，这个块oracle未将它标志为坏块，而是failing状态，不知道是什么意思，如果标志为坏块，那事情就不会这样了。</p><p><br /></p><br />]]>
      
   </content>
</entry>

<entry>
   <title>如何在shell脚本里使用sftp批量传送文件</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/10/sftp_unix_usage.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2420</id>
   
   <published>2009-10-01T01:19:23Z</published>
   <updated>2009-10-08T01:23:38Z</updated>
   
   <summary>在shell脚本中使用sftp时必须用到密钥对(公钥和私钥).可使用下列方式生成(SSH 2.X版本)</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="软件工具" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="105" label="Unix" 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://bbs.chinaunix.net/archiver/tid-508290.html">http://bbs.chinaunix.net/archiver/tid-508290.html</a>

主要步骤如下:

1.为运行shell脚本的本地用户生成密钥对
2.将其中的公钥分发到sftp欲登录的远程服务器上
3.编写并以上面的本地用户运行shell脚本

一.生成密钥对

在shell脚本中使用sftp时必须用到密钥对(公钥和私钥).可使用下列方式生成(SSH 2.X版本),这里本地用户记为:local_user:

$ ssh-keygen -dsa

屏幕提示:

Generating public/private dsa key pair.

Enter file in which to save the key (/home/local_user/.ssh/id_dsa):
# 按回车保存为: /home/local_user/.ssh/id_dsa,即当前用户local_user的私钥

Enter passphrase (empty for no passphrase):
# 按回车,表示读取密钥时不需要密钥的密码

Enter same passphrase again:
# 确认密钥的密码,必须和上面的输入相同

Your identification has been saved in /home/local_user/.ssh/id_dsa.
# 私钥保存信息

Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
# 公钥保存信息

The key fingerprint is:
ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
# 密钥指纹

二.分发公钥

为了使用密钥,必须将公钥分发到欲登录的远程服务器上,这里远程服务器记为remote_host,欲登录的远程用户记为remote_user

1.copy公钥到欲登录的远程服务器的远程用户的家目录下,例如:

copy id_dsa.pub到remote_host:/home/remote_user/.ssh/

若目录/home/remote_user/.ssh/不存在,请先创建之.

2.将copy来的公钥文件改名为authorized_keys

3.修改公钥文件的访问权限

chmod 644 authorized_keys

三.示例

目标:

从远程服务器remote_host:/home/remote_user/data/
传送下列文件到本地计算机的当前目录: /home/local_user/data/:

20050201
20050202
20050203
20050204
20050205

方式1: 批模式

sftp提供了一个选项-b,用于集中存放sftp命令(该选项主要用于非交互模式的sftp).因此对于上面的目标,可以生成如下的命令文件:

cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit

这里存为: sftp_cmds.txt

说明: get命令前加一个"-"以防止其执行错误时sftp执行过程被终止.

以下为脚本示例:

#!/bin/sh
sftp -b ./sftp_cmds.txt remote_user@remote_host

方式二:

#!/bin/sh
sftp remote_user@remote_host << EOF
cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit
EOF]]>
      
   </content>
</entry>

<entry>
   <title>IT人物之 -  惠普CEO Mark Hurd</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/09/it_ceo_mark_hurd.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2411</id>
   
   <published>2009-09-25T05:26:56Z</published>
   <updated>2009-09-25T05:38:54Z</updated>
   
   <summary>在2008年Oracle OpenWorld上，HP的CEO Mark Hurd和Larry一起发布了Hp Oracle Database Machine，今天才偶然了解了Hurd的生平，摘录一下。-------------------------------------------------------------------------------- 马克·赫德简介 姓名：马克·赫德 英文姓名：Mark Hurd 出生年月：1957年 国籍：美国 籍贯：纽约 供职机构：惠普 职务：CEO 毕业院校：美国德州贝勒大学 　　马克·赫德，大学期间，差点成为职业网球手。1979年，赫德从得州的贝勒大学(Baylor University)毕业，尽管读的是商业管理，但他还是想向职业网坛发展----这个学校里的头号球星，当年正是拿着网球奖学金踏进大学殿堂的。但他没有如愿，一年后，马克去了NCR上班。这一呆就是25年，直到惠普找上门来。 [编辑] 工作简历 　　1980年加入位于俄亥俄州Dayton的美国著名的收银机公司NCR，在得克萨斯州销售计算机。 　　1999年，担任NCR公司的Teradata仓储部门的主管。 　　2003年3月，担任NCR公司的首席执行官。在一年的时间里，他把NCR的纯利润几乎提高了五倍，从5800万美元，合每股收益61美分提高到了2.85亿美元，合每股收益2.97美元。 　　2005年4月1日，担任惠普新CEO。 　　2006年，惠普超越IBM，成为全球最大的IT企业。 [编辑] 马克·赫德上任后 [编辑] 　　一. 裁员风云 　　对很多惠普员工来说，2005年7月19日是个黑色星期二，他们要么没有收到公司的续约合同，要么收到了伤感的裁员信。 　　早在4个月前，马克·赫德坐进卡莉·费奥瑞娜的办公室，成为了惠普新任CEO。熟悉他的人不多，虽然他在NCR担任CEO期间业绩非凡，通过控制成本使公司股价暴涨323%，但低调的马克在作风上与前任截然相反。 　　当惠普正式宣布，计划在未来6个财季里削减1.45万员工，近员工总数的10%时，如同平地惊雷。内部的恐慌可想而知，但华尔街的分析师大多乐观，《福布斯》和《财富500》杂志也对此看好。其中，Robert Frances Group分析师迈克尔·多尔齐一针见血地指出：&quot;这并不是惠普该裁多少人的事情，而是该裁哪些人的问题。赫德必须让企业客户相信，惠普是一家很稳定的公司，并能有利于自己的长期发展。&quot; 　　在卡莉·费奥瑞娜领 导期间，惠普变成了一个囊括PC、数码产品、打印机及服务在内的全能公司。其间，尽管卡莉按照客户导向的原则，将惠普四大业务集团进行过多次重组，但是基 本未涉及大规模裁员的话题，即使是压缩编制，公司也会想办法在其他职务上重新安排人员，这使得惠普成了全球IT业界人数最多的公司之一，达到15.1万， 几乎是竞争对手戴尔的三倍。...</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="人物传奇" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="764" label="HP" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="292" label="IBM" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="710" label="Person" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      <![CDATA[在2008年Oracle OpenWorld上，HP的CEO Mark Hurd和Larry一起发布了Hp Oracle Database Machine，今天才偶然了解了Hurd的生平，摘录一下。<br />--------------------------------------------------------------------------------<br /><h2> <a href="http://wiki.mbalib.com/wiki/%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7">马克·赫德简介</a> </h2>
<ul><li>姓名：马克·赫德
</li><li>英文姓名：<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>
</li><li>出生年月：1957年
</li><li>国籍：美国
</li><li>籍贯：纽约
</li><li>供职机构：<a href="http://wiki.mbalib.com/wiki/%E6%83%A0%E6%99%AE" title="惠普">惠普</a>
</li><li>职务：<a href="http://wiki.mbalib.com/wiki/CEO" title="CEO">CEO</a>
</li><li>毕业院校：美国<a href="http://wiki.mbalib.com/w/index.php?title=%E5%BE%B7%E5%B7%9E%E8%B4%9D%E5%8B%92%E5%A4%A7%E5%AD%A6&amp;action=edit" class="new" title="德州贝勒大学">德州贝勒大学</a>
</li></ul>
<p>　　马克·赫德，大学期间，差点成为职业网球手。1979年，赫德从得州的<a href="http://wiki.mbalib.com/wiki/%E8%B4%9D%E5%8B%92%E5%A4%A7%E5%AD%A6" title="贝勒大学">贝勒大学</a>(<a href="http://wiki.mbalib.com/wiki/Baylor_University" title="Baylor University">Baylor University</a>)毕业，尽管读的是商业管理，但他还是想向职业网坛发展----这个学校里的头号球星，当年正是拿着网球奖学金踏进大学殿堂的。但他没有如愿，一年后，马克去了<a href="http://wiki.mbalib.com/wiki/NCR" title="NCR">NCR</a>上班。这一呆就是25年，直到惠普找上门来。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=2" title="编辑段落: 工作简历">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E5.B7.A5.E4.BD.9C.E7.AE.80.E5.8E.86"></a><h3> 工作简历 </h3>
<p>　　1980年加入位于俄亥俄州Dayton的美国著名的<a href="http://wiki.mbalib.com/wiki/%E6%94%B6%E9%93%B6%E6%9C%BA" title="收银机">收银机</a>公司<a href="http://wiki.mbalib.com/wiki/NCR" title="NCR">NCR</a>，在得克萨斯州销售计算机。
</p><p>　　1999年，担任NCR公司的Teradata仓储部门的主管。
</p><p>　　2003年3月，担任NCR公司的首席执行官。在一年的时间里，他把NCR的<a href="http://wiki.mbalib.com/wiki/%E7%BA%AF%E5%88%A9%E6%B6%A6" title="纯利润">纯利润</a>几乎提高了五倍，从5800万<a href="http://wiki.mbalib.com/wiki/%E7%BE%8E%E5%85%83" title="美元">美元</a>，合每股收益61美分提高到了2.85亿美元，合每股收益2.97美元。
</p><p>　　2005年4月1日，担任惠普新CEO。
</p><p>　　2006年，惠普超越<a href="http://wiki.mbalib.com/wiki/IBM" title="IBM">IBM</a>，成为全球最大的IT企业。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=3" title="编辑段落: 马克·赫德上任后">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E9.A9.AC.E5.85.8B.C2.B7.E8.B5.AB.E5.BE.B7.E4.B8.8A.E4.BB.BB.E5.90.8E"></a><h2> 马克·赫德上任后 </h2>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=4" title="编辑段落: 　　一. 裁员风云">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E3.80.80.E3.80.80.E4.B8.80._.E8.A3.81.E5.91.98.E9.A3.8E.E4.BA.91"></a><h3> 　　一. 裁员风云 </h3>
<p>　　对很多惠普员工来说，2005年7月19日是个黑色星期二，他们要么没有收到公司的续约合同，要么收到了伤感的裁员信。
</p><p>　　早在4个月前，马克·赫德坐进<a href="http://wiki.mbalib.com/wiki/%E5%8D%A1%E8%8E%89%C2%B7%E8%B4%B9%E5%A5%A5%E7%91%9E%E5%A8%9C" title="卡莉·费奥瑞娜">卡莉·费奥瑞娜</a>的办公室，成为了惠普新任CEO。熟悉他的人不多，虽然他在NCR担任CEO期间业绩非凡，通过<a href="http://wiki.mbalib.com/wiki/%E6%8E%A7%E5%88%B6%E6%88%90%E6%9C%AC" title="控制成本">控制成本</a>使公司股价暴涨323%，但低调的马克在作风上与前任截然相反。
</p><p>　　当惠普正式宣布，计划在未来6个财季里削减1.45万员工，近员工总数的10%时，如同平地惊雷。内部的恐慌可想而知，但<a href="http://wiki.mbalib.com/wiki/%E5%8D%8E%E5%B0%94%E8%A1%97" title="华尔街">华尔街</a>的分析师大多乐观，<a href="http://wiki.mbalib.com/wiki/%E3%80%8A%E7%A6%8F%E5%B8%83%E6%96%AF%E3%80%8B" title="《福布斯》">《福布斯》</a>和《财富500》杂志也对此看好。其中，Robert Frances Group分析师迈克尔·多尔齐一针见血地指出："这并不是惠普该裁多少人的事情，而是该裁哪些人的问题。赫德必须让企业客户相信，惠普是一家很稳定的公司，并能有利于自己的长期发展。"
</p><p>　　在<a href="http://wiki.mbalib.com/wiki/%E5%8D%A1%E8%8E%89%C2%B7%E8%B4%B9%E5%A5%A5%E7%91%9E%E5%A8%9C" title="卡莉·费奥瑞娜">卡莉·费奥瑞娜</a>领
导期间，惠普变成了一个囊括PC、数码产品、打印机及服务在内的全能公司。其间，尽管卡莉按照客户导向的原则，将惠普四大业务集团进行过多次重组，但是基
本未涉及大规模裁员的话题，即使是压缩编制，公司也会想办法在其他职务上重新安排人员，这使得惠普成了全球IT业界人数最多的公司之一，达到15.1万，
几乎是<a href="http://wiki.mbalib.com/wiki/%E7%AB%9E%E4%BA%89%E5%AF%B9%E6%89%8B" title="竞争对手">竞争对手</a><a href="http://wiki.mbalib.com/wiki/%E6%88%B4%E5%B0%94" title="戴尔">戴尔</a>的三倍。
</p><p>　　据分析家预计，惠普每裁员一名雇员，每年可节省10万至12万美元的成本。那么每裁员5000人，就相当于每年为惠普增加每股15美分
的营收额。如果所裁雇员来自低利润部门，那么不但不会影响销售额，反而会增加公司营收。市场受利好消息影响，惠普股价在9个交易日内上扬了7%。
</p><p>　　果然，该次裁员目标明确，主要将职能部门，如后勤、财务、<a href="http://wiki.mbalib.com/wiki/%E4%BA%BA%E5%8A%9B%E8%B5%84%E6%BA%90" title="人力资源">人力资源</a>等精简，并在业务部门适当调整，同时维持研发和销售部门的现状。赫德表示，考虑到惠普创新的需要，因此裁员的重点避开了核心的研发和销售部门。目的是进一步加强客户支持，并继续领导科技革新。他说，惠普就是一家依靠<a href="http://wiki.mbalib.com/wiki/%E6%8A%80%E6%9C%AF%E5%88%9B%E6%96%B0" title="技术创新">技术创新</a>而不断前进的公司，但一度没有看清方向，"重新认识这一点很重要"。
</p><p>　　为使裁员计划顺利进行，马克·赫德采取了一项巧妙的安抚人心的策略。去年7月底，惠普宣布将提供1302个职位，其中包括多种工程、软
件开发和客户跟踪等，专门面向"重灾区"内被裁的员工。这些岗位的数量只相当于裁员总数的1/10不到，但无疑起到了"镇痛剂"的作用。在美国、印度和中
国大陆这些提供新岗位相对较多的地方，公司内部调查显示，这三地员工的心态最为平稳。另一方面，他早早准备好此次裁员所需的11亿美元资金，支付给离职人
员、维护客户关系以及相关法律费用。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=5" title="编辑段落: 　　二. 机构精简">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E3.80.80.E3.80.80.E4.BA.8C._.E6.9C.BA.E6.9E.84.E7.B2.BE.E7.AE.80"></a><h3> 　　二. 机构精简 </h3>
<p>　　在马克·赫德手中，惠普存在了数年之久的四大业务集团变成了三个。
</p><p>　　此举得到了董事会的支持。虽然马克上任后，董事会就表示不会对其具体变革措施加以干预，但一定要注意在过程中遵守"<a href="http://wiki.mbalib.com/wiki/%E6%83%A0%E6%99%AE%E4%B9%8B%E9%81%93" title="惠普之道">惠普之道</a>"----这是将惠普和 <a href="http://wiki.mbalib.com/wiki/IBM" title="IBM">IBM</a>、<a href="http://wiki.mbalib.com/wiki/%E6%88%B4%E5%B0%94" title="戴尔">戴尔</a>以及其他公司区别开来的最明显的特质----其中包括要<a href="http://wiki.mbalib.com/wiki/%E6%8C%81%E7%BB%AD%E5%88%9B%E6%96%B0" title="持续创新">持续创新</a>、尽量替员工考虑、保持与客户良好关系等原则。董事会认为，赫德对裁员问题的妥善安排遵循了这一信条。
</p><p>　　惠普每年有36亿美元研发费用，占整个<a href="http://wiki.mbalib.com/wiki/%E9%94%80%E5%94%AE%E6%94%B6%E5%85%A5" title="销售收入">销售收入</a>的
4%左右。赫德将研发投入的核心业务主要放在增长比较快的三个领域：首先是企业级市场，其次是移动市场，以及惠普最具竞争优势的打印成像业务。而一些实际
与业务关联不大的实验室，都陆续关门。包括消费者应用与系统实验室、新兴技术实验室、剑桥研究技术实验室(负责研究健康与保健技术)以及高级软件研究组。
</p><p>　　具体到职能部门，由于不像业务部门那样有全行业的指标，因此赫德在与管理层沟通后，拿出自己的一套指标做参考，比如上个月在某个系数
上减少了
0.05%的成本，这个月是否让该数字再升高些。另一些指标甚至精确到办公室的租金上，惠普计划把其分布在全球的几百家不动产机构精简整合到几个核心地
区，以进一步降低不动产成本。比如在中国惠普，就会要求说明地处北京<a href="http://wiki.mbalib.com/wiki/CBD" title="CBD">CBD</a>中心位置的惠普大厦是否租金偏高，最后考察的结果是，惠普大厦并没有超标，但在一些空间的利用率上还可以提高。
</p><p>　　为了提高公司运营的效率，2006年5月，惠普宣布计划将全球85个数据中心整合进亚特兰大、休斯敦、奥斯丁的6个主要站点。这三个城
市，每个城市分布两个站点，面积为5万平方英尺，相距15英里。这些站点将被用于支持惠普自己的服务器和存储基础架构，预计这次整合将花费大约10亿美
元。主导这次调整的是<a href="http://wiki.mbalib.com/wiki/CIO" title="CIO">CIO</a>兰迪·莫特，前戴尔<a href="http://wiki.mbalib.com/wiki/CIO" title="CIO">CIO</a>，在此之前曾在<a href="http://wiki.mbalib.com/wiki/%E6%B2%83%E5%B0%94%E7%8E%9B" title="沃尔玛">沃尔玛</a>任职22年，帮助沃尔玛建立了全球最复杂的<a href="http://wiki.mbalib.com/wiki/%E4%BE%9B%E5%BA%94%E9%93%BE" title="供应链">供应链</a>，
自己也成为全美最佳CIO之一。赫德不惜重金将莫特招来正是希望提高公司在IT运营方面过于分散的局面，在减低成本的同时将效率增高。除了数据中心，惠普
内部还减掉了500个IT项目，节省了2 亿美元的费用支出，但仍保证惠普内部的信息系统可以提供最好的信息给公司的员工。
</p><p>　　卡莉时代，由于缓慢的利润增长，加之愈演愈烈的竞争态势，惠普曾进行过两次结构调整。一次是将企业系统集团(ESG)、专业与支持服
务集团
(HPS)、信息产品集团(PSG)及打印及成像集团(IPG)中的ESG与HPS砍除，新设企业客户集团(CSG)和技术与服务集团(TSG)----按照
卡莉的策略，剔除与新设均以客户导向为原则。另一次调整则是将PSG及IPG<a href="http://wiki.mbalib.com/wiki/%E5%90%88%E5%B9%B6" title="合并">合并</a>，成立新的信息产品集团(IPSG)，其核心即将打印机和PC业务合并。此举激怒董事会，认为可能会断送利润最高的打印机部门的前程，卡莉也因此次合并而饱受外界批评。
</p><p>　　摆在赫德面前的，也是另一个让惠普头痛的地方：四大业务部门的<a href="http://wiki.mbalib.com/wiki/%E7%AE%A1%E7%90%86%E6%88%90%E6%9C%AC" title="管理成本">管理成本</a>。
除了三大主要业务部门PSG、IPG和TSG，还有一个专门为这三个部门进行销售服务的CSG。CSG意味在总部横向的管理体系中，又多出了一个横向的职
能部门，这需要公司矩阵体系中存在大量的销售人员，而这又和业务部门的销售人员职能部分重叠，而CSG与另外三个部门沟通也需要耗费大量成本。其次是职权
不清晰。CSG能让惠普以整体形象出现在客户面前，但是一旦谈判失败，就没有实际责任承担人，因为可能是CSG的问题，也可能是业务部门自己的问题。
</p><p>　　经过3个月的调研，赫德深知撤销CSG部门势在必行。好在CSG的执行副总裁、60岁的迈克·文科尔，也到了退休年龄，在经过数月的
安排调整后，该部门最终顺利并入其他三个业务部门。接下来负责后勤和采购的全球运营部门也被撤销，方式也效法撤销CSG的思路，将其职能分配到三个业务集
团。
</p><p>　　最终，IPSG被分拆为原有的PSG和IPG，同时将负责面向大型企业、中小企业和公共事业客户销售的CSG直接并入到TSG、
IPG和PSG
这三个独立的业务集团中。这意味着，在马克·赫德手中，惠普存在了数年之久的四大业务集团变成了三个，即以PC为核心业务的信息产品集团(PSG)、以打
印机为核心业务的打印及成像集团(IPG)和技术与服务集团(TSG)。根本上，这种调整也改变卡莉的客户导向原则为产品导向原则，而"让惠普的<a href="http://wiki.mbalib.com/wiki/%E4%BA%A7%E5%93%81%E7%BA%BF" title="产品线">产品线</a>更加清楚，对客户也会一目了然"，赫德如是说。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=6" title="编辑段落: 　　三. 新式矩阵结构">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E3.80.80.E3.80.80.E4.B8.89._.E6.96.B0.E5.BC.8F.E7.9F.A9.E9.98.B5.E7.BB.93.E6.9E.84"></a><h3> 　　三. 新式矩阵结构 </h3>
<p>　　职责问题上，赫德的做法是减少层级，让从他自己到一线的员工只有8级(以前是11级)，而且都是竖线联系，再没有矩阵中的横向条块。
</p><p>　　去年7月底，惠普将<a href="http://wiki.mbalib.com/wiki/%E9%A6%96%E5%B8%AD%E8%90%A5%E9%94%80%E5%AE%98" title="首席营销官">首席营销官</a>一
职从销售部门中分离出来，同时将全球运营部从IT部门中分离出来。相关人事安排上，迈克·文科尔退休，三名新的执行副总裁加入公司执行委员会，分别是执行
副总裁和首席营销官凯西·里昂(Cathy Lyons)、PSG执行副总裁托德·布拉德利(Todd
Bradley)和惠普公司执行副总裁和CIO兰迪·莫特。
</p><p>　　职责问题上，赫德的做法是减少层级，让从他自己到一线的员工只有8级(以前是11级)，而且都是竖线联系，再没有矩阵中的横向条块。如果有某项指标没有达到要求，那么下级就对自己的直接业务上级负责，然后一层层往上延展。这在惠普内部被称为"<a href="http://wiki.mbalib.com/wiki/%E9%97%AE%E8%B4%A3%E5%88%B6" title="问责制">问责制</a>"，赫德称，<a href="http://wiki.mbalib.com/wiki/%E9%97%AE%E8%B4%A3%E5%88%B6" title="问责制">问责制</a>可以从<a href="http://wiki.mbalib.com/wiki/%E8%B4%A2%E5%8A%A1%E6%8A%A5%E8%A1%A8" title="财务报表">财务报表</a>上和决策上看出它的好处，责任比较明显，每个部门都要对结果负责。
</p><p>　　为此他确定了三个业务部门的直接负责人，PSG集团是执行副总裁托德·布拉德利，IPG集团是佛米什·乔希(Vyomesh
Joshi)，TSG集团则是安·丽弗摩尔(Ann
Livermore)。三人中，后两者是赫德到任之前惠普的重臣，而托德·布拉德利则是赫德挖过来的高管，他曾是手持终端生产商和服务商Palm
One公司前任总裁和CEO。据说是当时托德·布拉德利在圣地亚哥的家附近的海滩上接到了一个朋友的电话，问他是否有意去惠普帮赫德管理250亿美元规模
的PC业务，布拉德利说，"我现在还打算在海滩上多呆会。"几周后，他还是决定加盟惠普。
</p><p>　　至此惠普的新式<a href="http://wiki.mbalib.com/wiki/%E7%9F%A9%E9%98%B5%E7%BB%93%E6%9E%84" title="矩阵结构">矩阵结构</a>已经基本搭建完成----赫德作为CEO负责全局，托德·布拉德利、佛米什·乔希、安·丽弗摩尔各自负责业务集团，直接向赫德汇报。与此同时，三个业务集团各自分担部门横向职能，比如PSG集团将负责集中<a href="http://wiki.mbalib.com/wiki/%E7%9B%B4%E6%8E%A5%E9%87%87%E8%B4%AD" title="直接采购">直接采购</a>，并履行公司内部所需各类商品的采购职能，而IPG集团将负责全球物流配送，并履行全公司的物流采购、货运成本管理和海关事务管理等职能。
</p><p>　　这样，矩阵中最耗费成本的横向结构(包括负责全公司销售的CSG集团和后勤、采购等的全球运营部门)分散到各个业务集团中，除此之外，也让各个业务集团自己完成销售外，各承担部分横向的职能。在卡莉时代，惠普的<a href="http://wiki.mbalib.com/wiki/%E7%BB%84%E7%BB%87%E7%BB%93%E6%9E%84" title="组织结构">组织结构</a>过
于复杂，销售人员往往需要对每一种产品都要有所了解才敢和客户进行沟通，这样往往导致效率低下。而赫德则希望在精简结构后，能让各个产品线的销售人员专注
自己负责领域的产品推销：打印部门的销售人员再也不用对服务器的性能做详细了解了；而如果需要为客户推出打印、服务器、PC等一系列产品，则通过TSG的
人员来进行协调即可。
</p><p>　　经过一系列调整后，在8月16日公布的2006财年第三季度，惠普总收入219亿美元，<a href="http://wiki.mbalib.com/wiki/%E5%90%8C%E6%AF%94%E5%A2%9E%E9%95%BF" title="同比增长">同比增长</a>约5%，同期<a href="http://wiki.mbalib.com/wiki/%E5%87%80%E5%88%A9%E6%B6%A6" title="净利润">净利润</a>为13.8亿美元，相比去年同期的7300万美元猛增了1790%之多。PSG仍然是惠普最大的业务，季度收入69亿美元，不过利润仅为2.75亿美元，低于IPG的8.84亿美元、TSG的3.64亿美元。上述三个部门的收入分别为62亿美元、39亿美元和41亿美元。
</p><p>　　分析师预计，惠普第四财政季度将收入241亿美元左右，而全年营收将可望达到921亿美元，而IBM2006年的预期营收则为899亿美元----以过去一年的营收来看，惠普实质上已经超越IBM成为全球营收最高的科技公司。
</p><p>　　接受美联社采访时，赫德表示，总收入的持续增长和<a href="http://wiki.mbalib.com/wiki/%E5%88%A9%E6%B6%A6%E7%8E%87" title="利润率">利润率</a>的提高是惠普纯收入大幅增加的主要原因----众所周知，有"成本杀手"之称的他还在继续裁员。
</p><p>　　这就是马克·赫德，49岁，惠普CEO。
</p><p>　　当然，他的履历上不会写有"失败的职业网球之路"，他大概是惠普有史以来最成功的CEO之一。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=7" title="编辑段落: 马克·赫德的企业方式">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E9.A9.AC.E5.85.8B.C2.B7.E8.B5.AB.E5.BE.B7.E7.9A.84.E4.BC.81.E4.B8.9A.E6.96.B9.E5.BC.8F"></a><h2> 马克·赫德的企业方式 </h2>
<p>　　伴随惠普的成功，马克·赫德的<a href="http://wiki.mbalib.com/wiki/%E7%BB%8F%E8%90%A5%E6%80%9D%E6%83%B3" title="经营思想">经营思想</a>备受瞩目："好的公司要么善于增长，要么精于效率，要么取胜于<a href="http://wiki.mbalib.com/wiki/%E8%B5%84%E6%9C%AC%E5%B8%82%E5%9C%BA" title="资本市场">资本市场</a>。而伟大的公司则在于这三者都成功。"平凡的话语阐述了惠普三角形发展战略的精髓：成长为纲----随时处于可扩展有增长潜力的市场；效率为根----降低运营费用、提升财务表现、改善资本状况；资本策略为用----将资源与想要建立的能力以及市场上能够看到的最佳机会相结合。
</p><p>　　在人们的想象中，世界级<a href="http://wiki.mbalib.com/wiki/%E4%BC%81%E4%B8%9A%E5%AE%B6" title="企业家">企业家</a>一定是那些高瞻远瞩和极富<a href="http://wiki.mbalib.com/wiki/%E5%88%9B%E6%96%B0%E7%B2%BE%E7%A5%9E" title="创新精神">创新精神</a>的企业家。他们开阔的视野、纵横捭阖的<a href="http://wiki.mbalib.com/wiki/%E6%88%98%E7%95%A5%E6%80%9D%E7%BB%B4" title="战略思维">战略思维</a>以及对创造的痴迷，使得企业出类拔萃。可是平实而坚毅的马克·赫德，不像前任卡莉·菲奥莉娜那样声誉卓著，只是硅谷众多CEO中的一个，他却奇迹般地重新把惠普带上高速增长的轨道。马克 ·赫德的巨大成功显示，做企业是一个很专业的行当，特别需要潜心经营的商业专家。
</p><p>　　相比豪华的盛典和大型论坛，马克·赫德更喜欢撸起袖子和<a href="http://wiki.mbalib.com/wiki/%E5%9B%A2%E9%98%9F" title="团队">团队</a>一
起干活，他会花更多时间跟员工呆在一起。赫德喜欢从人们的眼睛、话语和情感流露中去感受惠普文化。他不是明星，不是领袖，只是一个普通的人，反而容易融进
惠普人中。他的朴实，成了他善于捕捉惠普人心灵震颤最锐利的武器。他的武器不是用来消灭敌人，而是用来唤醒每一个像他一样的惠普普通人，让他们对惠普的发
展承担起责任来。令许多大牌美国记者感到惊讶的是，他们一天中在惠普走访许多人，可是每个人都好像刚刚跟马克·赫德接触过或是刚刚被考评过。这种具体深入
的工作作风，是许多大公司CEO想做而没法做到的。以人为本，每个人都是源头，这些人们司空见惯的"说法"，正是马克·赫德的看家本领。
</p><p>　　坚持以人为本，并没有妨碍马克大刀阔斧行使他的裁减成本绝技：他裁撤了1万多人的综合事业部，在各业务板块直接建立了责任体系；大幅
度削减IT
成本，把公司IT人员从1.9万人减到8000人，数据中心从85个减少到6个，IT项目从5000多个减到1000多个。2005年IT投入占到惠普营
业收入的3.8%，2006年下降到2.8%。数字的背后是专业的力量。不懂专业和缺乏意志力的人，不会知道该怎样去裁撤。<a href="http://wiki.mbalib.com/wiki/%E5%A4%A7%E5%89%8D%E7%A0%94%E4%B8%80" title="大前研一">大前研一</a>讲"专家阶层的实力将动摇产业界"，就是这样的含义。
</p><p>　　当每个人都承担责任的体系得以确立，每个人都能见微知著关注着惠普的发展，也就形成了一种每个人都是CEO的惠普文化。有些问题，即便
CEO看不到，也会有许多一线上的员工和管理人员能够看到。想蒙住一个人的眼睛容易，想蒙住所有人的眼睛不容易。看到是一回事，敢不敢说出来，说出来以后
有没有回响和行动，是另外一回事。一般公司的员工缺乏这样的激情。惠普员工不只是有这样的激情，而且有这样做的勇气。他们更能够收获他们的激情和行动。
</p><p>　　人们时常被那些头顶光环不断发表着商业宏论的企业家所误导。错以为世界级的企业家就是要发出世界级的声音。马克·赫德令世人瞠目，首
先不是他的思想，而是惠普的业绩。马克·赫德的故事又一次说明，那些善于把握住客户需求变化方向，善于建立每个人都是CEO局面的商业专家，才是真正强势
的企业家。
</p><p>　　铺天盖地的赞誉，并没有冲昏赫德的头脑。每次记者招待会，他都会以下边的话结束他的陈述："惠普还有更多艰难的事情要做"。马克·赫
德深知，虽然在规模上刚刚超越IBM，但是IBM的利润却是惠普的3倍。即使惠普2007年的净收入达到90亿美元，成本仍然高达830亿美元。只是在规
模上超越 IBM，没有让已届知天命的赫德有丝毫自满情绪。永远能发现还有更艰难的事情需要做，或许正是商业专家的本色。
</p><p>　　深知自己，也知道每个员工的感受和兴奋点，正是马克·赫德的看家本领。这个看家本领往往不被人们重视。似乎没有判断力的人才打情感
牌。而且，小公司十几个人CEO可以够得着每一个人，公司大了，像惠普这样15万人的公司，有着健全的体系，一个CEO不懂得充分授权和发挥人的作用，而
一个劲地往下面跑，这还不乱了秩序？这些批评，放在创造了惠普奇迹的马克·赫德身上，看上去不近情理，却实则反映了<a href="http://wiki.mbalib.com/wiki/%E7%BB%8F%E8%90%A5%E7%AE%A1%E7%90%86" title="经营管理">经营管理</a>这个行当的一系列真实悖论。我们姑且称其为赫德悖论吧。 
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=8" title="编辑段落: 赫德悖论一：">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E8.B5.AB.E5.BE.B7.E6.82.96.E8.AE.BA.E4.B8.80.EF.BC.9A"></a><h3> 赫德悖论一： </h3>
<p>　　一般的认识是，远见卓识的企业家铸造强势，目光短浅只注重实操的企业家走不远；而在惠普的现实中，远见卓识、开阔视野的卡莉却只是造就了真正的弱势，而目光短浅、只专注实操的马克，却能铸成真正的强势。
</p><p>　　马克·赫德的前任<a href="http://wiki.mbalib.com/wiki/%E5%8D%A1%E8%8E%89%C2%B7%E8%8F%B2%E5%A5%A5%E8%8E%89%E5%A8%9C" title="卡莉·菲奥莉娜">卡莉·菲奥莉娜</a>，
是一位令人炫目的企业家。她高瞻远瞩，饮马天河，倚剑昆仑，可是回头一看，却没有后来者，成了独战风车的唐吉诃德。一直到离开惠普，她也不明白到底发生了
什么。她看到的是自己如何拨乱反正，是如何带领惠普在战略的骑墙尴尬中脱身，走上了一条康庄大道。可是，却偏偏成了公司政治阴谋的牺牲品。
</p><p>　　被杀者和被劫者亦有罪。从她出版的自传《艰难抉择》中，可以看到卡莉·菲奥莉娜是何等的孤独！下属懵懵懂懂，董事们龌龊无知，前任
CEO普莱特毫无智慧与锐气，合作者时常犯一些幼稚错误，即便董事会里最坚定的支持者迪克·哈克伯恩，也是只懂技术不懂管理。诸如此类的描述，既让读者切
实感受到卡莉的孤立无援，也让我们联想到卡莉曾经反复强调的"合作精神"之弱而瞠目。卡莉曾经说："无论是商界、政界还是家庭,有三个重要的特质是领导者
必须具备的 ----天赋、能力和合作精神"。当属下与合作者在一个CEO心里都成了懵懂无知的代名词的时候，那么一个光杆司令注定是不可能继续再带领一个有<a href="http://wiki.mbalib.com/wiki/%E8%BF%9C%E6%99%AF" title="远景">远景</a>、有潜力的公司变革图新。
</p><p>　　赫德不是明星，不是领袖，只是一个普通的人。如果不加盟惠普可能他还继续着他的默默无闻。他没有搞声势浩大的誓师大会，也没有让世人惊
奇的出师表，他甚至也不急于率领惠普的千军万马去追逐看似宏大的战略计划，而是以其惯有的冷静冷却了惠普的躁动与混乱。赫德很注重董事会上得到的有用信
息，也从惠普历史发展中找到了灵感。但是真正进入状态的方法是不断地与人见面，不断地交谈，然后深入理解这些问题。
</p><p>　　在赫德看来，CEO的职责，其一是根据公司的现状，为公司找到目标，并找到通向那一目标最有效的路径；其二是找到执行战略的合适人
选。完成这两项任务，重在面对面的交流。如果以为自己是CEO了，有着充足和权威的信息资源，已经不屑于从一些个案上去捕捉信息了，或许就没有了赫德今日
之成就。
</p><p>　　马克·赫德抓住了惠普的灵魂。而他的前任卡莉却无意中伤了惠普人的情感和自尊。卡莉在自己的自传中描述，有一次，当管理层不能理解和
接受卡莉变革方案时，情急之下卡莉脱口说道："如果彼此间无法达成共识，今天就不准回去了。戴维·普卡德(创始人之一，1996年去世)无法从天而降来救
你们，你们躲避不了这场变革。"在那一刻受到伤害的肯定不止在场的几个高管，还要包括十几万惠普人。
</p><p>　　这是马克·赫德与<a href="http://wiki.mbalib.com/wiki/%E5%8D%A1%E8%8E%89%C2%B7%E8%8F%B2%E5%A5%A5%E8%8E%89%E5%A8%9C" title="卡莉·菲奥莉娜">卡莉·菲奥莉娜</a>的最大区别。聪明绝顶、世界知名的<a href="http://wiki.mbalib.com/wiki/%E5%8D%A1%E8%8E%89%C2%B7%E8%8F%B2%E5%A5%A5%E8%8E%89%E5%A8%9C" title="卡莉·菲奥莉娜">卡莉·菲奥莉娜</a>，忙于开阔视野高瞻远瞩，却没有时间和精力用情感去触摸惠普公司和惠普人；而朴实的马克·赫德，却能从普通人的情感出发，用做事的理性和对人的情感去把握一个事情的机会和可能。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=9" title="编辑段落: 赫德悖论二：">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E8.B5.AB.E5.BE.B7.E6.82.96.E8.AE.BA.E4.BA.8C.EF.BC.9A"></a><h3> 赫德悖论二： </h3>
<p>　　自以为第一等聪明的人，是世界上最笨的人；
</p><p>　　笨到绝顶见人就问的人，却是第一等聪明人。
</p><p>　　设想一个白丁和一个聪明绝顶的人到了一个陌生的区域，要到达一个指定的地方。那个一无所知的白丁，见人就问，或许中间有人指错路，但是
他有一种能够从零开始的精神，在不断地试错中会很快找到路向；而那个聪明绝顶的智者，不屑于见人就问，他只能找到与他身份相近的人探询，堕入"上智"的巢
穴，失去了跟每一个新发生接触的能力，从而沦为找不到路向的"下愚"。在先古时代，人们所接受的信息有限，或许那时"唯上知与下愚不移"。而于今世界都扁
平了，无论位置何等的尊贵与卑贱，可能接触的信息是相同的。捕捉不到关键信息，就有可能翻盘。
</p><p>　　马克·赫德对深入一线的效能坚信不移。在切入公司的最初4个月时间里，他<a href="http://wiki.mbalib.com/wiki/%E4%BC%9A%E8%A7%81" title="会见">会见</a>了成千上万名员工，也会见了成百上千名客户，也有近百个合作伙伴；他花很长时间了解惠普公司的市场，了解它的价值，以及了解它的产品及服务，更为重要了解这个公司的<a href="http://wiki.mbalib.com/wiki/%E8%B4%A2%E5%8A%A1%E7%8A%B6%E5%86%B5" title="财务状况">财务状况</a>。
在此基础上才形成了一个裁员1.5万人的重组计划。他认为，惠普这样规模的公司，最大的问题在于员工是否明白决策的背景。他一直以来的经验就是告诉员工全
部事实。他们是聪明的，他们完全知道什么是不对的，他们知道如何做得更好，他们知道什么事情效率最低，他们知道管理层对他们隐瞒了什么，他们知道一切。他
们不知道的就是全局。当他们通过面对面的交谈，得悉公司为什么做出一些决策，为什么在一些地方<a href="http://wiki.mbalib.com/wiki/%E6%8A%95%E5%85%A5%E8%B5%84%E9%87%91" title="投入资金">投入资金</a>，为什么我们在一些地方削减成本，会激发起他们的激情和智慧。交流得越多，员工的士气越高。越多地阐释公司所做的一切，他们就变得越有活力。马克坦承："让所有人明白你的决策是一个艰苦的工作，但我们很高兴去做这样的工作，我们的员工也同样兴奋。"
</p><p>　　一个人永远不会对所有事情都很有把握。真正的智者总是对未知事物有着很深的敬畏，在与人交流互动的过程中，不断地修正自己的判断。与惠
普人面对面的交流，使得赫德经历了不少令人十分欣慰的意外。他意外发现惠普的技术力量是那样雄厚，意外地发现公司上下充满活力，员工们努力改变的热情非常
高，顾客也很喜欢惠普产品。赫德来自一线的裁员1.5万人的重组方案，实施结果是个多赢的格局。大规模裁员没有出什么乱子，反倒把惠普人的心气给集拢起来
了，不能不说是个异数。 </p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=10" title="编辑段落: 赫德悖论三：">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E8.B5.AB.E5.BE.B7.E6.82.96.E8.AE.BA.E4.B8.89.EF.BC.9A"></a><h3> 赫德悖论三： </h3>
<p>　　一个逻辑非常清晰强劲的决策，最后可能荒唐透顶；
</p><p>　　而一个貌似愚蠢的决策，反而可能成为一个好决策。
</p><p>　　这个悖论在书本中不可思议，可是在现实中却时常出现。为什么？这里面有人的能动性。一个公司从顶端到底端，可能有6~30个层次。最高
层高瞻远瞩的决策背景，并不为下面的员工所理解。马克·赫德深知最大限度地跟员工分享信息的妙处。最大限度地把决策出台的背景和所要达到的目标跟一线员工
交流，不是作秀或走过场，而是马克·赫德不断试错求真的过程。在这样的背景下形成的决策，才能被不走样地执行下去。马克·赫德相信惠普的体系，但是又不能
对体系抱有幻想。作为最终对决策负责的人，马克·赫德清楚必须不停地保持一线鲜活的变化和动态，才能对决策的执行有个客观的判断。哪一个环节传达的稍稍走
样一点点，到了底层就会被无限度地放大，最后是决策执行面目全非。
</p><p>　　一把手深潜到一线上去，不只是能保证决策不走样，而且还会对中高层形成一道很强势的压力，容不得你偏离路径。人都有惰性，当大老板都
深入到第一线上去了，能够掌握一手的咨询，你不深入基层，你不比老板知道得更多，那将如何行事？这不是一个人的走向，而是一个体系的走向。这个体系是不是
从群众来，到群众中去，是不是能真正建立在每个人的基础上，关键看一把手是否能够深潜。通过深潜来启动每个人都是源头的体系，也就最大限度地提高了决策的
效率。
</p><p>　　中高层一般都喜欢CEO停留在上层。有了体系，最好不要来管自己分管的事，还要美其名曰信任。可是，这样的信任，是建立在人的惰性基
础上的。真正明事理的CEO决不会停步于此，还要更深入一些。一个体系就是这样活了，一个自下而上的体系就形成了。一般人都会说要建立自下而上的体系，可
是怎么建立？是停留在开誓师大会上，还是实现于现实的操作之中？这是最大的不同。叶公好龙，龙真来了，没有几个喜欢。因为深潜不是一件简单的事，要做很多
的准备，对许多事都要有具体的判断，还必须有闻过则喜的胸怀。身居高位，一般都会有许多盔甲，遮挡无数双眼睛的审视与扫描。一旦卸掉盔甲，会周身不自在。
应付一双眼睛的审视容易，应付不知来自何方的无数双眼睛的审视，就不容易了。不知什么时候，一个轻微的眼神或动作，都会招致属下负面的评判。与正面评价相
比，非议向来都有着更快更广泛的复制能力和速度。深潜过程中没有显示身份的机会，有的只是每天扒层皮的辛苦。没有两把刷子的一把手，不敢深入一线显示自己
的无知，他可以徘徊在会议中而不省人间事。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=11" title="编辑段落: 赫德悖论四：">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E8.B5.AB.E5.BE.B7.E6.82.96.E8.AE.BA.E5.9B.9B.EF.BC.9A"></a><h3> 赫德悖论四： </h3>
<p>　　CEO一旦启动民主，往往会遭遇莫衷一是的尴尬；
</p><p>　　而一旦跌进唯我独尊的怪圈，或可能把公司带入绝境。
</p><p>　　民主与独断是围绕着做企业的众多悖论之一。做企业既需要有众人拾柴火焰高的热劲，可是一旦一个公司的CEO到处发扬民主，又会遭遇缺乏
独立判断能力的批评，而且这样的公司多数都竞争力下降；做企业又需要仰仗乾纲独断的果决，可是一个唯我独尊的独裁者，常常会把公司带向绝境。
</p><p>　　有些企业经历不是很厚实的专家学者，很容易举起"民主"这个法器。在他们的想象中，一个讲究民主管理的公司是理想模式。可是现实却不
接受这样美好的愿望。现实中，无论是中国公司还是外国公司，无论是国有企业还是民企，举凡有所成就的公司，往往有一个乾纲独断的领军人物。反之，凡是形不
成一个中心的组织，凡是缺乏一个人独立承担责任的公司，其竞争力往往大打折扣。民主与独断这两个维度的力量，常常被视为水火不容，是非此即彼的两种力量。
</p><p>　　卡莉的失利有许多解释，但是过于自信的乾纲独断，对下属的<a href="http://wiki.mbalib.com/wiki/%E6%89%A7%E8%A1%8C%E5%8A%9B" title="执行力">执行力</a>彻底绝望，对自己战略路线的正确性毫不怀疑，怕是造成被舍弃的重要因素。马克的成功又有许多说法。最通常的说法是，只不过他延续了卡莉的路线和战略，马克的胜利应该是卡莉的胜利。可是卡莉的战略在卡莉手里却是四面楚歌，在马克手里却是披荆斩棘。为什么？
</p><p>　　民主与独断这两个维度的力量对于一个成功的企业来说，缺一不可。它们交融平衡的方式，决定了一个企业的前程。
</p><p>　　独断专行常常能够找到雄辩的论据。<a href="http://wiki.mbalib.com/wiki/%E3%80%8A%E5%9F%BA%E4%B8%9A%E5%B8%B8%E9%9D%92%E3%80%8B" title="《基业常青》">《基业常青》</a>作者<a href="http://wiki.mbalib.com/wiki/%E5%90%89%E5%A7%86%C2%B7%E6%9F%AF%E6%9E%97%E6%96%AF" title="吉姆·柯林斯">吉姆·柯林斯</a>曾被媒体追问，世界上什么样的组织最没有效率？面对记者，柯林斯停了一下说： "假如组织里的成员都有CEO的潜力，又不甘于现在这份工作，那你一定问题大了。"被誉为人性大师的<a href="http://wiki.mbalib.com/wiki/%E6%9D%B0%E5%85%8B%C2%B7%E9%9F%A6%E5%B0%94%E5%A5%87" title="杰克·韦尔奇">杰克·韦尔奇</a>，说得更为直白："企业里有一种人是绝对不能用的，就是有经验、有能力、有贡献、也有威信，但就是不认同<a href="http://wiki.mbalib.com/wiki/%E4%BC%81%E4%B8%9A%E6%96%87%E5%8C%96" title="企业文化">企业文化</a>。"韦尔奇没有明说，企业文化说穿了就是一把手的思维因果逻辑。与一把手的思维逻辑有矛盾的人，再有能力也不适于启用。故此，当韦尔奇最后选定<a href="http://wiki.mbalib.com/wiki/%E4%BC%8A%E6%A2%85%E5%B0%94%E7%89%B9" title="伊梅尔特">伊梅尔特</a>为接班人后，就毫不含糊地辞退另外两个十分优秀的候选人。不管他们在<a href="http://wiki.mbalib.com/wiki/GE" title="GE">GE</a>已经服役多少年，不管他们对GE有多么深厚的情感。韦尔奇有一条原则很坚决：一个公司不能出现第二中心。
</p><p>　　每个人都是源头的民主更符合<a href="http://wiki.mbalib.com/wiki/%E6%96%B0%E7%BB%8F%E6%B5%8E" title="新经济">新经济</a>的大势。互联网改造了世界，形成了一片大家都比较陌生的新大陆( 9.29,-1.01,-9.81%)。这个新大陆的实质是：今后推动世界运转的，不再是国家之间或企业之间的竞争，而是个体之间的竞争。优秀个体之间的竞争转瞬之间便能改写世界地图。<a href="http://wiki.mbalib.com/wiki/%E5%A4%A7%E5%89%8D%E7%A0%94%E4%B8%80" title="大前研一">大前研一</a>更做了一个重要的预言："专家阶层的实力迟早会增强，并动摇产业界！"商业专家善于用理性和情感去触摸客户的真实问题，具有永不厌倦的好奇心和<a href="http://wiki.mbalib.com/wiki/%E8%BF%9B%E5%8F%96%E5%BF%83" title="进取心">进取心</a>，
能够找到问题的解决办法。专家有两类：一是有胆识的战略专家；二是有突破能力的业务专家。成功以后，企业家是否能够把握新大陆的本质规定性，坚定不移地把
自己和企业放在专家的基础上，依靠业务专家的突破和战略家的胆识，把握住转瞬即逝的机会，这才是在新大陆上企业做强做大的真正秘诀。在这样的大背景下，强
调每个人都是源头，发挥每个人的主动性和能动性，成为一个企业竞争力强弱的重要分界。 </p><p>　　马克·赫德不是惠普的原始股东，也没有在惠普扎根几十年的情感。惠普公司董事会则以很开阔的平台和优厚的经济报酬把两者的距离拉近。900多亿美元大公司的历史创造和2000多万美元的综合年薪，足以让马克·赫德把自己个人利益统统调动到实现公司本体利益之上来。
</p><p>　　真正有作为的企业家，首先是解决了个人与公司利益一致性的。这种一致性一旦解决，民主与专断的问题，"上智"与"下愚"的问题，以及决
策清晰与执行荒唐的问题，就迎刃而解了。一个人决策的资源可以是无边界的，但是决策的责任和后果却是不能旁置的。也只有眼睛一直盯着公司的整体目标，才会
淡化"上智"与"下愚"的界线，在不断的转换交流中远离"下愚"。
</p><p>　　马克·赫德的企业方式之所以取得成功，就在于他不是一个政客化的企业家，他能很深地切入企业家这个专业，始终从公司运营的本体出发，观察事物、把握真实问题，以回归零的心态和力量，寻找切实可行的路径。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a href="http://wiki.mbalib.com/w/index.php?title=%E9%A9%AC%E5%85%8B%C2%B7%E8%B5%AB%E5%BE%B7&amp;action=edit&amp;section=12" title="编辑段落: 马克·赫德的语录">编辑</a>]</div><a href="editor-content.html?cs=utf-8" name=".E9.A9.AC.E5.85.8B.C2.B7.E8.B5.AB.E5.BE.B7.E7.9A.84.E8.AF.AD.E5.BD.95"></a><h2> 马克·赫德的语录 </h2>
<ul><li>好的公司要么善于增长，要么精于效率，要么取胜于资本市场。而伟大的公司则在于这三者都成功。（2005年）
</li><li>我不介意拿我和卡莉女士作对比，但我现在的工作重点，是着眼未来而不是过去。（2005年）
</li><li>我选择人才的标准，是看这个人是否有非常强的<a href="http://wiki.mbalib.com/wiki/%E9%A2%86%E5%AF%BC%E5%8A%9B" title="领导力">领导力</a>，是否有非常大的工作动力和积极性，更重要的是他要有非常强的执行能力，要把事情做成。否则一切都是空洞的。（2005年）
</li><li>惠普是正在转型中的公司，而不是已经转型的公司。（2007年）
</li><li>对于惠普而言，我们并不热衷于成为市场上的第一，我们更着眼于做好我们的基础工作。（2007年）
</li><li>越来越多的企业使用开放的系统，而开放的系统又更多的采纳业界的标准，而且目前这一趋势是在不断的加速。
</li></ul><br />--------------------------------------------------------------<br />作为美国最有影响力的媒体之一，《财富》(Fortune)杂志在将<a href="http://eblog.chinabyte.com/hp/" class="fllink" target="_bank">惠普</a>公司评选"2008年全球最受推崇企业"之后，《财富》杂志又在3月7日高度称赞惠普CEO 马克·赫德 （<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>），称他可能是当今美国最优秀的公司管理者之一。
<p>&nbsp;&nbsp;&nbsp;&nbsp; 该报道"惠普CEO <b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>可能是当今美国最优秀的公司管理者之一"，原文如下：</p>
<p>　<strong>　2009年世界上最受推崇的公司</strong></p>
<p><strong>　　<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的光辉时刻</strong></p>
<p align="center"><img src="http://images.businessweek.com/ss/08/01/0102_bizpeople/image/mark-hurd.jpg" /><br />惠普CEO <b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b></p>
<p>　　他孜孜不倦地追求盈利数字和执行能力的提升。换句话说，惠普CEO <b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>是在经济衰退时期经营公司的合适人选。但是他是一名经得起时代考验的CEO吗?</p>
<p>　　家住加利福尼亚的<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>每天早上4:45肯定会准时醒来，根本不用闹钟。根据<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的观点，在这个时间东部时区的竞争对手应该早就投入了工作，试图抢占先机 -- <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>用比较委婉的措辞暗示了竞争对手用来打击他的可能手段，这促使他天没亮就赶紧从床上爬起来了。这便是全球最具竞争力的首席执行官的思维方式。在成为<a href="http://product.yesky.com/pc/" class="fllink" target="_bank">电脑</a>销售员之前，<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>曾
是一名出色的大学网球选手，他酷爱数字，却极其厌恶聚光灯。在出任惠普CEO的四年时间里，他带领惠普从被许多大企业踩在脚下的小角色发展成为当前世界上
最大的技术公司，而且还是最受推崇的公司之一(位于第30位)：惠普2008年的收入高达1180亿美元，远远超过竞争对手IBM的1040亿美元。然
而，惠普不只规模最大，而且已然成为业界的效率基准，不仅运营能力非常出色，产品的吸引力更是有口皆碑。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>来
惠普之前只是美国中西部小型ATM制造商NCR的CEO，他于2005年4月刚来硅谷时非常不被看好，但惠普却在他的带领下发展成了一个拥有
321,000名员工的大型企业。加拿大蒙特利尔银行的安全分析师Keith Bachman十年前曾就职于惠普战略规划部门，他对<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的评价是："他是一个务实的实干家，办事能力让人敬佩不已。在我认识的所有高管中，他是最会节省系统成本的一个。"</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>有关成本节省的决策可以帮助惠普成功度过这次经济危机，甚至继续提高盈利。惠普最近预测它在2009年的销售额将下降5%，而<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>却
仍计划将盈利提高将近6%。他计划利用公司的财务优势收购其它公司 --
资产负债表显示惠普仍有110亿美元的现金可用，例如惠普在2008年斥资130亿美元收购了规模很大但根基不牢的信息技术咨询公司EDS。他还提出这样
一种愿景，既推出全面的产品和服务，确保客户无需再从其他厂商那里购买计算、打印和技术服务产品。上一任CEO Carly
Fiorina在惠普广度和深度拓展方面的成就为<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的计划奠定了良好的基础。正是Carly Fiorina在2001年发起了轰动业界的Compaq收购活动。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>利用他的高效率将惠普与Compaq合并后的优势完全发挥出来，至今为止尚未因为经济不景气而裁掉一名员工。然而，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>刚刚接任CEO后便大刀阔斧得进行裁员，坎掉了15,200个职位，约为总数的10%，当时还是在经济较繁荣的时期。(当然当前的惠普员工并不是一点压力以没有：大多数惠普员工的基本薪资都有所减少，包括<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在内。)"我们认为先解雇老员工然后再立即招聘新员工将会耗费大量成本，而且风险非常高。"<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>表示, 他目前并没有任何裁员计划,但如果经济继续下滑他将不排除实施"劳动力优化"方案。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在
交叉分析方面的能力极为出色，具有非常强的控制欲，然而现年52岁的他仍无法证明自己是一个杰出的建设者。他在出任惠普CEO一年后便稳固了惠普的地位，
但也是从那一刻起他便一直承受相关人士关于他无法胜任建设者角色的指责。惠普曾经是最具创新精神的大型技术公司之一。现在，除了盈利停止增长的打印机产品
组合之外，惠普大多数<a href="http://product.yesky.com/diy/" class="fllink" target="_bank">硬件</a>采用的都是行业标准技术。(阅读：Microsoft<a href="http://product.yesky.com/software/" class="fllink" target="_bank">软件</a>和
Intel芯片。)如果这种状况一直持续下去，随着时间的流逝，惠普的增长速度将只能达到业界的平均水平，而且降低成本也会成为惠普提高利润率的唯一途
径。与之形成鲜明对比的是惠普在Palo
Alto的邻居兼竞争对手Apple(在世界上最受推崇的公司中排名第一)，Apple将以目标市场为中心的创新和高度可预测的运营紧密地结合在一起。哈
佛商学院教授Michael
Tushman的研究验证了压力对创新的负面影响，他指出："一味追求效率也会产生严重的负面影响。在大多数总经理的心目中，当前的确定性远远胜过未来的
不确定性。"</p>
<p>　　如果说<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>是
一名只会节约成本的管理者未免有失偏颇，不过他确实是一个顽固的左脑思考者。他自己会制定一张表格，记录和分析他一天的工作。正是这种强迫性让他成为经济
困难时期的理想CEO人选。不过，他是否能够成为经得起时代考验的CEO还要看他懂不懂得重用和激励公司内的右脑思考者。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>非常具有影响力，他不断向公司员工灌输高效运营的思想。对于销售人员来说，2月中旬的某个星期天是一个神圣的日子：NBA全明星比赛在凤凰城美国航空中心隆重举行。正好借此机会好好感谢全球各地促成大量惠普销售的有功人员。现在，这一尽情呐喊和一睹<a href="http://product.yesky.com/edict/mingren/" class="fllink" target="_bank">名人</a>风采的盛事已结束几个小时了，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>和他的客户在场地附近的无窗舞厅内交谈了近两个小时。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>正在向他们介绍如何像惠普一样彻底改造自身的企业。参加这次会谈的都是惠普图片<a href="http://product.yesky.com/office/" class="fllink" target="_bank">印刷产品</a>的购买者，包括American Express和DirecTV这种大型企业以及像直邮印刷公司Amazingmail.com这样的小公司。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>向
这些高管人员解释说，惠普将它在全国范围内所使用的软件应用数量从6,000缩减为1,500，并且对数据中心(即用来存放技术基础设施平台的电脑仓库)
进行了整合，从85个减少为6个。。此外，惠普IT部门从19,000人缩减为8,000，这样公司便能够利用节省出来的资本雇佣更多的销售人员。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>向
IT经理们传授自己的经验，他认为，如果惠普客户也能够精简自己的企业，那他们将成为战胜经济危机的英雄人物。这时有人指着惠普销售高管Monte
Rector问道："如果Monte希望配置属于他自己的CRM系统，您会如何处理?"(CRM指能够追踪记录销售团队业绩的客户关系<a href="http://soft.chinabyte.com/gjrj/" class="fllink" target="_bank">管理软件</a>。)技术高管几乎每天都会遇到经理人们对他们提出类似要求，希望能够获得可正常工作的设备。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的回答明确地向大家传达了这样一个讯息：惠普花费了很多人力物力才为整个公司选择了一个CRM系统，将不会再去满足额外的技术要求。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的原话是："如果Monte希望拥有他自己的CRM系统，而且已经采取行动了，那么Monte以后都不会再出现在惠普。"听到这一回答，大家都不仅笑出声 -- Rector也很理解。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>这样宣传减少技术设施的使用似乎不合常规。为什么惠普说服客户减少使用他们销售的产品反而还会获益呢?事实上，这一强制措施充分发挥出了惠普和<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的优势。这是提高效率的最佳方案：当您学会了利用更少的资源完成更多的任务之后，您从惠普获得的东西可要远远多于您实际购买的产品，而且惠普自己也在实施硬件整合。与平白的陈述相比，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>更喜欢拿数字说话，他指出惠普的运营利润已从2005年的4%提升到去年的8.8%。在经济发生翻天覆地的变化之前，惠普的股票价格也很好地反映了<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>取得的成就：<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>刚刚接任CEO一职时惠普股票价格只有20美元，而到2007年底已超过53美元。(2月中期，在惠普宣布打印机和电脑业务的收入下降之后，其股票价格下跌了14%，变为29美元。)</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>对数字的执着追求影响了惠普其他的管理人员。惠普30亿美元软件业务的负责人Tom Hogan说，三年前<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在雇用他时对他的要求非常简单："他说，'大多数软件业务可获得20%的利润。现在我们的资金不断流失。我希望你能够改变这一现象，100天后带着一份扩展计划再来见我。'"思考过<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的
意图后，Hogan提出调查业界在软件业务领域的研发支出标准。惠普的软件研发支出占收入的22%之多，而竞争对手则只有15%。之后，Hogan便在惠
普大展拳脚。(2008年惠普软件部门赢得了15%的利润，所以他们还需要进一步努力。)以前软件厂商Mercury Interactive的CEO
tony Zingale回忆说，当时他与<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>约定就Mercury收购事宜进行初次会面(最终惠普在2006年以49亿美元的价格收购了Mercury)，还在路上便接到惠普首席战略和技术官Shane Robison的<a href="http://product.yesky.com/telephone/" class="fllink" target="_bank">电话</a>："我希望您对贵公司的损益表非常了解，<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b>很快就会谈到这个问题。"(Zingale说，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>确实很快就进入了那个话题。)</p>
<p>　　在<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>看来，最重要的是灵活运用数字，因此，即便是图文并茂的幻灯片亦在他的禁忌之中。Marius Haas是刚刚成立的<a href="http://product.yesky.com/pc/hp/" class="fllink" target="_bank">惠普电脑</a>网络部门的负责人，他回忆说："2008年，向董事会演示的幻灯片中包括一些管理咨询人员经常使用的哈维球(Harvey Balls)和饼图。但是，<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b>不喜欢这些幻灯片，他在演示过程中没有使用哈维球。他只愿意看到数字。"</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的这种务实风格是由美国中西部居民的价值取向所致。他在位于戴顿市(Dayton)的NCR总部工作了17之久。宝洁公司CEO A.G.Lafley说："我和<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b>都是实干家(rack-and-stack)。我们会面时，既没有闲聊，也没有热身谈话，而是直接切入正题。"然而，这种简单表象背后却隐藏着更加复杂的真实生活。事实上，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>出生于纽约上城东区，他的父亲毕业于耶鲁大学，是有名的金融家，他的母亲是一名医师的女儿。(<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的父母在1950年《纽约时报》上刊登的结婚通告说："她是通过她父母在Waldorf-Astoria为她举办的晚宴正式走进社交界的，在这之前，她还没有参加过初次社交舞会和圣诞节舞会。)<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>与他的父亲都曾就读于久负盛名的纽约市布朗宁男校(Browning School)。摩根大通现任CEO Jamie Dimon是<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在这所学校的同学，据他回忆，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在七年级时是一个不错的篮球队员，之后，他随父母搬到了迈阿密，就读于Archbishop Curley圣母高中，他在那里开始展现出他的网球天赋。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的大学时光是在贝勒大学渡过的。贝勒大学位于美国德克萨斯州韦科，是一所私立大学，同时也是全世界最大的浸信会大学，那里每周举办一次礼拜，要求大学一年级的学生必须准时参加。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的多才多艺通常体现在计算机硬件方面，其实，这种天分早在<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>年轻时就已体现得淋漓尽致了。Carl Good是<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在贝勒大学的双打队友，同时也是兄弟会的一员，他说："<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>是我知道的第一个在击中球时会像猪一样大叫的网球队员。"很久以前，专业网球队员在球场上制造这种噪音是十分常见的。"起初，我会问'你在干什么?'之类的问题。但是，我又想，这可能正是他集中注意力的秘诀。尽管有些队员梦想自己有一天会成长为专业网球队员，但是<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>一直希望能在一家公司里谋份职业。"</p>
<p>　　1980年，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的梦想终于实现了。他成功加入了NCR，在达拉斯做一名初级销售人员。八年过后，他被调配到戴顿，在那里完成18个月的定额销售。最后，他不但成功坚持下来，并且得到了快速升迁的机会。得益于早年在网球队打球的经历和担任营销主管制定重要决策的经历，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在职场上叱诧风云，尽职尽责，在2001年被任命为NCR的总裁，在2003年接任CEO一职。"在对待员工方面，我们鼓励员工承担责任。"NCR前任CEO Gilbert Wil­liamson这样说。"据我所知，每次我们把难以处理的任务交给<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b>，他都能成功完成。因此，我们就提拨他，他依然能够承受巨大的压力。"</p>
<p>　　尽管现在的NCR与过去相比没有太大的变化，但当年<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>加
盟时，NCR却是美国老牌大公司的佼佼者。他说，NCR有自己的做事方式，正因为如此，我才能胜任我现在的工作。"我从NCR学到的最重要的东西就是纪
律，"他说，"没有CFO给我们制定损益计划。我必须从毛利润和运营成本这两个方面来描述我的业务。你随时都要保持警惕。"<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>接到惠普招聘人员打来的电话，了解了他即将接替于2005年二月被解聘的惠普CEO Fiorina之后，他马上研究了惠普的财务状况，并飞往旧<a href="http://eblog.chinabyte.com/kingsoft/" class="fllink" target="_bank">金山</a>与惠普董事会成员组成的甄选委员会见面。"他走进来说，'Ok，这是你们的问题，这是解决问题的方案，'"风险资本家、前任惠普执行官、现在是退休的惠普董事会成员Tom Perkins说，"他说的很对。我在甄选委员会时，面试了很多人。但是，<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b>最终脱颖而出。"</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>很快证明了他既是一位精明的企业高管，又是一名尽职尽责的项目管理者。惠普简化了Fiorina的销售团队，调整了主要业务的报告结构，废除了象征性的项目，例如惠普销售贴有惠普牌子的<a href="http://eblog.chinabyte.com/apple/" class="fllink" target="_bank">苹果</a>iPod。在<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的带领下，惠普也调整了它的营销方案，在业界掀起了一场PC个性化营销<a href="http://eblog.chinabyte.com/langchao/" class="fllink" target="_bank">浪潮</a>，以满足人们追求个性化和时尚化的需求，例如与时尚设计师Vivienne Tam和雪板高手Shaun White合作。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>留
用了两名内部CEO候选人，他们分别是惠普图像和打印集团总经理Vyomesh Joshi和惠普全球产品技术及专业服务集团执行副总裁Ann
Livermore女士，同时还聘任了一名外部候选人，即PalmOne的前任CEO Todd Bradley，让他负责运营尚处困境的PC部门。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>很快了解了PC部门的方方面面，并经常亲自深入各个管理层，与管理人员进行剑拔弩张的谈话，这就是众所周知的"<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b> Reviews"。</p>
<p>　　惠普员工认为<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>是
一位严格、精明的领导。"你是谁，你能否与他友好相处，或者你有怎样的脾气秉性，这些都不重要。"Opsware前任CEO Ben
Horowitz说。(惠普于2007年花17亿美元收购了Opsware。)"如果你能够从你的业务中挖掘最大价值，你就是他的朋友。"但是<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>会把那些他认为不能胜任人裁掉。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>喜欢用语音邮件与员工交流，这比面对面的交谈更有效，并且他会在极短的时间内连珠炮似地发问。如果<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>对某人的工作不满意，他会公然批评，这样，每个人都会知道他生气了。"你会感觉好像有好多堵墙正在向你压过来。"一位曾经被<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>批评过的主管人员说。</p>
<p>　　在加入惠普的前几年，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>一
直都很低调，同事们认为他是忙于工作，还经常称他为"反卡利(anti-Carly)"。他从不参加达沃斯经济论坛，不接受Business
Roundtable的访谈，也很少在消费电子产品展览上发表主题演讲。他在聚光灯下的经历并不光彩：他被国会议员当众质问，他在惠普使用托辞手段调查是
谁将公司内部信息透漏给新闻媒体这一事件中扮演了怎样的角色。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>加入惠普时，"托辞"调查已经开始，他认为这是一次不合常规的事件。他成功证明了他是无辜的，并继续担任董事会主席。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>不
是一个畏首畏尾的人。私下里，他喜欢社交，喜欢用他那沙哑的声音津津有味地讲述奇闻趣事，每当这时候，他都会滔滔不绝。他拥有惊人的记忆力，善于引证财务
报表上的数字，引用长长的电影台词(最喜欢的电影有《animal
house》和《gladiator》)，或者三十年前举行的大学橄榄球联赛中的某场比赛。NCR的前任CEO Lars Nvberg既是<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的前辈，也是<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的良师益友，他说："他讲得不错。唯一的问题是，他每次都会把故事改编一下。"然而，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在公开场合会始终坚持使用完全相同的手稿，这实在是令人发狂。总之，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>不愿在公开场合露面，这与他的前任毫无关联。"在我职业生涯的初期，我就总结了这样一条生活原则：公司第一，员工第二，自己永远排在最后。"他说。"如果这个顺序颠倒了，那结果肯定非常糟糕。"</p>
<p>　　事实证明，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>用
一个电子数据表来管理他的时间，他可以准确说出他分别与员工、客户、股东共同度过了多长时间。实际上，他会亲自进行市场调研，他知道这个客户属于哪个细分
市场，那个客户属于"总体可用市场"的哪一部分。他说："关键是留心最珍贵的资源。我的时间非常有限。"他不读书，他一生中只打过三四次高尔夫，他利用几
乎全部的闲暇时间打网球，看体育比赛或电影，甚至是待在家里。由于他拒绝与凤凰城的客户一起观看NBA全明星赛，而使这些客户感到万分沮丧。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>说："我有家庭。"</p>
<p>　　但是，客户仍然能感受到<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>给予的关爱。"他谦逊、温和、务实，甚至有点害羞，"梦工场动画制作公司CEO Jeffrey Kat-zenberg说。这家公司采用惠普设备构建了数字演播室。"但是，当你与他谈论他的业务时，他却激情洋溢。"<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>也是一位非常体贴的人。美国保险商实验协会首席信息官Christian Anschuetz说，当他得到一份新工作时，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>会立刻向他表示祝贺。"他的响应能力如此之快是有目共睹的。我有两个大的<a href="http://soft.chinabyte.com/xxhdq/" class="fllink" target="_bank">外包</a>合同，准备以招标的方式找到合作伙伴。我敢打赌，中标的肯定是惠普。"</p>
<p>　　当<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b> <b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>讨论复杂的话题时，总会使用一块活页纸板，这也是每次会议所必不可少的工具。2月初，公司在palo alto总部召开了一次关于研发方面的会议。拥有一副运动员体格的<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>身着一件海军外套，只见他从座位上站起来，紧了紧衣服上的钮扣，拿起一支毡制粗头笔，开始在纸板上记录要讨论的要点。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>
表示"研发对于一个企业来说至关重要，这里的人都很喜欢告诉我惠普在研发方面花了多少多少钱。"他接着与一名惠普研究人员开玩笑说："你知道吗，Bill
Hewlett从天堂打电话了，命令我们在研发方面加大投入。我与你们一样，也很希望按照他的命令办事，但在这之前，我们有几个问题需要慎重考虑。"</p>
<p>　　玩笑归玩笑，但是在惠普，研发确实是一个颇具争议性的话题。尽管在外界看来，惠普实验室的威望还比不上贝尔实验室和施乐帕克研究中心，但是这支由Bill Hewlett和Dave Packard一手打造的研发团队发明了全球第一款袖珍计算器和<a href="http://product.yesky.com/inkprinter/" class="fllink" target="_bank">喷墨打印机</a>，
我们对于世界的贡献同样功不可没。对于技术公司而言，仅凭出色的运营不足以确保成功，但是4年来，惠普在研发领域的支出一直维持在35亿美元左右，并无明
显的投入增加。因此，随着惠普销售额的增加，研发费用占销售收入的比例不断下降。2005年，这一比例为4%，去年更是下滑至3%。相比之下，IBM去年
在研发方面的投入为63亿美元，占整个销售额的6.1%。<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>曾满怀热情，立志将惠普打造成一家更加成功的公司，但这样做是否有杀鸡取卵之嫌?</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>则
认为，上面的说法过于简单和片面。他表示，根据公司调查，大部分研发支出其实都用在了维护方面，目的是确保现有技术的生命力得以延续。
我们要削减这一方面的支出，而不是纯研究方面。为了向研究人员灌输这一理念，2007年，他委任学院派出身的Prith
Banerjee来掌管惠普实验室。Banerjee上任后对实验室的项目进行了浓缩和优化，重点关注与惠普当前的业务息息相关的8个课题。
Banerjee表示，我这样做是贯彻了<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的精神，他"始终坚信惠普是一家技术公司。"</p>
<p>　　虽然<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>对结果十分注重，但有时候，惠普不会为了瘦身或保持较高的效率，而停止对技术进行改进，或放弃潜在的收入机遇。例如，惠普在软件方面对<a href="http://eblog.chinabyte.com/microsoft/" class="fllink" target="_bank">微软</a>的
依赖程度较大，这种战略具有一定的局限性。惠普曾一度发展智能电话业务，但是这项业务目前已经开始亏损，而苹果公司的iphone则呈现出迅猛的发展势
头。惠普差在哪里?惠普设计的电话需要微软的Mobile软件，而苹果公司则针对其iPhone产品开发了一套易于使用的新平台。个人电脑业务方面的负责
人Todd Bradley表示，借助公司最新开发的QuickPlay技术，电脑无需启动Windows即可播放电影。当然，如果微软的<a href="http://soft.chinabyte.com/czxt/" class="fllink" target="_bank">操作系统</a>不
是那么繁琐，QuickPlay也就没有用武之地了。惠普最大的收入来源是通过收购实现的，例如通过收购进军商用打印领域-但是这些交易对于公司的创新似
乎作用不大。EDS的收购预示着惠普正在追赶服务领域的领先企业-IBM，但是在软件占收入的比重方面，IBM远远高于惠普(21%对3%)，而且利润也
高出48%。另外，这也为IBM的带来超出440亿美元的市场价值。</p>
<p>　　对于<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>来说，将惠普打造成产品主导型(product powerhouse)企业不是他的风格。Robert Burgelman是一名来自斯坦福商学院的教授，他对<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>自上任惠普以来的表现进行了观察和研究。他表示"<b style="color: black; background-color: rgb(255, 255, 102);">Mark</b>擅长的是帮助人们发现并充分利用潜在的商业机遇。他不会告诉员工我们要开展哪个项目，而是帮助他们更有针对性地思考我们所处的商业环境。"另外，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>还鼓励员工进行创新，以便缩小与IBM在市值方面的差距。</p>
<p>　　直到现在，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>一
直奉行自加入惠普以来所抱有的理念：我们的商业模式仍然过于复杂。也就是说，他希望对公司进行进一步的简化，这一点从完成对EDS的收购就可见一斑。基于
EDS糟糕的业绩，投资者在一年前对于这笔交易都不看好。而到今天，惠普在两个方面获得了立竿见影的优势。首先，eds在<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>的带领下重新焕发了活力。其次，为惠普带来巨大优势的技术咨询业务呈反经济周期态势蓬勃发展：公司推迟硬件采购计划，同时购买更多的服务来维护现有的产品。</p>
<p>　　<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>在11月份与投资者召开的电话会议上表示，"伟大的公司在艰难时期的表现同样非凡，而客户在艰难时期往往也会首先想到伟大的公司。"随着全球经济的不断恶化，<b style="color: black; background-color: rgb(160, 255, 255);">Hurd</b>不断思考和调整公司的定位，带领公司在一次次的竞争中获得胜利。他还指出，"伟大公司的评判标准是其在这种环境中的具体表现，以及困难过去后是否能够变得更强"。好的CEO会经常因为思考这些问题而夜不能寐-或者至少在早晨4:45就会醒来。</p><p>------------------------------------------------------</p><p><a href="http://www.hp.com/hpinfo/execteam/bios/hurd.html">HP公司</a>这样介绍这位CEO：</p><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td align="left" valign="top" width="370"><h2 class="bold">Mark's biography</h2></td>
				</tr>
				<tr>
					<td class="theme"><img src="http://welcome.hp-ww.com/img/s.gif" alt="" height="4" width="1" /></td>
				</tr>
				<tr class="decoration">
					<td><img src="http://welcome.hp-ww.com/img/s.gif" alt="" height="10" width="1" /></td>
				</tr>
				<tr>
					<td>


<p>Mark Hurd joined HP in early 2005 as chief executive officer and
president and was named chairman of the board of directors in September
2006. </p>
<p>With the goal of establishing HP as the world's leading technology
company, Hurd has sharpened HP's strategic focus and concentrated its
investments on three long-term growth opportunities: next-generation
enterprise data center architecture and services; technologies for
always connected, always personal mobile experiences; and a broad
transition from analog to digital imaging and printing across the
consumer, commercial and industrial markets. </p>
<p>At the same time, Hurd has improved HP's operating efficiency and
execution as well as its financial performance and customer focus. The
result has been increasing growth and profitability, greater value for
shareholders and customers, and a stronger competitive position in
global IT markets. Between the company's 2004 and 2008 fiscal years, HP
grew revenue from $80 billion to $118.4 billion and more than doubled
its earnings per share. </p>
<p>Prior to joining HP, Hurd spent 25 years at NCR Corp., where he held
a variety of management, operations, and sales and marketing roles. He
was named chief operating officer in 2002 and chief executive officer
in 2003. Under his leadership, NCR reignited growth in its core
businesses and improved from a net loss of $2.25 per share in 2002 to
net income of $3.03 in 2004. </p>
<p>Hurd is additionally a member of the News Corp. board of directors. 
</p>
<p>He earned a bachelor's degree in business administration in 1979 from Baylor University.
</p></td></tr></tbody></table><br /><br />]]>
      
   </content>
</entry>

<entry>
   <title>Oracle Kernel Layer &amp; ORA-600 Code Info</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/08/oracle_kernel_layer.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2362</id>
   
   <published>2009-08-07T08:22:19Z</published>
   <updated>2009-08-07T08:27:13Z</updated>
   
   <summary><![CDATA[原文地址： http://oracle.chinaitlab.com/serial/38969.htmlProblem Description:==================== &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORA-600 errors are internal exceptions handled by the RDBMS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel.&nbsp; They consist of multiple arguments, the first of&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; which is an identifier.&nbsp; The identifyer ranges from 1 to 32767.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Currently Oracle8 uses up to 20000 for...]]></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="5" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      <![CDATA[原文地址： http://oracle.chinaitlab.com/serial/38969.html<br /><br /><p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">Problem Description:<br />====================<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORA-600 errors are internal exceptions handled by the RDBMS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel.&nbsp; They consist of multiple arguments, the first of<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; which is an identifier.&nbsp; The identifyer ranges from 1 to 32767.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Currently <a class="channel_keylink" href="http://oracle.chinaitlab.com/serial/38969.html" target="_blank">Oracle</a>8 uses up to 20000 for exceptions.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">Problem Explanation:<br />====================<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OSS has provided an internal index of ORA-600 errors since<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version 7.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">Problem References:<br />===================<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Indexes exist for versions 7.2.2 and 8.0.3.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">Author:&nbsp; Richard Ware<br />Created: November 06, 1996<br />Updated: November 06, 1998<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">NOTE: | = new file for <a class="channel_keylink" href="http://oracle.chinaitlab.com/" target="_blank">Oracle</a> 8.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORA-600 BASE INTERNAL ERROR INDEX<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RDBMS VERSION 8.0.5<br />&nbsp; 1st<br />Argument&nbsp;&nbsp; Module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SERVICE LAYER COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[&nbsp; 1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Component notifier.<br />[1XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Debug internal errors.<br />[2XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksdp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Debug Parser.<br />[3XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kse.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Error manager.<br />[5XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service layer Latching &amp; Wait-post Implement.<br />[7XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Memory component implementation.<br />[9XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service layer system Parameters component.<br />[110X]&nbsp;&nbsp;&nbsp;&nbsp; kgg.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Generic lists.<br />[111X]&nbsp;&nbsp;&nbsp;&nbsp; kgss.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Service State object manager.<br />[115X]&nbsp;&nbsp;&nbsp;&nbsp; ksq.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service enQueues.<br />[119X]&nbsp;&nbsp;&nbsp;&nbsp; ksi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service layer Instance locks.<br />[12XX]&nbsp;&nbsp;&nbsp;&nbsp; ksu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service User management.<br />[13XX]&nbsp;&nbsp;&nbsp;&nbsp; ksucln.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service User management CLeaNup process.<br />[14XX]&nbsp;&nbsp;&nbsp;&nbsp; ksa.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Asynchronous messages.<br />[15XX]&nbsp;&nbsp;&nbsp;&nbsp; kkxwtp.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation pl/sql Compiler.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kpor.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel KPO RPC callback for streaming.<br />[16XX]&nbsp;&nbsp;&nbsp;&nbsp; ksb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Background processes.<br />[17XX]&nbsp;&nbsp;&nbsp;&nbsp; ksk.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service license Key component.<br />[18XX]&nbsp;&nbsp;&nbsp;&nbsp; ksim.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Instance Manager (registration).<br />[185X]&nbsp;&nbsp;&nbsp;&nbsp; ksfh.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Service File i/o Helper component.<br />[186X]&nbsp;&nbsp;&nbsp;&nbsp; ksfq.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Service seQuential File i/o interface.<br />[19XX]&nbsp;&nbsp;&nbsp;&nbsp; ksfv.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Service File i/o serVer component.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CACHE LAYER COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[20XX]&nbsp;&nbsp;&nbsp;&nbsp; kco.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Op(erations).<br />[21XX]&nbsp;&nbsp;&nbsp;&nbsp; kcc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache layer Control file component.<br />[22XX]&nbsp;&nbsp;&nbsp;&nbsp; kcm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Miscellaneous functions (SCN).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kcsm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Shared Routines.<br />[23XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo File management component.<br />[24XX]&nbsp;&nbsp;&nbsp;&nbsp; kcht.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache buffer Hash Table.<br />[26XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrfr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo File Read.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kcrfrw.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo File Read.<br />[27XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo File management component.<br />[28XX]&nbsp;&nbsp;&nbsp;&nbsp; kcf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Files component.<br />[29XX]&nbsp;&nbsp;&nbsp;&nbsp; kcf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Files component.<br />[30XX]&nbsp;&nbsp;&nbsp;&nbsp; kcra.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo Application/Access.<br />[30XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Recovery Parallel.<br />[32XX]&nbsp;&nbsp;&nbsp;&nbsp; kcb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Buffer management Implementation.<br />[33XX]&nbsp;&nbsp;&nbsp;&nbsp; kcbz.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subroutines for kcb (cache layer).<br />[34XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo aRchival.<br />[35XX]&nbsp;&nbsp;&nbsp;&nbsp; kcbl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Buffer Load management.<br />[36XX]&nbsp;&nbsp;&nbsp;&nbsp; kcv.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache recoVery component.<br />[37XX]&nbsp;&nbsp;&nbsp;&nbsp; kct.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Threads component (SQL layer).<br />[38XX]&nbsp;&nbsp;&nbsp;&nbsp; kck.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Compatibility segment component.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRANSACTION LAYER COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[40XX]&nbsp;&nbsp;&nbsp;&nbsp; ktu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Undo.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kql.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel SQL Library manager.<br />[41XX]&nbsp;&nbsp;&nbsp;&nbsp; ktur.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Undo Recovery.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktuc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Undo called from Cache layer.<br />[42XX]&nbsp;&nbsp;&nbsp;&nbsp; ktl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Tranaction List blocks changed.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktp.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Transaction Parallel.<br />[43XX]&nbsp;&nbsp;&nbsp;&nbsp; kts.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Segment management.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktscbr.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Segment CallBack Routines.<br />[44XX]&nbsp;&nbsp;&nbsp;&nbsp; ktc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Control.<br />[445X]&nbsp;&nbsp;&nbsp;&nbsp; ktdbas.h&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Distributed option BASe.<br />[45XX]&nbsp;&nbsp;&nbsp;&nbsp; ktb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Block code.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktbt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Block Table.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Read.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktz.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel TranZaction testing.<br />[46XX]&nbsp;&nbsp;&nbsp;&nbsp; kta.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction table Access definitions.<br />[47XX]&nbsp;&nbsp;&nbsp;&nbsp; kkxrd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction DBMS_ROWID package.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktsfx.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Segment dataFile eXtension mgmt.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktsa.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Segment Space analysis.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktsb.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Transaction Segment Bitmap management.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktss.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Space management segment procedures.<br />[48XX]&nbsp;&nbsp;&nbsp;&nbsp; kqr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel SQL Row cache management component.<br />[49XX]&nbsp;&nbsp;&nbsp;&nbsp; ktm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Monitor Component (SMON).<br />[50XX]&nbsp;&nbsp;&nbsp;&nbsp; ktec.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent Concurrent operations.<br />[51XX]&nbsp;&nbsp;&nbsp;&nbsp; ktt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Table Space.<br />[52XX]&nbsp;&nbsp;&nbsp;&nbsp; kta.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction table Access definitions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktst.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Temporary Sort mgmnt implementation.<br />[53XX]&nbsp;&nbsp;&nbsp;&nbsp; ktef.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent Flush extent map.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktehw.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent - High Water mark operations.<br />[54XX]&nbsp;&nbsp;&nbsp;&nbsp; ktein.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent - INformation operations.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kteop.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent - OPerations.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA LAYER COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[60XX]&nbsp;&nbsp;&nbsp;&nbsp; kdi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Index.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdil.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Index Load.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdis.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Index Split.<br />[61XX]&nbsp;&nbsp;&nbsp;&nbsp; kdx.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data indeX block.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdeu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Export Unload.<br />[62XX]&nbsp;&nbsp;&nbsp;&nbsp; kdxt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data indeX block Temporary block.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kueuld.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Utility Export UnLoaDer routine.<br />[63XX]&nbsp;&nbsp;&nbsp;&nbsp; kdk.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernal Data layer search Key.<br />[65XX]&nbsp;&nbsp;&nbsp;&nbsp; kdo.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Operations.<br />[67XX]&nbsp;&nbsp;&nbsp;&nbsp; kds.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Seek/Scan.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kda.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Analyze driver.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Update.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Table insert.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Cluster.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Cluster.<br />[68XX]&nbsp;&nbsp;&nbsp;&nbsp; kdn.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer sequence Number generator.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Block structure and internal manipulation.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdg.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Gathering services.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdq.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Query component.<br />[69XX]&nbsp;&nbsp;&nbsp;&nbsp; kdbl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Block formatting Loader interface.<br />[70XX]&nbsp;&nbsp;&nbsp;&nbsp; kprc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Programatic interface Rpi Copy routines.<br />[79XX]&nbsp;&nbsp;&nbsp;&nbsp; kdl.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Data layer LOB implementation.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACCESS LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[80XX]&nbsp;&nbsp;&nbsp;&nbsp; kaf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Access Fetch.<br />[81XX]&nbsp;&nbsp;&nbsp;&nbsp; kau.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Access Update.<br />[81XX]&nbsp;&nbsp;&nbsp;&nbsp; kkri.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel parallel create Index.<br />[81XX]&nbsp;&nbsp;&nbsp;&nbsp; kdic.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Index Create.<br />[81XX]&nbsp;&nbsp;&nbsp;&nbsp; kdso.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Service Object support.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARALLEL SERVER ERROR COMPONENT LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[90XX]&nbsp;&nbsp;&nbsp;&nbsp; kcl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Lock background process.<br />[999X]&nbsp;&nbsp;&nbsp;&nbsp; opigln.c&nbsp;&nbsp;&nbsp;&nbsp; Oracle Program Interface: Get LoNg column.<br />[999X]&nbsp;&nbsp;&nbsp;&nbsp; klcs.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Loadable Character Set.<br />[99XX]&nbsp;&nbsp;&nbsp;&nbsp; kkbl.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Kompilation taBle with Lob support.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL LAYER (USER/ORACLE INTERFACE) COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[12XXX]&nbsp;&nbsp;&nbsp; rsoima.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Row source SOrt IMplementation A.<br />[122XX]&nbsp;&nbsp;&nbsp; opix.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle Program Interface Xfer command to remote.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; opitsk.c&nbsp;&nbsp;&nbsp;&nbsp; Two Task Oracle Side Function Dispatcher.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kprb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel PRogrammatic interface Bundled operations.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kprlob.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Programmatic Recursive LOB functions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kpolob.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel KPP Lob operations.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kpoal8.c |&nbsp;&nbsp; Kernel Programmatic Oracle ALl Version 8.<br />[123XX]&nbsp;&nbsp;&nbsp; kkm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation seMantic analysis.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; apai.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Access Path Analysis Internal.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkqj.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Query Join analysis.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kpotx.c&nbsp; |&nbsp;&nbsp; Kernel Programmatic OCI Transaction.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prsc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PaRSe Create DataBase.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vop.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; View OPtimize.<br />[124XX]&nbsp;&nbsp;&nbsp; rwsdef&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RoW Source DEFinitions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rcoima.c&nbsp;&nbsp;&nbsp;&nbsp; Row source: COunting IMPlementation A.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rbfima.c&nbsp;&nbsp;&nbsp;&nbsp; Row source: BuFfer IMPlementation A<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rfuima.c&nbsp;&nbsp;&nbsp;&nbsp; Row source: For Update IMPlementation A.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rixima.c&nbsp;&nbsp;&nbsp;&nbsp; Row source (IndeX) IMplementation A.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rtb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Row source TaBle.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rae.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Row source (And-Equal) implementation.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxrd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecution Row source Delete.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxpar.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecute PArtition Row sources.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxru.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecution Row source Update.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qkajoi.c&nbsp;&nbsp;&nbsp;&nbsp; Query Kernel Allocation: JOIn processing.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qkadrv.c&nbsp;&nbsp;&nbsp;&nbsp; Query Kernel buffer Allocate DRiVer.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msqimb.c&nbsp;&nbsp;&nbsp;&nbsp; Make SQl Implementation B.<br />[126XX]&nbsp;&nbsp;&nbsp; dcl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Drop Cluster.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csy.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create SYnonym.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cvw.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create VieW.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dsy.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Drop SYnonym.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Drop TaBle.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seq.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SEQuence numbers.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create Table or Cluster.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tbsdrv.c&nbsp;&nbsp;&nbsp;&nbsp; TaBle Space execution DRiVer.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbsdrv.c&nbsp;&nbsp;&nbsp;&nbsp; DataBaSe DRiVer routines.<br />[127XX]&nbsp;&nbsp;&nbsp; rtb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Row TaBle sources.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksul.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service User Language manager.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; psdbnd.c |&nbsp;&nbsp; PSD bind variable management routines.<br />[128XX]&nbsp;&nbsp;&nbsp; kkdc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation Dictionary support for Constraints.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkdl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation Dictionary Lookup.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation seMantic analysis.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkn.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation aNalyze support.<br />[129XX]&nbsp;&nbsp;&nbsp; ddfnet.c&nbsp;&nbsp;&nbsp;&nbsp; Dictionary DeFinition NETwork name.<br />[130XX]&nbsp;&nbsp;&nbsp; sqn.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SeQueNce reference parsing.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdic.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Index Create.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delexe.c&nbsp;&nbsp;&nbsp;&nbsp; DELete EXEcute.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; updexe.c&nbsp;&nbsp;&nbsp;&nbsp; UPDate EXEcute.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insexe.c&nbsp;&nbsp;&nbsp;&nbsp; INSert EXEcute.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selexe.c&nbsp;&nbsp;&nbsp;&nbsp; SELect EXEcute.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxcb.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel eXecute Constraints Backup.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxcc.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel eXecute Constraints Catch-all.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxcs.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel eXecute Constraints: SQL statements.<br />[131XX]&nbsp;&nbsp;&nbsp; opiamr.c&nbsp;&nbsp;&nbsp;&nbsp; Oracle Program Interface Archival and Media Recovery.<br />[132XX]&nbsp;&nbsp;&nbsp; atb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alter TaBle.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ain.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alter INdex.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aud.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUDit implementation file.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ausdrv.c&nbsp;&nbsp;&nbsp;&nbsp; AUdit Statement DRiVer.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aop.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Auditing OPtions implementation.<br />[133XX]&nbsp;&nbsp;&nbsp; koki.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Object Id generator.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkbo.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation taBle with Object support.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SYSTEM DEPENDENT LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[140XX]&nbsp;&nbsp;&nbsp; kza.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Zecurity layer Auditing.<br />[141XX]&nbsp;&nbsp;&nbsp; scg.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System-dependent Concurrency - Global locks.<br />[142XX]&nbsp;&nbsp;&nbsp; sp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unix operating System dependent Process functions.<br />[143XX]&nbsp;&nbsp;&nbsp; ssexhd.c&nbsp;&nbsp;&nbsp;&nbsp; System EXception Signal HanDler.<br />[145XX]&nbsp;&nbsp;&nbsp; mem.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MEMory component.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SECURITY LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[150XX]&nbsp;&nbsp;&nbsp; kzd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Security Dictionary routines.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; opilon.c&nbsp;&nbsp;&nbsp;&nbsp; OPI LOgoN.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kzr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Zecurity Resource routines.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kzsr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Zecurity state for Remote logins.<br />[1508X]&nbsp;&nbsp;&nbsp; kzl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Zecurity Label.<br />[151XX]&nbsp;&nbsp;&nbsp; kkp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation Procedure/function/package manager.<br />[1516X]&nbsp;&nbsp;&nbsp; kko.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Optimizer.<br />[1519X]&nbsp;&nbsp;&nbsp; kkocri.c |&nbsp;&nbsp; Kernel Kompile Optimizer Create Index.<br />[152XX]&nbsp;&nbsp;&nbsp; kks.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Shared.<br />[1526X]&nbsp;&nbsp;&nbsp; kkdo.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Kompilation Dictionary support for Objects.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkbl.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Kompilation taBle with Lob support.<br />[1540X]&nbsp;&nbsp;&nbsp; kky.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kerner Kompilation sYstem/session.<br />[154XX]&nbsp;&nbsp;&nbsp; kkxwtp.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation pl/sql Compiler.<br />[155XX]&nbsp;&nbsp;&nbsp; kkrp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Row source: Parallelizer (DFO tree).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkrh.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Kompile Row Hash source.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxhf.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel eXecution: Hash join File and memory management.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxhr.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel eXecution: Hash join Row management.<br />[1560X]&nbsp;&nbsp;&nbsp; kkfd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Fast Dataflow (PQDFO tree).<br />[1561X]&nbsp;&nbsp;&nbsp; kkfr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Fast (parallel) Rowid range manager.<br />[1564X]&nbsp;&nbsp;&nbsp; kkxa.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation eXternal dbms_Asynchrpc.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kncd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel replicatioN Dequeue Generic functions.<br />[1566X]&nbsp;&nbsp;&nbsp; kkj.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompiletime Job queue.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkjp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompiletime Job Package.<br />[1567X]&nbsp;&nbsp;&nbsp; kkfs.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Fast SQL generator for DFO.<br />[1568X]&nbsp;&nbsp;&nbsp; kkrt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Row source Table create-as-select.<br />[157XX]&nbsp;&nbsp;&nbsp; kxfp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecute Fast (parallel) Process and buffer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; queue manager.<br />[157XX]&nbsp;&nbsp;&nbsp; kxfpb.c&nbsp; |&nbsp;&nbsp; Kernel eXecute Fast (parallel) Buffer Allocation.<br />[158XX]&nbsp;&nbsp;&nbsp; kxfx.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecute Fast (parallel) sql eXecution.<br />[1581X]&nbsp;&nbsp;&nbsp; kxfq.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecute Fast table Queue and message queues.<br />[1582X]&nbsp;&nbsp;&nbsp; ksxa.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Service eXecute Affinity.<br />[1583X]&nbsp;&nbsp;&nbsp; kxfr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecute Fast Rowid range manager.<br />[1585X]&nbsp;&nbsp;&nbsp; kxt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecute Trigger.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxti.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel eXecute Trigger - Instead-of trigger.<br />[1586X]&nbsp;&nbsp;&nbsp; kxs.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecute Shared cursor.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DIRECT LOADER LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[1600X]&nbsp;&nbsp;&nbsp; opiul.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle Programmable Interface for direct Loader.<br />[160XX]&nbsp;&nbsp;&nbsp; klc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Loader Column array builder.<br />[161XX]&nbsp;&nbsp;&nbsp; klllr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Loader Library Logical Record.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; klcli.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Loader C Level Interface to loader.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; klm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Loader Memory.<br />[162XX]&nbsp;&nbsp;&nbsp; kql.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel SQL Library manager.<br />[1623X]&nbsp;&nbsp;&nbsp; kqlr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel SQL Library Remote.<br />[163XX]&nbsp;&nbsp;&nbsp; kmc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Multi-stated/multi-threaded server Circuit cmpt.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kmn.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Multi-threaded Network layer.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kmd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Multi-threaded server's Dispatcher.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kmm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Multi-threaded server/dispatcher Monitor.<br />[164XX]&nbsp;&nbsp;&nbsp; kkb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation taBles (internal tables).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kqlm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel SQL Library Multi-instance manager.<br />[165XX]&nbsp;&nbsp;&nbsp; kqd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Query processing layer Dictionary management.<br />[1655X]&nbsp;&nbsp;&nbsp; kqf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel SQL Fixed tables/views management.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kqfrs.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Query Fixed tables Row Source.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kqfp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Query Fixed Packages.<br />[166XX]&nbsp;&nbsp;&nbsp; kqld.c&nbsp;&nbsp; |&nbsp;&nbsp; KQL Dictionary callbacks.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kqls.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel SQL subordinate Set manager.<br />[167XX]&nbsp;&nbsp;&nbsp; kqlb.c&nbsp;&nbsp; |&nbsp;&nbsp; KQL Bootstrapping Support.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GENERIC LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[170XX]&nbsp;&nbsp;&nbsp; kgl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Library cache manager.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kgl2.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Library cache manager.<br />[1709X]&nbsp;&nbsp;&nbsp; kge.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Error manager.<br />[171XX]&nbsp;&nbsp;&nbsp; kgh.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic shared Heap manager.<br />[172XX]&nbsp;&nbsp;&nbsp; kglr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Library Remote.<br />[1725X]&nbsp;&nbsp;&nbsp; kkxpp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile eXecute Pipe (Private).<br />[1727X]&nbsp;&nbsp;&nbsp; kgi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Instantiation manager.<br />[173XX]&nbsp;&nbsp;&nbsp; kghx.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic fiXed sized sHared memory manager.<br />[174XX]&nbsp;&nbsp;&nbsp; kgh.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic sHared Heap manager. (reserved chunk)<br />[175XX]&nbsp;&nbsp;&nbsp; kgff.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic direct File i/o adaptor.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kgk.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic toKen table manager.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kgfd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic File i/o subsystem Driver.<br />[176XX]&nbsp;&nbsp;&nbsp; kgl3.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Generic Library cache manager.<br />[1799X]&nbsp;&nbsp;&nbsp; kkxwtp.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation pl/sql Compiler.<br />[1799X]&nbsp;&nbsp;&nbsp; plsw.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PL/Sql Wrapper.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p2c.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PL/SQL to .C file.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p2icd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PL/SQL compiler, creates .EX*, .C, and .H files.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TWO PHASE COMMIT LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[1800X]&nbsp;&nbsp;&nbsp; xct.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XaCTion (TRANSaCTion) management implementation.<br />[1802X]&nbsp;&nbsp;&nbsp; k2.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel 2-phase commit misc functions.<br />[181XX]&nbsp;&nbsp;&nbsp; k2i.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel 2-phase commit Indoubt table interface.<br />[180XX]&nbsp;&nbsp;&nbsp; k2g.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel 2-phase commit Global tran id (Replication).<br />[1804X]&nbsp;&nbsp;&nbsp; k2c.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel-2-kernel Capabilities.<br />[1806X]&nbsp;&nbsp;&nbsp; k2d.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel 2-phase commit globally unique Database id.<br />[181XX]&nbsp;&nbsp;&nbsp; k2l.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel 2-phase commit Log records and log interface.<br />[1826X]&nbsp;&nbsp;&nbsp; k2r.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel 2-phase commit issue multiple RPCs.<br />[182XX]&nbsp;&nbsp;&nbsp; npi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Network Program Interface (two task, MTS).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ncodef.c&nbsp;&nbsp;&nbsp;&nbsp; Network COnnection component's ncoDEF interfaces.<br />[183XX]&nbsp;&nbsp;&nbsp; k2s.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel 2-phase commit Server (distributed).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k2v.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel 2-phase commit recoVery (active portion).<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJECT LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[190XX]&nbsp;&nbsp;&nbsp; kke.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile query Engine cost engine.<br />[191XX]&nbsp;&nbsp;&nbsp; koc.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Cache manager.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; koh.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Heap manager.<br />[192XX]&nbsp;&nbsp;&nbsp; koi.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Interface.<br />[194XX]&nbsp;&nbsp;&nbsp; kot.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Open Type Manager.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kotg.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Open Type Manager accessor (Get) routines.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kokt.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Kompilation Type manager.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kokt2.c&nbsp;&nbsp; |&nbsp; Kernel Object Kompilation Type manager 2.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kokt3.c&nbsp;&nbsp; |&nbsp; Kernel Object Kompilation Type manager 3.<br />[195XX]&nbsp;&nbsp;&nbsp; kod.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object generic Data manager.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kokd.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Kernel-side Driver.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kokn.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Kernel-side Naming.<br />[198XX]&nbsp;&nbsp;&nbsp; kokv.c&nbsp;&nbsp;&nbsp; |&nbsp; RDBMS Kernel Object Kernel-side object View support.<br />[197XX]&nbsp;&nbsp;&nbsp; kol.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object c Language interface.<br />[199XX]&nbsp;&nbsp;&nbsp; koka.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Kernel-side object Access.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kokl.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Kernel-side Lob access.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kokl3.c&nbsp;&nbsp; |&nbsp; Kernel Object Kernel-side temporary LOB support.<br />[1999X]&nbsp;&nbsp;&nbsp; stsima.c&nbsp; |&nbsp; SorT Support IMplementation A.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kksdopt.c&nbsp;&nbsp;&nbsp; Kernel Kompile Smart Disk No OPtion.<br />[200XX]&nbsp;&nbsp;&nbsp; kos.c&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Object Stream interfaces for images/objects.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdib.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bitmap Index general definitions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdibc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bitmap Index Compression stream.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdibco.c&nbsp;&nbsp;&nbsp;&nbsp; Bitmap Index Compression stream, Output.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdibh.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bitmap index Hash-table.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdibi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bitmap index Inversion item-Table.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdibq.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KDIB Queue class.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdibr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KDIB Row source utility.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdibl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KDI Bitmap index maintenance for dml and direct load.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkrbi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bitmap index creation row source.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkrbo.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KKRB Or row source.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkrbt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Row source: Bob_dylan converTor.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkrbu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KKRB Unlimited-OR row source.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkrbx.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KKRB indeX (kdi) access row source.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkrbc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bitmap index Compaction row source.<br />[204XX]&nbsp;&nbsp;&nbsp; kkpo.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Kompilation of Partitioned Objects.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkpod.c&nbsp;&nbsp; |&nbsp; Kernel Kompilation Partitioned Objects Dictionary.<br />[2042X]&nbsp;&nbsp;&nbsp; kkpoc.c&nbsp;&nbsp; |&nbsp; Kernel Kompilation Partition Objects cursor Compile.<br />[205XX]&nbsp;&nbsp;&nbsp; krb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Backup/Restore miscellenaous functions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; krbb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Recovery Backup/restore Backup set creation.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; krbc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Recovery backup/Restore controlfile.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; krbd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Recovery Backup/restore Device control.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; krbi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Recovery Backup/restore ICDs.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; krbm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Recovery Backup/restore Miscellaneous functions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; krbr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Recovery Backup/restore Restore.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; krby.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Recovery Backup/Restore image copY.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkrba.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KKRB AND row source.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REPLICATION LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[210XX]&nbsp;&nbsp;&nbsp; knps.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel replicatioN Parallel propagation Slave.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkzp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel K(mumble) Znapshot Pl/sql interface.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkz.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel K(mumble) Znapshots.&nbsp; Table Replication.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkzg.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel Kompile Znapshot Generation.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkxt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation eXternal Trigger.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OLTP LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[230XX]&nbsp;&nbsp;&nbsp; kwqa.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel OLTP Queues Administration interface ICDs.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kwqi.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel OLTP Queues Interface.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kwqic.c&nbsp;&nbsp; |&nbsp; Kernel OLTP Queue Interface Common.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kwqid.c&nbsp;&nbsp; |&nbsp; Kernel OLTP Queue Interface Dequeue.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kwqie.c&nbsp;&nbsp; |&nbsp; Kernel OLTP Queues Interface Enqueue.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kwqit.c&nbsp;&nbsp; |&nbsp; Kernel OLTP Queues Interface Time Management.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kwqu.c&nbsp;&nbsp;&nbsp; |&nbsp; Kernel OLTP Queue Userdata.<br />[248XX]&nbsp;&nbsp;&nbsp; npil.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel NPI Lob functions.<br />[250XX]&nbsp;&nbsp;&nbsp; kft.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel File management Tablespace component.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><br /><font face="宋体">Author:&nbsp; Richard Ware<br />Created: November 06, 1996<br />Updated: November 06, 1998<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">NOTE: | = new file for Oracle 8.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORA-600 BASE INTERNAL ERROR INDEX<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RDBMS VERSION 8.0.5<br />&nbsp; 1st<br />Argument&nbsp;&nbsp; Module&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SERVICE LAYER COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[&nbsp; 1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Component notifier.<br />[1XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Debug internal errors.<br />[2XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksdp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Debug Parser.<br />[3XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kse.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Error manager.<br />[5XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service layer Latching &amp; Wait-post Implement.<br />[7XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Memory component implementation.<br />[9XX]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ksp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service layer system Parameters component.<br />[110X]&nbsp;&nbsp;&nbsp;&nbsp; kgg.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Generic lists.<br />[111X]&nbsp;&nbsp;&nbsp;&nbsp; kgss.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Generic Service State object manager.<br />[115X]&nbsp;&nbsp;&nbsp;&nbsp; ksq.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service enQueues.<br />[119X]&nbsp;&nbsp;&nbsp;&nbsp; ksi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service layer Instance locks.<br />[12XX]&nbsp;&nbsp;&nbsp;&nbsp; ksu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service User management.<br />[13XX]&nbsp;&nbsp;&nbsp;&nbsp; ksucln.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service User management CLeaNup process.<br />[14XX]&nbsp;&nbsp;&nbsp;&nbsp; ksa.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Asynchronous messages.<br />[15XX]&nbsp;&nbsp;&nbsp;&nbsp; kkxwtp.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation pl/sql Compiler.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kpor.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel KPO RPC callback for streaming.<br />[16XX]&nbsp;&nbsp;&nbsp;&nbsp; ksb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Background processes.<br />[17XX]&nbsp;&nbsp;&nbsp;&nbsp; ksk.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service license Key component.<br />[18XX]&nbsp;&nbsp;&nbsp;&nbsp; ksim.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Service Instance Manager (registration).<br />[185X]&nbsp;&nbsp;&nbsp;&nbsp; ksfh.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Service File i/o Helper component.<br />[186X]&nbsp;&nbsp;&nbsp;&nbsp; ksfq.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Service seQuential File i/o interface.<br />[19XX]&nbsp;&nbsp;&nbsp;&nbsp; ksfv.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Service File i/o serVer component.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CACHE LAYER COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[20XX]&nbsp;&nbsp;&nbsp;&nbsp; kco.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Op(erations).<br />[21XX]&nbsp;&nbsp;&nbsp;&nbsp; kcc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache layer Control file component.<br />[22XX]&nbsp;&nbsp;&nbsp;&nbsp; kcm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Miscellaneous functions (SCN).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kcsm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Shared Routines.<br />[23XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo File management component.<br />[24XX]&nbsp;&nbsp;&nbsp;&nbsp; kcht.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache buffer Hash Table.<br />[26XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrfr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo File Read.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kcrfrw.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo File Read.<br />[27XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo File management component.<br />[28XX]&nbsp;&nbsp;&nbsp;&nbsp; kcf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Files component.<br />[29XX]&nbsp;&nbsp;&nbsp;&nbsp; kcf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Files component.<br />[30XX]&nbsp;&nbsp;&nbsp;&nbsp; kcra.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo Application/Access.<br />[30XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrp.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Recovery Parallel.<br />[32XX]&nbsp;&nbsp;&nbsp;&nbsp; kcb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Buffer management Implementation.<br />[33XX]&nbsp;&nbsp;&nbsp;&nbsp; kcbz.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Subroutines for kcb (cache layer).<br />[34XX]&nbsp;&nbsp;&nbsp;&nbsp; kcrr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Redo aRchival.<br />[35XX]&nbsp;&nbsp;&nbsp;&nbsp; kcbl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Buffer Load management.<br />[36XX]&nbsp;&nbsp;&nbsp;&nbsp; kcv.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache recoVery component.<br />[37XX]&nbsp;&nbsp;&nbsp;&nbsp; kct.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Threads component (SQL layer).<br />[38XX]&nbsp;&nbsp;&nbsp;&nbsp; kck.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Compatibility segment component.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRANSACTION LAYER COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[40XX]&nbsp;&nbsp;&nbsp;&nbsp; ktu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Undo.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kql.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel SQL Library manager.<br />[41XX]&nbsp;&nbsp;&nbsp;&nbsp; ktur.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Undo Recovery.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktuc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Undo called from Cache layer.<br />[42XX]&nbsp;&nbsp;&nbsp;&nbsp; ktl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Tranaction List blocks changed.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktp.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Transaction Parallel.<br />[43XX]&nbsp;&nbsp;&nbsp;&nbsp; kts.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Segment management.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktscbr.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Segment CallBack Routines.<br />[44XX]&nbsp;&nbsp;&nbsp;&nbsp; ktc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Control.<br />[445X]&nbsp;&nbsp;&nbsp;&nbsp; ktdbas.h&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Distributed option BASe.<br />[45XX]&nbsp;&nbsp;&nbsp;&nbsp; ktb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Block code.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktbt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Block Table.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Read.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktz.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel TranZaction testing.<br />[46XX]&nbsp;&nbsp;&nbsp;&nbsp; kta.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction table Access definitions.<br />[47XX]&nbsp;&nbsp;&nbsp;&nbsp; kkxrd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction DBMS_ROWID package.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktsfx.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Segment dataFile eXtension mgmt.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktsa.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Segment Space analysis.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktsb.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Transaction Segment Bitmap management.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktss.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Space management segment procedures.<br />[48XX]&nbsp;&nbsp;&nbsp;&nbsp; kqr.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel SQL Row cache management component.<br />[49XX]&nbsp;&nbsp;&nbsp;&nbsp; ktm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Monitor Component (SMON).<br />[50XX]&nbsp;&nbsp;&nbsp;&nbsp; ktec.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent Concurrent operations.<br />[51XX]&nbsp;&nbsp;&nbsp;&nbsp; ktt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Table Space.<br />[52XX]&nbsp;&nbsp;&nbsp;&nbsp; kta.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction table Access definitions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktst.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Temporary Sort mgmnt implementation.<br />[53XX]&nbsp;&nbsp;&nbsp;&nbsp; ktef.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent Flush extent map.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ktehw.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent - High Water mark operations.<br />[54XX]&nbsp;&nbsp;&nbsp;&nbsp; ktein.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent - INformation operations.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kteop.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Transaction Extent - OPerations.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATA LAYER COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[60XX]&nbsp;&nbsp;&nbsp;&nbsp; kdi.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Index.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdil.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Index Load.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdis.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Index Split.<br />[61XX]&nbsp;&nbsp;&nbsp;&nbsp; kdx.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data indeX block.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdeu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Export Unload.<br />[62XX]&nbsp;&nbsp;&nbsp;&nbsp; kdxt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data indeX block Temporary block.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kueuld.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Utility Export UnLoaDer routine.<br />[63XX]&nbsp;&nbsp;&nbsp;&nbsp; kdk.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernal Data layer search Key.<br />[65XX]&nbsp;&nbsp;&nbsp;&nbsp; kdo.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Operations.<br />[67XX]&nbsp;&nbsp;&nbsp;&nbsp; kds.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Seek/Scan.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kda.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Analyze driver.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdu.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Update.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdt.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Table insert.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Cluster.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Cluster.<br />[68XX]&nbsp;&nbsp;&nbsp;&nbsp; kdn.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer sequence Number generator.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Block structure and internal manipulation.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdg.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Gathering services.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kdq.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Query component.<br />[69XX]&nbsp;&nbsp;&nbsp;&nbsp; kdbl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Block formatting Loader interface.<br />[70XX]&nbsp;&nbsp;&nbsp;&nbsp; kprc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Programatic interface Rpi Copy routines.<br />[79XX]&nbsp;&nbsp;&nbsp;&nbsp; kdl.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Data layer LOB implementation.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACCESS LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[80XX]&nbsp;&nbsp;&nbsp;&nbsp; kaf.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Access Fetch.<br />[81XX]&nbsp;&nbsp;&nbsp;&nbsp; kau.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Access Update.<br />[81XX]&nbsp;&nbsp;&nbsp;&nbsp; kkri.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel parallel create Index.<br />[81XX]&nbsp;&nbsp;&nbsp;&nbsp; kdic.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data Index Create.<br />[81XX]&nbsp;&nbsp;&nbsp;&nbsp; kdso.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Data layer Service Object support.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PARALLEL SERVER ERROR COMPONENT LAYER<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[90XX]&nbsp;&nbsp;&nbsp;&nbsp; kcl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Cache Lock background process.<br />[999X]&nbsp;&nbsp;&nbsp;&nbsp; opigln.c&nbsp;&nbsp;&nbsp;&nbsp; Oracle Program Interface: Get LoNg column.<br />[999X]&nbsp;&nbsp;&nbsp;&nbsp; klcs.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Loadable Character Set.<br />[99XX]&nbsp;&nbsp;&nbsp;&nbsp; kkbl.c&nbsp;&nbsp; |&nbsp;&nbsp; Kernel Kompilation taBle with Lob support.<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL LAYER (USER/ORACLE INTERFACE) COMPONENT<o:p></o:p></font></span></p>
<p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体">[12XXX]&nbsp;&nbsp;&nbsp; rsoima.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Row source SOrt IMplementation A.<br />[122XX]&nbsp;&nbsp;&nbsp; opix.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle Program Interface Xfer command to remote.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; opitsk.c&nbsp;&nbsp;&nbsp;&nbsp; Two Task Oracle Side Function Dispatcher.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kprb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel PRogrammatic interface Bundled operations.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kprlob.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel Programmatic Recursive LOB functions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kpolob.c&nbsp;&nbsp;&nbsp;&nbsp; Kernel KPP Lob operations.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kpoal8.c |&nbsp;&nbsp; Kernel Programmatic Oracle ALl Version 8.<br />[123XX]&nbsp;&nbsp;&nbsp; kkm.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompilation seMantic analysis.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; apai.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Access Path Analysis Internal.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kkqj.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel Kompile Query Join analysis.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kpotx.c&nbsp; |&nbsp;&nbsp; Kernel Programmatic OCI Transaction.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prsc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PaRSe Create DataBase.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vop.c&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; View OPtimize.<br />[124XX]&nbsp;&nbsp;&nbsp; rwsdef&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RoW Source DEFinitions.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rcoima.c&nbsp;&nbsp;&nbsp;&nbsp; Row source: COunting IMPlementation A.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rbfima.c&nbsp;&nbsp;&nbsp;&nbsp; Row source: BuFfer IMPlementation A<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rfuima.c&nbsp;&nbsp;&nbsp;&nbsp; Row source: For Update IMPlementation A.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rixima.c&nbsp;&nbsp;&nbsp;&nbsp; Row source (IndeX) IMplementation A.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rtb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Row source TaBle.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rae.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Row source (And-Equal) implementation.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxrd.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecution Row source Delete.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxpar.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecute PArtition Row sources.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kxru.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kernel eXecution Row source Update.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qkajoi.c&nbsp;&nbsp;&nbsp;&nbsp; Query Kernel Allocation: JOIn processing.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qkadrv.c&nbsp;&nbsp;&nbsp;&nbsp; Query Kernel buffer Allocate DRiVer.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msqimb.c&nbsp;&nbsp;&nbsp;&nbsp; Make SQl Implementation B.<br />[126XX]&nbsp;&nbsp;&nbsp; dcl.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Drop Cluster.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; csy.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create SYnonym.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cvw.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create VieW.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dsy.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Drop SYnonym.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtb.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Drop TaBle.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; seq.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SEQuence numbers.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctc.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Create Table or Cluster.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tbsdrv.c&nbsp;&nbsp;&nbsp;&nbsp; TaBle Space execution DRiVer.</font></span></p><p><span style="font-size: 9pt;" lang="EN-US"><font face="宋体"><br /></font></span></p>]]>
      
   </content>
</entry>

<entry>
   <title>怎样使用OCI编写多线程的ORACLE应用软件</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/08/ocioracle.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2358</id>
   
   <published>2009-08-05T02:14:42Z</published>
   <updated>2009-08-06T02:16:23Z</updated>
   
   <summary>多线程的应用程序可充分利用计算机资源，能有效提高应用程序的运行效率。本文通过实例叙述了使用ORACLE OCI编写多线程的应用程序的方法和多线程应用程序的运行机制。</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="5" label="Oracle" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      <![CDATA[<h2 style="margin: 13pt 0cm;">原文链接： <a href="http://space.itpub.net/17267437/viewspace-547181">http://space.itpub.net/17267437/viewspace-547181</a><br /><span style="font-family: 黑体;"></span></h2><h2 style="margin: 13pt 0cm;"><span style="font-family: 黑体;">摘要：</span></h2><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">多线程的应用程序可充分利用计算机资源，能有效提高应用程序的运行效率。本文通过实例叙述了使用<span lang="EN-US"><a href="javascript:;" onclick="javascript:tagshow(event, 'ORACLE');" target="_self"><u><strong>ORACLE</strong></u></a><span style="">&nbsp;</span>OCI</span>编写多线程的应用程序的方法和多线程应用程序的运行机制。<span lang="EN-US"><o:p></o:p></span></span></p><h2 style="margin: 13pt 0cm;"><span style="font-family: 黑体;">关键字：</span></h2><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman"><span style="">&nbsp;</span>OCI<span style="">&nbsp;</span></font></span><span style="font-family: 宋体;">线程</span><span lang="EN-US"><span style=""><font face="Times New Roman">&nbsp;</font></span></span><span style="font-family: 宋体;">互斥</span><span lang="EN-US"><span style=""><font face="Times New Roman">&nbsp;</font></span></span><span style="font-family: 宋体;">应用程序</span></font></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">将一个较为复杂的应用<a href="javascript:;" onclick="javascript:tagshow(event, '%C8%ED%BC%FE');" target="_self"><u><strong>软件</strong></u></a>按功能划分为若干执行不同操作的模块，再利用多线程机制使它们同时运行在多处理机或单处理机系统上，就能提高软件的运行效率。本文讨论多线程的实用性，并通过实例（二个线程反复轮流地交叉操作进程中二个缓冲区，以提高<span lang="EN-US">CPU</span>的利用率）来说明多线程的运作机制和怎样利用<span lang="EN-US">Oracle</span>提供的<a href="javascript:;" onclick="javascript:tagshow(event, '%B1%E0%B3%CC');" target="_self"><u><strong>编程</strong></u></a>接口函数，编写运行在多线程环境中的<a href="javascript:;" onclick="javascript:tagshow(event, '%CA%FD%BE%DD%BF%E2');" target="_self"><u><strong>数据库</strong></u></a>应用软件。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p><h3 style="margin: 13pt 0cm;"><font size="5"><span lang="EN-US"><font face="Times New Roman">1</font></span><span style="font-family: 宋体;">．</span><span style="font-family: 宋体;">多线程实用性</span></font></h3><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">线程可以看作是由进程产生的一些可执行单位。它们能够共享进程中相同的<a href="javascript:;" onclick="javascript:tagshow(event, '%B4%FA%C2%EB');" target="_self"><u><strong>代码</strong></u></a>段和数据段，但它们有自己的程序计数器，寄存器和堆栈。程序中的全局变量对所有线程来讲都是公用的。由于多个线程可能会同时访问这些公用的数据元素，所以要用互斥机制来<a href="javascript:;" onclick="javascript:tagshow(event, '%B9%DC%C0%ED');" target="_self"><u><strong>管理</strong></u></a>对这些公用数据的访问，保证它们的正确性。该机制称为互斥锁，它能保证应用程序中同时访问共享资源的多个线程不发生矛盾冲突。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">在多处理机系统中多个线程同时运行在不同的处理机上，显然可以提高软件的运行速度；在单处理机系统中，可用多个线程分开执行慢操作（如人机交互，<span lang="EN-US">I/O</span>操作等）和快操作（数据计算处理），也可提高软件的运行效率。我们考虑显示地震勘探三维数据体程序。常规的程序流程是：<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;" lang="EN-US"><o:p>&nbsp;</o:p></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">由
于地震勘探三维数据体的数据量较大，从数据库读数据到显示出图象的串行操作要花费一些时间。当数据少时，所花时间相对要少，人有时还感觉不到；但当数据量
很大时，这个过程需要花费很多时间。分析流程中四个步骤就会发现：读数据和显示部分主要是和外部设备打交道，读数据还需使用网络；而解压和三维图象处理部
分基本上是在主机内部作运算。我们知道对外设上数据的存取和计算机运算操作在速度上有很大差异，当外设与主存储器之间传输数据时，<span lang="EN-US">CPU</span>有时可能会出现空闲。也就是说，在读数据和显示数据的过程中，可能会浪费一些<span lang="EN-US">CPU</span>资
源。若采用多线程方式编写这个程序，就会提高程序的运行效率。将整个过程分二个线程：一个读数据线程专门负责从数据库中取数据；另一个显示线程负责数据的
解压，三维图象处理和显示输出。在程序中安排二个缓冲区，用于存放数据。读数据线程轮流地向这二个缓冲区中写数据，同样，显示线程也跟着轮流地使用缓冲区
中的数据。即，当读数据线程向缓冲区<span lang="EN-US">1</span>中写数据时，显示线程可处理缓冲区<span lang="EN-US">2</span>中的数据；而当读数据线程向缓冲区<span lang="EN-US">2</span>中写数据时，显示线程可处理缓冲区<span lang="EN-US">1</span>中的数据。这样，就将一个进程的串行操作改为二个线程的并行操作，可以充分地利用<span lang="EN-US">CPU</span>资源。由于这二个线程可能会同时访问相同的缓冲区，这是不允许的，可用互斥锁机制来协调这二个线程之间的关系。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p><h3 style="margin: 13pt 0cm;"><font size="5"><span lang="EN-US"><font face="Times New Roman">2</font></span><span style="font-family: 宋体;">．</span><span lang="EN-US"><font face="Times New Roman">OCI</font></span><span style="font-family: 宋体;">，</span><span lang="EN-US"><font face="Times New Roman">OCI</font></span><span style="font-family: 宋体;">线程<a href="javascript:;" onclick="javascript:tagshow(event, '%B0%B2%C8%AB%D0%D4');" target="_self"><u><strong>安全性</strong></u></a>和线程函数包</span></font></h3><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;" lang="EN-US">OCI(Oracle Call Interface)</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">是<span lang="EN-US">ORACLE</span>提供的面向<a href="javascript:;" onclick="javascript:tagshow(event, '%B3%CC%D0%F2%D4%B1');" target="_self"><u><strong>程序员</strong></u></a>的<span lang="EN-US">C</span>语言编程接口，是开发<span lang="EN-US">ORACLE</span>数据库应用软件的较好的工具。用它开发出的应用程序运行效率比用<span lang="EN-US">Pro*C/C++</span>的要高。程序员利用其中提供的函数，能访问<span lang="EN-US">Oracle</span>数据库服务器。<span lang="EN-US">OCI</span>应用程序的主要任务之一是处理<span lang="EN-US"><a href="javascript:;" onclick="javascript:tagshow(event, 'SQL');" target="_self"><u><strong>SQL</strong></u></a></span>语句或<span lang="EN-US">PL/SQL</span>脚本，在程序执行的过程中将用户对数据库服务器的请求送到<span lang="EN-US">ORACLE</span>服务器，并接收来自服务器的响应。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;" lang="EN-US">Oracle</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">数据库服务器和<span lang="EN-US">OCI</span>函数库的线程安全特征允许程序开发人员在多线程环境中使用<span lang="EN-US">OCI</span>。有了线程安全特征，<span lang="EN-US">OCI</span>函数代码才具有可重入性，因此从应用程序的多个线程中同时发出<span lang="EN-US">OCI</span>调用才不会彼此产生不良影响。要实现多线程安全化，应用程序必须在调用<span lang="EN-US">OCI</span>初始化函数时定义<span lang="EN-US">mode</span>参数为<span lang="EN-US">OCI_THREADED,</span>它告诉<span lang="EN-US">OCI</span>接口层，本应用程序运行在安全的多线程方式中。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;" lang="EN-US"><o:p>&nbsp;</o:p></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;" lang="EN-US">OCI</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">的<span lang="EN-US">OCIThread</span>软件包提供了一些线程化函数，主要有三种类型。实际使用情况见后面的编程实例。<span lang="EN-US"><o:p></o:p></span></span></p><h4 style="margin: 14pt 0cm 14.5pt;"><span style="font-family: 黑体;"><font size="5">⑴初始化和结束函数</font></span></h4><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">在调用其他函数之前必须调用<span lang="EN-US">OCIThreadProcessInit()</span>函数，执行<span lang="EN-US">OCIThread</span>软件包的初始化工作，然后再调用<span lang="EN-US">OCIThreadInit()</span>函数，初始化<span lang="EN-US">OCIThread</span>上下文，供其他<span lang="EN-US">OCIThread</span>函数使用。调用<span lang="EN-US">OCIThreadTerm()</span>函数，结束<span lang="EN-US">OCIThread</span>接口层的处理，释放<span lang="EN-US">OCIThread</span>上下文内存。<span lang="EN-US"><o:p></o:p></span></span></p><h4 style="margin: 14pt 0cm 14.5pt;"><span style="font-family: 黑体;"><font size="5">⑵线程管理函数</font></span></h4><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">类型为<span lang="EN-US">OCIThreadHandle</span>的线程句柄用于表示线程的内部数据结构。在使用之前，应该用<span lang="EN-US">OCIThreadHndInit()</span>来分配和初始化，用完后应调用<span lang="EN-US">OCIThreadHndDestroy()</span>来释放内存。用<span lang="EN-US">OCIThreadCreate()</span>函数创建新线程。用<span lang="EN-US">OCIThreadId</span>类型变量来标识一个线程。使用<span lang="EN-US">OCIThreadIdInit()</span>来分配和初始化线程<span lang="EN-US">ID,</span>而用<span lang="EN-US">OCIThreadIdDestroy()</span>来释放线程<span lang="EN-US">ID</span>的结构。用<span lang="EN-US">OCIThreadClose()</span>函数关闭线程。<span lang="EN-US">OCIThreadJoin()</span>函数允许调用者线程与其他线程连接，当要想连接的线程正在运行时，阻塞调用该函数的线程。直到指定的线程运行结束，这个调用者线程才被唤醒，方能继续执行下去。<span lang="EN-US"><o:p></o:p></span></span></p><h4 style="margin: 14pt 0cm 14.5pt;"><span style="font-family: 黑体;"><font size="5">⑶互斥锁管理函数</font></span></h4><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">在应用程序中用类型<span lang="EN-US">OCIThreadMutex</span>的变量来表示互斥锁。互斥锁在使用之前必须用<span lang="EN-US">OCIThreadMutexInit()</span>初始化，用完后要用<span lang="EN-US">OCIThreadMutexDestroy()</span>释放内存结构。一个线程可用<span lang="EN-US">OCIThreadMutexAcquire()</span>来掌握一把互斥锁，任何时候至多只能有一个线程掌握这把互斥锁，掌握这把互斥锁的线程能够用<span lang="EN-US">OCIThreadMutexRelease()</span>来释放它。当一个线程掌握这把互斥锁后，其它线程若想再掌握这把互斥锁，就会被阻塞。直到掌握这把锁的线程释放它，被阻塞的线程之一才能得到它，获得互斥锁的线程才能继续执行下去。<span lang="EN-US"><o:p></o:p></span></span></p><h3 style="margin: 13pt 0cm;"><font size="5"><span lang="EN-US"><font face="Times New Roman">3</font></span><span style="font-family: 宋体;">．多线程应用软件的编制</span></font></h3><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">下面用一个实例来讲述多线程方式<span lang="EN-US">ORACLE</span>应
用程序的编写和多线程的运行机制，仍以显示地震三维数据体为例。将从数据库中读数据当作一个线程，数据解压，三维图象处理和显示当作另一个线程，在进程中
给出二个数据缓冲区，使这二个线程轮流交叉使用这二个缓冲区。并用二把互斥锁来协调这二个线程对缓冲区的使用。为能清楚而简单地说明线程和互斥锁的使用，
这里仅给出程序的主要代码段。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><font size="3" face="Times New Roman">&nbsp;</font></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><o:p>&nbsp;</o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">#include &lt;oci.h&gt;<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">struct thrs_data {<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span>OCIThreadMutex *mutex1;<span style="">&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US">1</span></code><code><span style="font-size: 10pt; font-family: 宋体;">互斥锁</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span>int buffer1[10240];<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US">1<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span>OCIThreadMutex *mutex2;<span style="">&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US">2</span></code><code><span style="font-size: 10pt; font-family: 宋体;">互斥锁</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span>int buffer2[10240];<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US">2<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span>int flag;<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">数据处理结束标志</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span>int start_read;<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">开始读数据标志</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span>int start_disp;<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">开始显示数据标志</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">};<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><o:p>&nbsp;</o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">OCIEnv<span style="">&nbsp;&nbsp;&nbsp;&nbsp;</span>*envhp;<span style="">&nbsp;&nbsp;&nbsp;</span>OCI</span></code><code><span style="font-size: 10pt; font-family: 宋体;">环境句柄</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">OCIError<span style="">&nbsp;&nbsp;</span>*errhp;<span style="">&nbsp;&nbsp;&nbsp;</span>OCI</span></code><code><span style="font-size: 10pt; font-family: 宋体;">错误记录句柄</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">void read_fun(dvoid *arg);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">void disp_fun(dvoid *arg);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">int main(int argc, char* argv[])<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">{<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadId *tId1,*tId2;<span style="">&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">线程</span></code><code><span style="font-size: 10pt;" lang="EN-US">ID</span></code><code><span style="font-size: 10pt; font-family: 宋体;">句柄</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadHandle *tHnd1,*tHnd2;<span style="">&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">线程句柄</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>struct thrs_data op_data;<span style="">&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">定义数据</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">OCI</span></code><code><span style="font-size: 10pt; font-family: 宋体;">初始化（线程安全性）和分配句柄：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIEnvCreate((OCIEnv **) &amp;envhp,OCI_THREADED,(dvoid *)0,<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>(dvoid* (*)(dvoid*,size_t))0,(dvoid* (*)(dvoid*,dvoid*,size_t))0,<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>(void (*)(dvoid *, dvoid *)) 0, (size_t) 0,(dvoid **) 0 );<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIHandleAlloc((dvoid *)envhp, (dvoid **)&amp;errhp,<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span>OCI_HTYPE_ERROR,(size_t)0, (dvoid **)0);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">线程软件包和线程初始化：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadProcessInit();<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadInit(envhp,errhp);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">初始化线程</span></code><code><span style="font-size: 10pt;" lang="EN-US">ID</span></code><code><span style="font-size: 10pt; font-family: 宋体;">和线程句柄：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadIdInit(envhp,errhp,&amp;tId1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadHndInit(envhp,errhp,&amp;tHnd1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadIdInit(envhp,errhp,&amp;tId2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadHndInit(envhp,errhp,&amp;tHnd2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">分配和初始化互斥锁：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadMutexInit(envhp,errhp,&amp;(op_data.mutex1));<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span><span style="">&nbsp;</span>OCIThreadMutexInit(envhp,errhp,&amp;(op_data.mutex2));<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">创建新的线程，执行线程函数调用：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>op_data.start_read=0;<span style="">&nbsp;</span><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>op_data.start_disp=0;<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadCreate(envhp,errhp,read_fun,(dvoid *)&amp;op_data,<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>tId1,tHnd1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadCreate(envhp,errhp,disp_fun,(dvoid *)&amp;op_data,<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>tId2,tHnd2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">参数</span></code><code><span style="font-size: 10pt;" lang="EN-US">read_fun</span></code><code><span style="font-size: 10pt; font-family: 宋体;">和</span></code><code><span style="font-size: 10pt;" lang="EN-US">disp_fun</span></code><code><span style="font-size: 10pt; font-family: 宋体;">是二个线程函数，</span></code><code><span style="font-size: 10pt;" lang="EN-US">op_data</span></code><code><span style="font-size: 10pt; font-family: 宋体;">是送给线程函数的变量。</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">等待线程执行完成并关闭线程句柄：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadJoin(envhp,errhp,tHnd1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadClose(envhp,errhp,tHnd1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadJoin(envhp,errhp,tHnd2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadClose(envhp,errhp,tHnd2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">释放互斥锁内存：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadMutexDestroy(envhp,errhp,&amp;(op_data.mutex1));<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">OCIThreadMutexDestroy(envhp,errhp,&amp;(op_data.mutex2));<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">释放线程</span></code><code><span style="font-size: 10pt;" lang="EN-US">ID</span></code><code><span style="font-size: 10pt; font-family: 宋体;">和线程句柄：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">OCIThreadIdDestroy(envhp,errhp,&amp;tId1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadHndDestroy(envhp,errhp,&amp;tHnd1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadIdDestroy(envhp,errhp,&amp;tId2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadHndDestroy(envhp,errhp,&amp;tHnd2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">释放线程上下文：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIThreadTerm(envhp,errhp);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">释放所有分配的句柄。</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIHandleFree((dvoid *)errhp, OCI_HTYPE_ERROR);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>OCIHandleFree((dvoid *)envhp, OCI_HTYPE_ENV);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">}<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">下面是二个线程函数主要代码段：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">void read_fun(dvoid* arg) {<span style="">&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">读数据进缓冲区函数</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>struct thrs_data *op_data;<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>int n=0;<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>op_data=(struct thrs_data *)arg;<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>for(int k=0;k&lt;5;k++) {</span></code><code><span style="font-size: 10pt; font-family: 宋体;">在实际应用中，此处可为</span></code><code><span style="font-size: 10pt;" lang="EN-US">for(;;) ,</span></code><code><span style="font-size: 10pt; font-family: 宋体;">让退出循环的</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">条件由要读的实际数据确定，这里用</span></code><code><span style="font-size: 10pt;" lang="EN-US">5</span></code><code><span style="font-size: 10pt; font-family: 宋体;">次循环，是为</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">了能够运行给出的框架程序。</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>OCIThreadMutexAcquire(envhp,errhp,op_data-&gt;mutex1);</span></code><code><span style="font-size: 10pt; font-family: 宋体;">获得互斥锁</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>op_data-&gt;start_read=1;</span></code><code><span style="font-size: 10pt; font-family: 宋体;">告诉显示线程，读线程已使用缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>printf("read <a href="javascript:;" onclick="javascript:tagshow(event, 'data');" target="_self"><u><strong>data</strong></u></a><span style="">&nbsp;</span>into buffer1 ...\n");<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">在实际应用中，此处应调用"读数据进缓冲区</span></code><st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1" unitname=""><code><span style="font-size: 10pt;" lang="EN-US">1</span></code><code><span style="font-size: 10pt; font-family: 宋体;">"</span></code></st1:chmetcnv><code><span style="font-size: 10pt; font-family: 宋体;">的函数。</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>OCIThreadMutexRelease(envhp,errhp,op_data-&gt;mutex1);</span></code><code><span style="font-size: 10pt; font-family: 宋体;">释放互斥锁</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">在实际应用中，此处可为：当所有数据都读完时，使</span></code><code><span style="font-size: 10pt;" lang="EN-US">op_data-&gt;flag=1;</span></code><code><span style="font-size: 10pt; font-family: 宋体;">并退出循环体</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>OCIThreadMutexAcquire(envhp,errhp,op_data-&gt;mutex2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>printf("read data<span style="">&nbsp;</span>into buffer2 ...\n");<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">在实际应用中，此处应调用"读数据进缓冲区</span></code><st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname=""><code><span style="font-size: 10pt;" lang="EN-US">2</span></code><code><span style="font-size: 10pt; font-family: 宋体;">"</span></code></st1:chmetcnv><code><span style="font-size: 10pt; font-family: 宋体;">的函数。</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>if(n==0) while(op_data-&gt;start_disp==0);</span></code><code><span style="font-size: 10pt; font-family: 宋体;">循环第一次结束时要等待显示线程启</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>n=1;<span style="">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">动并使用缓冲区</span></code><code><span style="font-size: 10pt;"><span lang="EN-US"><o:p></o:p></span></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>OCIThreadMutexRelease(envhp,errhp,op_data-&gt;mutex2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>if(k==2) {<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">这里的代码段，是为了能演示框架程序；</span></code><code><span style="font-size: 10pt;"><span lang="EN-US"><o:p></o:p></span></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;</span>op_data-&gt;flag=2;<span style="">&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">在实际应用中，此处可为：</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;</span>break;<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">当所有数据都读完时，使</span></code><code><span style="font-size: 10pt;" lang="EN-US">op_data-&gt;flag=2;<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>}<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">并退出循环体</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>}<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">}<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><o:p>&nbsp;</o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">void disp_fun(dvoid* arg) {<span style="">&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">处理和显示数据函数</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>struct thrs_data *op_data;<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>op_data=(struct thrs_data *)arg;<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><o:p>&nbsp;</o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>for(;;) {<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>while(op_data-&gt;start_read==0);</span></code><code><span style="font-size: 10pt; font-family: 宋体;">开始时保证读数据线程先使用缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>OCIThreadMutexAcquire(envhp,errhp,op_data-&gt;mutex1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>op_data-&gt;start_disp=1;<span style="">&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">告诉读数据线程，显示线程已开始使用缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>printf(" display buffer1 ...\n");<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">在实际应用中，此处应调用"使用缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US">1</span></code><code><span style="font-size: 10pt; font-family: 宋体;">中数据，解压，图象处理和显示"的函数。</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>OCIThreadMutexRelease(envhp,errhp,op_data-&gt;mutex1);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>if(op_data-&gt;flag==1) break;<span style="">&nbsp;</span></span></code><code><span style="font-size: 10pt; font-family: 宋体;">退出循环体，返回</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>OCIThreadMutexAcquire(envhp,errhp,op_data-&gt;mutex2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>printf(" display buffer2 ...\n");<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt; font-family: 宋体;">在实际应用中，此处应调用"使用缓冲区</span></code><code><span style="font-size: 10pt;" lang="EN-US">2</span></code><code><span style="font-size: 10pt; font-family: 宋体;">中数据，解压，图象处理和显示"的函数。</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>OCIThreadMutexRelease(envhp,errhp,op_data-&gt;mutex2);<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;&nbsp;</span>if(op_data-&gt;flag==2) break;</span></code><code><span style="font-size: 10pt; font-family: 宋体;">退出循环体，返回</span></code><code><span style="font-size: 10pt;" lang="EN-US"><o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US"><span style="">&nbsp;</span>}<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><code><span style="font-size: 10pt;" lang="EN-US">}<o:p></o:p></span></code></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%;"><span lang="EN-US"><span style=""><font size="3" face="Times New Roman">&nbsp;</font></span></span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;" lang="EN-US"><span style="">&nbsp;</span>thrs_data</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">结构中的几个变量用于读数据线程和显示线程的开始控制和结束控制。<span lang="EN-US">start_read:</span>当二个线程同时启动或显示线程先启动时，保证读数据线程先使用缓冲区，<span lang="EN-US">=1</span>表示读数据线程已使用了缓冲区；<span lang="EN-US">start_disp:</span>在读数据线程对缓冲区进行第一轮操作时，当它已将<span lang="EN-US">2</span>个缓冲区写满，而此时显示线程还没有启动或还没有使用过缓冲区，这时应将读数据线程阻塞住，防止它覆盖掉缓冲区中未显示的数据，<span lang="EN-US">=1</span>表示显示线程已启动并已使用了缓冲区。在后续交替读数据和显示数据的过程中，由互斥锁来协调二个线程之间的关系。<span lang="EN-US">Flag:</span>用于标识数据的结束，<span lang="EN-US">=1</span>表示在缓冲区<span lang="EN-US">1</span>上结束，<span lang="EN-US">=2</span>表示在缓冲区<span lang="EN-US">2</span>上结束。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;" lang="EN-US"><span style="">&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">在<span lang="EN-US">PC</span>机<span lang="EN-US"><a href="javascript:;" onclick="javascript:tagshow(event, 'LINUX');" target="_self"><u><strong>LINUX</strong></u></a></span>下，使用<span lang="EN-US">ORACLE 8i</span>数据库，框架程序的编译连结命令为：<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="3" face="Times New Roman">gcc -g -o thread thread.cpp \</font></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="3" face="Times New Roman">-I$ORACLE_HOME/rdbms/demo -I/usr/i386-glibc20-linux/include \</font></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="3" face="Times New Roman">-I$ORACLE_HOME/rdbms/public -I$ORACLE_HOME/network/public \</font></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="3" face="Times New Roman">-L$ORACLE_HOME/lib -lclntsh</font></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt; line-height: 150%;"><span lang="EN-US"><span style=""></span></span>&nbsp;</p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 24pt; line-height: 150%;"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">参考文献：<span lang="EN-US"><o:p></o:p></span></span></p><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;" lang="EN-US">oracle</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体;">技术资料：《<span lang="EN-US">Oracle Call Interface Programmer</span>'<span lang="EN-US">s Guide</span>》</span><br /><br />]]>
      
   </content>
</entry>

<entry>
   <title>IBM AIX Oracle 9i RAC 性能因素 - udp及其他</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/07/ibm_aix_oracle_9i_rac_udp.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2340</id>
   
   <published>2009-07-15T05:32:09Z</published>
   <updated>2009-07-15T05:37:41Z</updated>
   
   <summary>Oracle 9i RAC (Real Application Cluster) 提供比单一实例更好的可用性和可扩展性，当前用户越来越多的开始采用RAC 的系统，用户在传统单一实例上的监视和调整系统CPU ，内存和硬盘的技能和经验，通常在RAC 环境中同样适用。然而在RAC 环境中有更多需要用户考虑的问题。</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="292" label="IBM" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="5" 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-01.ibm.com/support/docview.wss?uid=csc179c2d650f71a939248256df800234bb9">http://www-01.ibm.com/support/docview.wss?uid=csc179c2d650f71a939248256df800234bb9</a><br /><br /><font face="宋体">内容提要:</font>
<br />
<br />
<font face="Times New Roman">Oracle 9i RAC (Real Application Cluster)</font>
提供比单一实例更好的可用性和可扩展性，当前用户越来越多的开始采用<font face="Times New Roman">RAC</font>
的系统，用户在传统单一实例上的监视和调整系统<font face="Times New Roman">CPU</font>
，内存和硬盘的技能和经验，通常在<font face="Times New Roman">RAC</font>
环境中同样适用。然而在<font face="Times New Roman">RAC</font>
环境中有更多需要用户考虑的问题。<font face="Times New Roman"><br /><br />Oracle 9i RAC </font>
多节点的结构引入了一个新的硬件模块<font face="Times New Roman"> -- RAC </font>
节点间的互联网络，用于协调各个节点的运行，包括全局锁<font face="Times New Roman">(global locking)</font>
，队列<font face="Times New Roman">(enqueue)</font>
和缓存管理<font face="Times New Roman">(buffer cache management)</font>
。<font face="Times New Roman">RAC</font>
是一种较新的技术，对于节点间互联的方式和性能的资料还很少，本文将对此进行一些分析，这些分析基于<font face="Times New Roman">IBM pSeries </font>
服务器和用户的实际工作负载<font face="Times New Roman">.</font><br /><ul><font face="宋体"><br />
<br />

说明:</font></ul>
<ul><br /><br /><br /><font face="Times New Roman">1. RAC </font>
互联配置<br />

在<font face="Times New Roman">IBM pSeries</font>
环境下<font face="Times New Roman">RAC</font>
支持以下的互联选项，基于<font face="Times New Roman">UDP</font>
协议的<font face="Times New Roman">100Mbps</font>
或千兆的以太网，基于<font face="Times New Roman">IBM</font>
专利技术的<font face="Times New Roman">SP Switch</font>
和<font face="Times New Roman">SP Switch 2</font>
。大多是<font face="Times New Roman">RAC</font>
的环境使用千兆以太网，因为千兆以太网能够在相对低的成本下，为大多数商业应用提供足够的带宽和可忍受的网络延迟。<font face="Times New Roman">100Mbps</font>
的以太网更适合于低负载的测试环境，而<font face="Times New Roman">SP Swith 2</font>
则适用于大型、高负载和对反应时间要求严格的复杂应用环境。<br /><br />

通常<font face="Times New Roman">RAC</font>
的环境下，在公用网络的基础上，需要配置两条专用的网络用于节点间的互联，在<font face="Times New Roman">HACMP/ES</font>
资源的定义中，这两条专用的网络应该被定义为<font face="Times New Roman">"private"</font>
。在实例启动的过程中，<font face="Times New Roman">RAC</font>
会自动识别和使用这两条专用的网络，并且如果存在公用<font face="Times New Roman">"public"</font>
的网络，<font face="Times New Roman">RAC</font>
会再识别一条公用网络。当<font face="Times New Roman">RAC</font>
识别到多条网络时，<font face="Times New Roman">RAC</font>
会使用<font face="Times New Roman">TNFF (Transparent Network Failvoer Failback)</font>
功能，在<font face="Times New Roman">TNFF</font>
下所有的节点间通信都通过第一条专用的网络进行，第二条<font face="Times New Roman">(</font>
或第三条等<font face="Times New Roman">)</font>
作为在第一条专用的网络失效后的备份。<br /><br /><img src="http://www-01.ibm.com/support/docview.wss?uid=csc179c2d650f71a939248256df800234bb9&amp;aid=1" alt="" width="697" height="224" /><br /><br /><font face="Times New Roman">CLUSTER_INTERCONNECTS</font>
是在<font face="Times New Roman">Oracle RAC</font>
中的一个可选的初始化<font face="Times New Roman">(init.ora)</font>
参数。此参数可以指定使用哪一条网络用于节点间互联通信，如果指定多条网络，<font face="Times New Roman">RAC</font>
会在这些网络上自动进行负载均衡。然而，当<font face="Times New Roman">CLUSTER_INTERCONNECTS</font>
设置时，<font face="Times New Roman">TNFF</font>
不起作用，这将降低<font face="Times New Roman">RAC</font>
的可用性，任何一条节点间互联网络的失效，都会造成<font face="Times New Roman">RAC</font>
一个或多个节点的失效。<br /><br />

在<font face="Times New Roman">AIX</font>
环境中<font face="Times New Roman">Oracle</font>
数据库在单一实例下的性能调整方法<font face="Times New Roman">(</font>
如<font face="Times New Roman">: </font>
异步<font face="Times New Roman">I/O</font>
，<font face="Times New Roman">VMM</font>
等<font face="Times New Roman">)</font>
对<font face="Times New Roman">Oracle RAC</font>
环境仍然有效。但在<font face="Times New Roman">Oracle RAC</font>
环境下，需要考虑其他一些问题。<font face="Times New Roman">RAC</font>
采用<font face="Times New Roman">UDP</font>
协议进行节点间的互联通信，因此与<font face="Times New Roman">UDP</font>
有关的一些参数需要调整。建议<font face="Times New Roman">udp_sendspace</font>
的起始值为<font face="Times New Roman">db_block_size * db_file_multiblock_read_count</font>
，<font face="Times New Roman">udp_recvspace</font>
设为<font face="Times New Roman">udp_sendspace</font>
的<font face="Times New Roman">4</font>
倍，上限为<font face="Times New Roman">1048576</font>
。如果发生<font face="Times New Roman">socket</font>
缓存溢出<font face="Times New Roman">(</font>
可通过<font face="Times New Roman"> netstat -s | grep "socket buffer overflows" </font>
命令察看<font face="Times New Roman">) udp_recvspace</font>
参数值需要增加。<br /><br /><font face="Times New Roman">Oracle STATSPACK</font>
报告包含很多对于节点间互联性能的信息。首先应该查看的是"<font face="Times New Roman">Top 5 Timed Events</font>
"，在<font face="Times New Roman">RAC</font>
的环境中，"<font face="Times New Roman">global cache cr request</font>
"通常会出现在这里，如果这个事件<font face="Times New Roman">(event)</font>
在整个"<font face="Times New Roman">Total Elapsed Time</font>
"中只占很小的比例<font face="Times New Roman"> (</font>
如下例所示<font face="Times New Roman">) </font>
表示<font face="Times New Roman">RAC</font>
中节点间通信工作正常，否则，如果占的比例较大，表示节点间通信有问题。<br /><img src="http://www-01.ibm.com/support/docview.wss?uid=csc179c2d650f71a939248256df800234bb9&amp;aid=2" alt="" width="736" height="186" /><br /><br />

在<font face="Times New Roman">"Cluster Statistics"</font>
部分包含了很多关于节点间通信性能的信息，如<font face="Times New Roman">Global Cache Service (GCS)</font>
的平均响应时间<font face="Times New Roman"> (average response times) </font>
尤其是关于<font face="Times New Roman">get</font>
和<font face="Times New Roman">reveive</font>
相关的事件。下面所示的是<font face="Times New Roman">RAC</font>
在<font face="Times New Roman">Switch 2</font>
环境下的数据，其带宽和网络延迟都大大好于千兆以太网。<br /><img src="http://www-01.ibm.com/support/docview.wss?uid=csc179c2d650f71a939248256df800234bb9&amp;aid=3" alt="" width="744" height="135" /><br /><font face="宋体"><br />
</font><br /><img src="http://www-01.ibm.com/support/docview.wss?uid=csc179c2d650f71a939248256df800234bb9&amp;aid=4" alt="" width="737" height="629" /><br /><br />

小结：<br />

对于<font face="Times New Roman">Oracle RAC</font>
来说，节点间通信的性能是需要特殊考虑的。节点间互联的网络提供<font face="Times New Roman">"global cache coherency"</font>
，<font face="Times New Roman">"global locking"</font>
和其他<font face="Times New Roman">RAC</font>
管理的功能。工业标准的千兆以太网为大都数基于<font face="Times New Roman">RAC</font>
商业应用提供令人满意的性能，如果对于性能有更高的要求就需要选用<font face="Times New Roman">IBM</font>
的<font face="Times New Roman">SP  Switch2</font><font face="宋体">。</font><br /><font face="宋体"><br /></font></ul>]]>
      
   </content>
</entry>

<entry>
   <title>IBM AIX svmon 简介之一</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/07/ibm_aix_svmon.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2341</id>
   
   <published>2009-07-10T09:52:00Z</published>
   <updated>2009-07-15T09:56:04Z</updated>
   
   <summary>svmon命令是虚存的的监视命令，svmon可用于确定某个程序、用户、内存段使用实存或虚存的情况。它事实上调用的是svmon_back命令，在使用svmon命令之前，必须确定svmon_back命令可用，该命令位置为 /usr/lib/perf/svmon_back 。</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="学习资料" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="489" label="AIX" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="292" label="IBM" 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-01.ibm.com/support/docview.wss?uid=csc1ef3e1dda91b04aa248256da4004c60fb">http://www-01.ibm.com/support/docview.wss?uid=csc1ef3e1dda91b04aa248256da4004c60fb</a><br /><br /><font face="宋体">svmon命令是虚存的的监视命令，svmon可用于确定某个程序、用户、内存段使用实存或虚存的情况。它事实上调用的是svmon_back命令，在使用svmon命令之前，必须确定svmon_back命令可用，该命令位置为</font>
<tt>/usr/lib/perf/svmon_back</tt>
<font face="宋体">。</font>
<br />
<font face="宋体">
svmon运行于前台，就象一个普通的用户进程一样，因为它在运行过程中可被中断，所以，它无法完全真正地成为内存使用情况的快照。所以，在非常繁忙的系
统中，svmon收集的数据和真实的数据有所差距，在svmon进程搜集的过程中，VMM（虚存管理器）可能已经发生改动了。</font>
<br />
<font face="宋体">	因为svmon使用的全是VMM中的数据，而VMM对内存的视图是基于内存段的，所以，理解svmon的输出，必须先理解段的概念。</font>
<br />
<font face="宋体">	段（segment）是一组页的合集，每个段为256M，而每页为4KB字节的虚存，每帧为4KB字节的实存，每个段可同时被多个进程使用，每个段属于以下五种类型其中的一种：</font>
<br />
<font face="宋体">persistent：存放JFS文件或目录</font>
<br />
<font face="宋体">working：进程数据区域和共享内存段</font>
<br />
<font face="宋体">client：用于实现虚拟文件系统如NFS，CD-ROM文件系统和JFS2</font>
<br />
<font face="宋体">mapping：用于实现文件和内存之间的映射关系</font>
<br />
<font face="宋体">real memory mapping：用于对I/O空间的访问</font>
<br />
<font face="宋体">注意，在段的描述中，如果paging space使用的节中如果有一横（－），表明该段未使用交换区，work段可能使用交换区，但persistent段和client段不会使用交换区。</font>
<br />
<font face="宋体">	下面举例说明使用命令可做的一些工作：</font>
<br />
<font face="宋体">1、#</font>
<tt>svmon -uP -t 3|grep -p Pid|grep '^.*[0-9] '</tt>
<br />
<font face="宋体">可将使用实存最多的三个进程标出</font>
<br />
<tt>5428 	X 	4681 	1584 	2656 	9156 	N 	N</tt>
<br />
<tt>16274 	bin 	4594 	1588 	2273 	8824 	N 	Y</tt>
<br />
<tt>6458 	dtgreet 4660 	1580 	2144 	8712 	N 	N</tt>
<br />
<font face="宋体">输出的格式顺序为</font>
<tt>Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd</tt>
<br />
<tt>可以计算出X程序所使用的实存为4681×4096＝18763776，约为18MB</tt>
<br />
<br />
<tt>2、# svmon -gP -t 3|grep -p Pid|grep '^.*[0-9] '</tt>
<br />
<font face="宋体">可将使用交换区最多的三个进程标出，</font>
<br />
<tt>5428 	X 	4681 	1584 	2656 	9156 	N 	N</tt>
<br />
<tt>16274 	bin 	4594 	1588 	2273 	8824 	N 	Y</tt>
<br />
<tt>6458 	dtgreet 4660 	1580 	2144 	8712 	N 	N</tt>
<br />
<font face="宋体">第一个程序X所使用的交换区大小约为</font>
<tt>2566×4096 =10510336</tt>
<font face="宋体">字节，大约为10MB空间</font>
<br />
<br />
<tt>3、# svmon -S -t 3 -i 3</tt>
<br />
<font face="宋体">每隔三秒显示使用最多的段</font>
<br />
<tt>Vsid Esid Type Description 		Inuse Pin Pgsp Virtual</tt>
<br />
<tt>4f08 - &nbsp; &nbsp;clnt 			37505 0 - -</tt>
<br />
<tt>11e1 - &nbsp; &nbsp;clnt 			33623 0 - -</tt>
<br />
<tt>8811 - &nbsp; &nbsp;work kernel pinned heap 12637 6547 8091 19397</tt>
<br />
<tt>可见，Vsid为4f08的段使用最多</tt>
<br />
<br />
<tt>4、svmon -pP 22674</tt>
<br />
<tt>看PID为22674的进程所使用的为那些文件</tt>
<br />
<tt>Pid 	Command 	nuse 	Pin 	Pgsp 	Virtual 	64-bit 	Mthrd</tt>
<br />
<tt>22674 	java 		29333 	1611 	2756 	32404 		N 		Y</tt>
<br />
<br />
<tt>Vsid Esid 	Type Description 		Inuse Pin Pgsp Virtual</tt>
<br />
<tt>0 	0 	work kernel seg 		2979 1593 1659 4561</tt>
<br />
<tt>a056 	- 	work 				43 	16 &nbsp;3 &nbsp; 46</tt>
<br />
<tt>1e03 	2 	work process private 	77 	2 &nbsp; 17 &nbsp;93</tt>
<br />
<tt>1080 	- 	pers /dev/hd2:69742 		1 	0 &nbsp; - &nbsp; -</tt>
<br />
<tt>f8bd 	f 	work shared library data 	84 	0 &nbsp; 11 &nbsp;99</tt>
<br />
<tt>60ee 	8 	work shmat/mmap 		0 	0 &nbsp; 0 &nbsp; 0</tt>
<br />
<tt>70ec 	- 	pers /dev/hd2:69836 		1 	0 &nbsp; - &nbsp; -</tt>
<br />
<tt>再利用ncheck命令，用户可自己建立脚本将device:inode信息抽取出来，如从上述的信息中，我们可通过ncheck得到输出：</tt>
<br />
<tt>/usr/java130/jre/lib/rt.jar</tt>
<br />
<tt>/usr/java130/jre/lib/fonts/LucidaSansRegular.ttf</tt>
<br />
<tt>/usr/java130/jre/lib/ext/indicim.jar</tt>
<br />
<tt>/usr/java130/jre/lib/ext/ibmjcaprovider.jar</tt>
<br />
<tt>/usr/java130/jre/lib/fonts/LucidaSansDemiBold.ttf</tt>
<br />
<tt>/usr/java130/jre/bin/java</tt>
<br />
<tt>脚本示例如下：</tt>
<br />
<tt># expand -4 files.sh|nl</tt>
<br />
<tt>1 grep -p Vsid $1|</tt>
<br />
<tt>2 awk 'NR&gt;1&amp;&amp;$0!~/^$/&amp;&amp;$4~/\/dev/{</tt>
<br />
<tt>3 l=substr($4,1,index($4,":")-1)</tt>
<br />
<tt>4 i=substr($4,index($4,":")+1)</tt>
<br />
<tt>5 if (l~/^\//)</tt>
<br />
<tt>6 print l,i</tt>
<br />
<tt>7 else {</tt>
<br />
<tt>8 print substr(l,index(l,",")+1),i</tt>
<br />
<tt>9 }</tt>
<br />
<tt>10 }'|</tt>
<br />
<tt>11 while read lv inode;do</tt>
<br />
<tt>12 fs=$(lsfs -c $lv 2&gt;/dev/null|awk -F: 'NR&gt;1{print $1}')</tt>
<br />
<tt>13 ncheck -i $inode $lv|awk '!/:$/{print lv $2}' lv=$fs</tt>
<br />
<tt>14 done</tt><br /><br /><br />]]>
      
   </content>
</entry>

<entry>
   <title>IBM AIX netstat -p 命令使用输出详解</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/07/ibm_netstat_protocol.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2335</id>
   
   <published>2009-07-08T07:39:48Z</published>
   <updated>2009-07-08T07:49:08Z</updated>
   
   <summary>netstat -p protocol 显示了有关为 protocol 变量所指定的值（udp、tcp、ip、icmp）的统计信息，该变量可以是协议的通用名称，也可以是其别名。</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="学习资料" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="747" label="netstat" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="105" label="Unix" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      <![CDATA[<h1 class="topictitle1">netstat -p protocol&nbsp; <font style="font-size: 0.64em;">（<a href="http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nestat_p_protocol.htm">原文出处</a>）</font><br /></h1>
<div><p><span class="cmdname">netstat</span> <strong>-p</strong> protocol 显示了有关为 protocol 变量所指定的值（<tt>udp</tt>、<tt>tcp</tt>、<tt>ip</tt>、<tt>icmp</tt>）的统计信息，该变量可以是协议的通用名称，也可以是其别名。</p>
<p> 在 <span class="filepath">/etc/protocols</span> 文件中列示了一些协议名称和它们的代名。一个空响应表明，没有要报告的数据。如果没有统计程序，那么协议参量指定值的程序报告就是不可知的。</p>
<div class="p">下面的示例显示的是 <tt>ip</tt> 协议的输出：<pre class="codeblock"># netstat -p ip<br />ip:<br />                45775 total packets received<br />                0 bad header checksums<br />                0 with size smaller than minimum<br />                0 with data size &lt; data length<br />                0 with header length &lt; data size<br />                0 with data length &lt; header length<br />                0 with bad options<br />                0 with incorrect version number<br />                0 fragments received<br />                0 fragments dropped (dup or out of space)<br />                0 fragments dropped after timeout<br />                0 packets reassembled ok<br />                45721 packets for this host<br />                51 packets for unknown/unsupported protocol<br />                0 packets forwarded<br />                4 packets not forwardable<br />                0 redirects sent<br />                33877 packets sent from this host<br />                0 packets sent with fabricated ip header<br />                0 output packets dropped due to no bufs, etc.<br />                0 output packets discarded due to no route<br />                0 output datagrams fragmented<br />                0 fragments created<br />                0 datagrams that can't be fragmented<br />                0 IP Multicast packets dropped due to no receiver<br />                0 successful path MTU discovery cycles<br />                1 path MTU rediscovery cycle attempted<br />                3 path MTU discovery no-response estimates<br />                3 path MTU discovery response timeouts<br />                1 path MTU discovery decrease detected<br />                8 path MTU discovery packets sent<br />                0 path MTU discovery memory allocation failures<br />                0 ipintrq overflows                0 with illegal source<br />                0 packets processed by threads<br />                0 packets dropped by threads<br />                0 packets dropped due to the full socket receive buffer<br />                0 dead gateway detection packets sent<br />                0 dead gateway detection packet allocation failures<br />                0 dead gateway detection gateway allocation failures</pre>
</div>
<p>突出显示的字段描述如下：</p>
<ul><li><strong>Total Packets Received</strong>  <p>接收到的 IP 数据报总数。</p>
</li><li><strong>Bad Header Checksum or Fragments Dropped</strong>  <p>如果输出表明<tt>无效报头校验和</tt>或<tt>删除段</tt>是由于<tt>重复或超出空间</tt>造成的，这就表明网络传输信息包出现谬误或是设备驱动程序接收信息包的队列没有足够大。</p>
</li><li><strong>Fragments Received</strong>  <p>收到的段总数。</p>
</li><li><strong>Dropped after Timeout</strong>  <p>如果<tt>超时后删除的段</tt>为非零，那么 <tt>ip</tt> 段的<tt>计数时间</tt>在所有的数据报段到达之前就会因为网络繁忙而终止。为避免此情况，可使用 <span class="cmdname">no</span> 命令来增大 <span class="synph"><span class="var">ipfragttl</span></span> 网络参数的值。另一个原因可能是 mbuf 的不足造成的，这就要增加 <span class="synph"><span class="var">thewall</span></span> 的参数值。</p>
</li><li><strong>Packets Sent from this Host</strong>  <p>由这个系统创建并发送出去的 IP 数据报数目。这个计数不包括转发的数据报（由流量转发）。</p>
</li><li><strong>Fragments Created</strong>  <p>发送 IP 数据报时系统中创建的段的数目。</p>
</li></ul>
<p>查看 IP 的统计信息时，参阅一下<tt>收到的信息包</tt>和<tt>收到的分段</tt>的比率。对于小的 MTU
网络有一个准则，如果有 10% 或者更多的信息包进行了分段，那么您就应该进一步调查以确定其原因。如果有很大数量的分段，那表明远程主机 IP
层上的协议正在向 IP 传输比接口的 MTU 值要大的数据。网络路径中的网关或路由器可能也有比网络中其他节点小得多的 MTU 值。对于<tt>发送的信息包</tt>和<tt>创建的段</tt>这也同样适用。</p>
<p>分段会导致 CPU
的额外负载，所以确定它的起因很重要。要知道一些应用程序本身就能够导致分段。比如，一个发送小数量数据的应用程序就能够导致出现分段。然而，如果您知道
应用程序正在发送大量的数据，同时仍然出现分段，就需要确定它的起因。然而，如果您知道应用程序正在发送大量的数据，同时仍然出现分段，就需要确定它的起
因。可能是因为使用的 MTU 大小不是系统中所配置的 MTU 大小。</p>
<div class="p">下面的示例显示的是 <tt>udp</tt> 协议的输出：<pre class="codeblock"># netstat -p udp<br />udp:<br />                11623 datagrams received<br />                0 incomplete headers<br />                0 bad data length fields<br />                0 bad checksums<br />                620 dropped due to no socket<br />                10989 broadcast/multicast datagrams dropped due to no socket<br />                0 socket buffer overflows<br />                14 delivered<br />                12 datagrams output</pre>
</div>
<p>下面是重要的统计信息：</p>
<ul><li><strong>Bad Checksums</strong>  <p>无效校验和可能是由于硬件板卡或是电缆故障造成的。</p>
</li><li><strong>Dropped Due to No Socket</strong>  <p>那些没有打开端口的套接字所接收到的 UDP
数据报总数。因而，肯定会发送 <tt>ICMP 目标地址无法到达 - 端口无法到达</tt>的信息。但是如果收到的 UDP 数据报是广播数据报，就不会产生 ICMP 错误。如果这个值较高，就需要检查应用程序如何
如何处理套接字的。</p>
</li><li><strong>Socket Buffer Overflows</strong>  <p>Socket Buffer Overflows（套接字缓冲区溢出）可能是由于发送和接收 UDP 套接字不足、<span class="cmdname">nfsd</span> 守护程序过少，或者是 <span class="synph"><span class="var">nfs_socketsize</span></span>、<span class="synph"><span class="var">udp_recvspace</span></span> 和 <span class="synph"><span class="var">sb_max</span></span> 值过小而造成。</p>
</li></ul>
<p>如果 <span class="cmdname">netstat</span> <strong>-p udp</strong> 命令表明套接字溢出，那么可能需要增加服务器上 <span class="cmdname">nfsd</span> 守护程序的数量。首先，检查受影响系统的 CPU 或 I/O 饱和度，然后使用 <span class="cmdname">no</span> <strong>-a</strong> 命令验证其他通信层的建议设置。如果系统处于饱和状态，那么您必须降低它的负载或是增加资源。</p>
<div class="p">下面的示例显示的是 <tt>tcp</tt> 协议的输出：<pre class="codeblock"> # netstat -p tcp<br />tcp:<br />                576 packets sent<br />                                512 data packets (62323 bytes)<br />                                0 data packets (0 bytes) retransmitted<br />                                55 ack-only packets (28 delayed)<br />                                0 URG only packets<br />                                0 window probe packets<br />                                0 window update packets<br />                                9 control packets<br />                                0 large sends<br />                                0 bytes sent using largesend<br />                                0 bytes is the biggest largesend<br />                719 packets received<br />                                504 acks (for 62334 bytes)<br />                                19 duplicate acks<br />                                0 acks for unsent data<br />                                449 packets (4291 bytes) received in-sequence<br />                                8 completely duplicate packets (8 bytes)<br />                                0 old duplicate packets<br />                                0 packets with some dup. data (0 bytes duped)<br />                                5 out-of-order packets (0 bytes)<br />                                0 packets (0 bytes) of data after window<br />                                0 window probes<br />                                2 window update packets<br />                                0 packets received after close<br />                                0 packets with bad hardware assisted checksum<br />                                0 discarded for bad checksums<br />                                0 discarded for bad header offset fields<br />                                0 discarded because packet too short<br />                                0 discarded by listeners<br />                                0 discarded due to listener's queue full<br />                                71 ack packet headers correctly predicted<br />                                172 data packet headers correctly predicted<br />                6 connection requests<br />                8 connection accepts<br />                14 connections established (including accepts)<br />                6 connections closed (including 0 drops)<br />                0 connections with ECN capability<br />                0 times responded to ECN<br />                0 embryonic connections dropped<br />                504 segments updated rtt (of 505 attempts)<br />                0 segments with congestion window reduced bit set<br />                0 segments with congestion experienced bit set<br />                0 resends due to path MTU discovery<br />                0 path MTU discovery terminations due to retransmits<br />                0 retransmit timeouts<br />                                0 connections dropped by rexmit timeout<br />                0 fast retransmits<br />                                0 when congestion window less than 4 segments<br />                0 newreno retransmits<br />                0 times avoided false fast retransmits<br />                0 persist timeouts<br />                                0 connections dropped due to persist timeout<br />                16 keepalive timeouts<br />                                16 keepalive probes sent<br />                                0 connections dropped by keepalive<br />                0 times SACK blocks array is extended<br />                0 times SACK holes array is extended<br />                0 packets dropped due to memory allocation failure<br />                0 connections in timewait reused<br />                0 delayed ACKs for SYN<br />                0 delayed ACKs for FIN<br />                0 send_and_disconnects                0 spliced connections<br />                0 spliced connections closed<br />                0 spliced connections reset<br />                0 spliced connections timeout<br />                0 spliced connections persist timeout<br />                0 spliced connections keepalive timeout</pre>
</div>
<p>下面是重要的统计信息：</p>
<ul><li>Packets Sent</li><li>Data Packets</li><li>Data Packets Retransmitted</li><li>Packets Received</li><li>Completely Duplicate Packets</li><li>Retransmit Timeouts</li></ul>
<p>对于 TCP 统计信息，比较发送的信息包数和重发的信息包数。如果重发的信息包数大于总发送信息包量的 10-15%，TCP
就会出现超时，这表明网络流量负载很大，在超时之前不能返回应答信号（ACK）。接收的网节点的瓶颈或是一般的网络故障也会导致 TCP
重发，这会增大网络流量，给网络性能带来了进一步的问题。</p>
<p>同样，需要比较接收到的信息包量和完整复制的信息包量。如果在发送网节点上的 TCP 在从接收节点收到 ACK
信号之前就已经超时，它会重发这个信息包。当接收节点最终接收到所有重发的信息包时会进行复制。如果复制信息包的数量超出了
10-15%，那么这个问题可能还是由于网络流量过大或是接收节点的瓶颈问题所造成的。复制信息包会增加
网络流量。</p>
<p>如果 TCP 发出一个信息包但没有按时接收到 ACK 信号，就会生成重发超时的一个量。然后它会重新发送信息包。对于任何后续重发，此值都会递增。这些持续的重发操作使得 CPU 的利用率更高，而且如果接收节点没有收到信息包，它最终会被删除掉。</p>
</div><br />]]>
      
   </content>
</entry>

<entry>
   <title>CCTV10《走近科学》还是走近白痴？</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/07/cctv10_science.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2329</id>
   
   <published>2009-07-05T00:02:03Z</published>
   <updated>2009-07-05T00:14:00Z</updated>
   
   <summary>原文链接 http://www.douban.com/group/topic/3761032/ 1、某一集说某个村子每天半夜三更都有怪叫声，把全村人吵醒，大家都不敢出去看，战战兢兢地失眠到天亮。采访了一大堆上了岁数的村民，传说这里出没野兽，每天夜里到村子作怪，闹得人心惶惶......音乐配的那叫一个恐怖！还T M D分上下两集渲染！到最后竟然说那是村里一个胖子睡觉打呼噜！T N N D这胖子是金刚罗汉转世，还是帕瓦罗蒂的私生子？！打个呼噜能把一个村子的人吓醒？！K！我想砸电视！ 　　 2、还有一集说是一户人家老是发现自家客厅地上的瓷砖缝里会渗出像血一样的鲜红色液体，弄得到处都是，全村的人都不知道是怎么回事，猜会不会原来这块地是坟地啊什么的，然后又请了N多专家，研究他们家的地理位置地形条件，得出的结论都是依科学不可能发生地下矿物质倒渗这种情况发生......所以，最后的结论就是：液体是这家人家为了出名自己洒上去的！ 　　 我&quot;咣垱&quot;！一下倒地！ 　　 3、还有一期是说，挂了好几年的牛皮鼓忽然自己长出了牛毛！这件事在当地是蛮有名的件事，节目采访了那么多人，研究从厦大弄到了中央，都没有人说出个 所以然来，最后没办法了，硬栽赃人家做鼓的人不专业，毛没有刮干净，当初牛毛没刮干净？我晕。。。这不是怀疑做鼓人的专业水平吗？呵呵！ 　　 以这样的结论打发我，到底是看不起我的智商还是编导智商让人看不起！ 4、还有一期说峨眉山的一个古寺，地处森林深处，但屋顶上从来没有一片树叶。就这么个事儿，经过漫长，深沉，全方位，多角度的分析，采访了寺中实习的和尚，游客，保安，居士，文物管理局局长，以及他的姑妈的二姐的堂妹的邻居家的一条狗，最后得出结论----是风吹走的。 　　 我TMD当时就想跳楼！N N个熊，太伤我自尊了！ 　　 　　5、刚看了一期，一对老人家的电灯晚上莫名其妙老是自己亮，结果大家都说他们家闹鬼，那对老人还居然病倒了。这其中还请了很牛比的大学生来也无法解 释，最后村里检修电路，说是开关的螺丝松了，紧紧就好了。　~~~~~~我看完以为这是智障频道的节目，关键是TMD的居然还耐心看完了！ 　　 　　6、还有那集《谁在背我飞行》，一开始那气愤渲染的那叫一个神秘啊。说30年前一农民前一天晚上10点还在河北交通闭塞的农村，第二天一早 5、6点醒来发现自己在南京了，自己不知怎么回事，同样的情况又发生了第二次，只不过到一醒发现自己到上海了。家里还被那两人留了名&quot;山东高登民、高延津&quot;。第三次被两人背着飞行了好几个城市。大概就这么个过程吧，节目弄得又是调查又是取证的，人证物证到处找。太TM神秘了，弄得我那个夜不能睡，日不能饭的啊！那叫一个相思啊！ 　　 结果最后来了几个鸟专家，硬说人家老实八交的农民是梦游去的南京，上海等地。看到这里，我当场晕了好一会，TM梦游做车难道不用买车票吗？难不成那年头全国人民都在梦游？不过想想倒也是，那时候可不是TM全国梦游吗？ 　　 后来，鸟专家又说人农民患了颠痫一切全都是幻觉，什么核磁共振，CT什么的追着人农民给人检查，拿人脑袋不当脑袋，结果检查结果没病，人家脑袋蛮正常。那鸟专家一看，又说了，那你就是得了偏执，这种病是检查不出来的！我当是就又晕了半天！N N 个 熊，T M到底谁得了偏执？人家没病你偏说人家有病，没有检查结果，创造检查结果也要说人家有病，到底谁才象得了偏执地？ 7.最近的一期讲老人自燃的，老人身上的棉衣乃至他摸过的物体都会自燃，结果好奇心大增，看到最后， 我靠！是老头的外孙女点燃的，MD，这和科学有个屁关系。最后还引出几个儿女不孝这个话题，应该归到&quot;家庭&quot;里才对嘛！ 　　　　 　　8、一个孩子经常僵尸附体。做出各种怪动作。比如翻白眼，咬人，胳膊伸直双腿向前跳，还有要喝血，想咬人。 　　镜头昏暗，并且采访了N多村民，大家都表现的很害怕。...</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="开心幽默" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="328" label="Humor" 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.douban.com/group/topic/3761032/">http://www.douban.com/group/topic/3761032/</a>

1、某一集说某个村子每天半夜三更都有怪叫声，把全村人吵醒，大家都不敢出去看，战战兢兢地失眠到天亮。采访了一大堆上了岁数的村民，传说这里出没野兽，每天夜里到村子作怪，闹得人心惶惶......音乐配的那叫一个恐怖！还T M D分上下两集渲染！到最后竟然说那是村里一个胖子睡觉打呼噜！T N N D这胖子是金刚罗汉转世，还是帕瓦罗蒂的私生子？！打个呼噜能把一个村子的人吓醒？！K！我想砸电视！
　　
2、还有一集说是一户人家老是发现自家客厅地上的瓷砖缝里会渗出像血一样的鲜红色液体，弄得到处都是，全村的人都不知道是怎么回事，猜会不会原来这块地是坟地啊什么的，然后又请了N多专家，研究他们家的地理位置地形条件，得出的结论都是依科学不可能发生地下矿物质倒渗这种情况发生......所以，最后的结论就是：液体是这家人家为了出名自己洒上去的！
　　

我"咣垱"！一下倒地！
　　
3、还有一期是说，挂了好几年的牛皮鼓忽然自己长出了牛毛！这件事在当地是蛮有名的件事，节目采访了那么多人，研究从厦大弄到了中央，都没有人说出个 所以然来，最后没办法了，硬栽赃人家做鼓的人不专业，毛没有刮干净，当初牛毛没刮干净？我晕。。。这不是怀疑做鼓人的专业水平吗？呵呵！
　　

以这样的结论打发我，到底是看不起我的智商还是编导智商让人看不起！


4、还有一期说峨眉山的一个古寺，地处森林深处，但屋顶上从来没有一片树叶。就这么个事儿，经过漫长，深沉，全方位，多角度的分析，采访了寺中实习的和尚，游客，保安，居士，文物管理局局长，以及他的姑妈的二姐的堂妹的邻居家的一条狗，最后得出结论----是风吹走的。
　　

我TMD当时就想跳楼！N N个熊，太伤我自尊了！
　　
　　5、刚看了一期，一对老人家的电灯晚上莫名其妙老是自己亮，结果大家都说他们家闹鬼，那对老人还居然病倒了。这其中还请了很牛比的大学生来也无法解 释，最后村里检修电路，说是开关的螺丝松了，紧紧就好了。　~~~~~~我看完以为这是智障频道的节目，关键是TMD的居然还耐心看完了！
　　
　　6、还有那集《谁在背我飞行》，一开始那气愤渲染的那叫一个神秘啊。说30年前一农民前一天晚上10点还在河北交通闭塞的农村，第二天一早 5、6点醒来发现自己在南京了，自己不知怎么回事，同样的情况又发生了第二次，只不过到一醒发现自己到上海了。家里还被那两人留了名"山东高登民、高延津"。第三次被两人背着飞行了好几个城市。大概就这么个过程吧，节目弄得又是调查又是取证的，人证物证到处找。太TM神秘了，弄得我那个夜不能睡，日不能饭的啊！那叫一个相思啊！
　　

结果最后来了几个鸟专家，硬说人家老实八交的农民是梦游去的南京，上海等地。看到这里，我当场晕了好一会，TM梦游做车难道不用买车票吗？难不成那年头全国人民都在梦游？不过想想倒也是，那时候可不是TM全国梦游吗？
　　

后来，鸟专家又说人农民患了颠痫一切全都是幻觉，什么核磁共振，CT什么的追着人农民给人检查，拿人脑袋不当脑袋，结果检查结果没病，人家脑袋蛮正常。那鸟专家一看，又说了，那你就是得了偏执，这种病是检查不出来的！我当是就又晕了半天！N N 个 熊，T M到底谁得了偏执？人家没病你偏说人家有病，没有检查结果，创造检查结果也要说人家有病，到底谁才象得了偏执地？

7.最近的一期讲老人自燃的，老人身上的棉衣乃至他摸过的物体都会自燃，结果好奇心大增，看到最后， 我靠！是老头的外孙女点燃的，MD，这和科学有个屁关系。最后还引出几个儿女不孝这个话题，应该归到"家庭"里才对嘛！
　　　　
　　8、一个孩子经常僵尸附体。做出各种怪动作。比如翻白眼，咬人，胳膊伸直双腿向前跳，还有要喝血，想咬人。

　　镜头昏暗，并且采访了N多村民，大家都表现的很害怕。
　　

后来还搞了一个教授专门来调查，调查不出来。教授又把小孩子拖到华西医科大学的医院去检查，结论是身体健康。
　　

最后，是带那个小孩子去看心理医生。医生问了几个呆问题，得出了结论，是因为小孩子想吸引家人的注意。因为他爸爸平时不太关心他。结果他装僵尸以后，他爸爸就很关心他，带他看医生。


9、一期讲一家没人住的老房子晚上发光，里面有张床像有人睡过，搞得神乎其神～～最后答案是发光是反射对面人家发出来的光，床的解释是一张是１０年没人睡，一张是２年没人睡，结果被他一搞就成了干净一点的就有人睡了．．当场晕厥（幸好我当时在床上）
　　　　
　　10、上次有个不怕电的，手拿220v的电线一点事都没有。最后送到北京某专家处一鉴定，说是该男老茧厚，所以不怕电。我看全中国7亿农民里至少得有5亿不怕电了
　　
　　11、水怪啊？水怪那几期呢，是这么忽悠人的，那个什么天池水怪，是三样东西。分别是水獭，乌龟，。。。第三样东西叫我吐血，居然是朝鲜人开的汽艇！
　　
　　12、最近看了期，是说共租一房的两个女孩，一到夜里就发现屋里不正常，查过去查过来，居然是那两个女孩的电脑中了木马。哈哈哈


13、还有孩子被鬼附身变左宗堂那一集也是解释的不伦不类，人家小孩子就不知道左宗堂是谁，可是把啥都说的轻轻楚楚的，不知道他们最后胡乱解释的啥。小孩僵尸附体时嘴里还念叨古文这个最后也没解释。

　　14、有幸看过一集说是有个人死了N次都活过来了。。。最后结论是死的时候是发病（癫痫）。。。为什么能活过来呢。。是因为乡村里的赤脚医生每次在他假死时都偷偷给他输液。。。
　　
　　15、2006年9月，福建省华安县草板村一户普通的村民家发生了一件非常奇怪的事儿。在深夜，一声巨响，一个不明物体从天而降，撞断树枝，砸穿屋顶，深陷地面，在地里砸出了十几厘米深的坑。而且掉落下来的时候温度很高，摸起来还特别烫手，村民议论纷纷，有人说是陨石，有人说是飞机的零件，还有人传闻是ufo残片，更有甚者竟然说这个东西好像是外星人的尿壶，到底是天外来物还是另有原因？这个不明物体究竟是什么，它怎么会掉落在这儿呢？《走近科学》为您揭开谜底。 　　
　　

经过故弄玄虚之后最后告诉你是TM一私自罐氢气的小贩，不小心把罐弄爆炸，碎片落下来了！我狂晕


16、记不大清楚是不是这栏节目，反正是CCTV10的，说的是一个老农用电笔测出房间带电，后来发展到地面带电，最后干脆，我C，空气带电，220V还多，当然出现这种现象人没事。有点文化的人，或者有点常识的人都知道，肯定是电笔出问题，我是看笑话一样看完节目的，真是服了。
　　
　　17、我看的那期更吊，第一天预告的时候瞎掉我们的胃口，一个女的（忘了哪里的）五年不吃饭，居然身体健康，他家人也承认她五年来的确没有进食，只喝水，我兴趣极度膨胀，还分两集，最后把这女的和他老公弄到省医院检查，最后经过N多专家检查得出一结论，这女的得了臆病，就是幻想症，强迫症之类的，事实上还是吃了东西的，只是吃得少，我真是昏了，她一个人有臆症，他朝夕相处的家人还信誓旦旦的证明，难道她一家人都有狂想症？他一家人又不是想出名，又没有得利，解释来解释去真是难已让人信服！后来还看了一期，一个贵州还是云南那边的少数民族女初中生鬼上身，在课堂上昏倒，醒来后突然家乡话也不会说了，亲人也不认识了，说自己是福建那边来的，还说福建那边的话，最后的结论是这个女孩学习压力大，得了臆病，真 他 吗恶心，以后干脆别叫走进科学了，就叫走进臆病得了，我当时气得噢， 粑 粑 主持人你能相信这个结论吗，出来混饭吃也得花点本钱，随便三两句就想打发咱这些观众，真不知道CCTV办这个节目的初衷是什么，你每次的结论能把自己说服了再来说服观众。


18、谁背我飞行那个外星人系列的还有一集，说村子里面看见飞碟，村里面比较有文化的一个人研究了多年，收集了n多证据，专家跑出了分析半天搞不清楚到底是为什么。难道真的有飞碟和外星人。结果发现那个人其实是个精神病患者，而且村子里面都知道。


　　所谓的调查非常草率，所谓的结论非常荒唐，每次都故弄玄虚、哗众取宠，拍的像鬼片，最后得出一个莫名其妙的结论


19、还有一期节目，说一农村女子身上常常出现字，然后进行了猜测：是鬼附体？于是记者跟踪观察，还去了医院......一个沙哑的声音故弄玄虚地解说着....看不下去了。白痴也知道是自己划的。
这倒显露了我们的科普态度甚至是教育民众的态度：是引领进步，还是愚弄、听之任之。




20、《午夜木乃伊走路》　　


大概讲一个木乃伊展览馆到了晚上就会听到有人在走廊上走路的声音......但是仔细看了却又没有人！！！于是恐怖的木乃伊夜半走路的传言便传开了......于是许多学者介入调查发现.................. 　　
其实是木地板日热涨夜冷缩造成的声响...... 　　　
　



21、《人狼嚎》　　

大致讲一个人他每天到了半夜都会像狼一样对着月亮狼嚎......吓死了四周邻居街坊......于是又有许多学者介入调查发现........................ 　　其实是这个人患有癫痫......平常又喜欢看动物世界......结果晚上发神经的时候就模仿印象中最深刻的狼状...... 　　　　



22、《吐血狂人》

（这个最经典......经典的可以让大家都去吐血好了）　　大致讲一个男人他一运气功，就可以从嘴巴里面吐出血来！！而且他全身都可以出血，只要用嘴巴吸一下皮肤，皮肤上就会有一堆血，而且好起来极快，只要把血擦掉皮肤上就不会留下任何痕迹！！于是又有很多专家学者介入调查..................发现.................. 　其实这个人是牙龈出血..................（真是有够了！！）　　　　


我想说的就是：专家学者们辛苦了！！cctv辛苦了！

23、其他讨论观点

那个走进科学也是的。　科他M的学，说是有不明飞行物，调查后得知那是飞蛾。
还有神秘鬼火，结果是他们家地下天然气泄露。
就是有一期讲的是佛手公主，玄的阿，其实就是遗传性的手脚残疾。真是，前面玄的阿。
牙龈出血那个，真是一个奇冷的笑话～～～　　


还看过中央10套的一个节目，说小孩爬上祭奠塔看见里面有火光，然后神秘兮兮的讲到底，切～～～是当地居民在里面烧垃圾。

大家还有没有看到中央10套讲N多湖里都有水怪，讲来讲去，结果就是某种大鱼----还是疑似，这些人，鱼都不认识了还好意思说。


我还看过一期！　什么分身大盗的：就说那人明明被关监狱里面了，别处犯案之后目击证人还说就是他。反正可神呢！偶就看啊看，最终结局是双胞胎......

吼吼，上次和姐妹饭饭，说起"走近科学"，喷饭不止：


有一集是什么山顶的灯光，怀疑是外星人......我一看就知道了，肯定是旁边酒店的激光灯，果不其然......

我也看了一次，说一头小公牛下了一个怪蛋，又是X光又是找的科学院......原来是饲料缺磷导致小牛患上异食癖，总喜欢舔自己的毛吃，结果毛在体内积攒多了就被拉了出来，圆圆的毛球像个蛋......

今后看完走近科学的观众，会不会冻死唻？......吼吼


前几天王小峰同学在不准联想上又说到一个：一个女娃娃，放学后没有按时回家，大家等啊等，等啊等，等不到，就找啊找，找啊找。。。。。女娃娃消失了，，，，科学开始了。。。。。。其实这个女娃娃在半路上叭叽掉进地缝里，一直爬啊爬，爬啊爬，最后爬上来了，于是回家了，故事完了，科学也完了。
]]>
      
   </content>
</entry>

<entry>
   <title>华友世纪、欢乐传媒、盛大的江湖恩怨</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/05/hurray_end.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2288</id>
   
   <published>2009-05-15T15:26:02Z</published>
   <updated>2009-05-15T15:32:42Z</updated>
   
   <summary>在董朝晖提出收购之前，华友世纪的股价已经跌落至1.50美元，其市值大约在3280万美元。即便以董朝晖3.5美元每股的报价计算，其估值也不过 7654万美元。此次董朝晖收购华友世纪51%股份，同时还要求将华友世纪的当前管理层赶下台，建立以他为首的新团队。董称他的新团队中包含数位娱乐业的资深人士，足以帮助华友世纪摆脱困境。</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="373" label="Hurray" 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.donews.com/Content/200905/2b8da0beab6b4a72ab91b4dbd99b64fc.shtm">链接</a>。

　　自本报前天报道了盛大半路杀出抢购华友世纪一事后，一些更为内幕的细节逐渐浮现出来。

　　昨日，有独立财团人士向记者透露，自从公开向华友世纪股东发布联系邮箱后，已有5%以上股东明确表示，假如华友董事会与盛大秘密谈判没有结果，或公布收购价低于独立财团的每股4美元报价，他们将起诉以王秦岱为首的董事会侵害其利益。

　　"收购华友花费几千万美元，对盛大而言数额不大，而且王秦岱也把盛大当作救命稻草，所以我们的胜算不大。盛大肯定会出更高价钱，如他们出高价，我们就撤，如果盛大出价不高于4美元，我们还会重提方案。"独立财团一人士说。

　　目前，独立财团矛头所指是，华友董事会不与其接触，不给其参与竞购的机会。而华友则通过相关渠道避重就轻地提出独立财团的构成没有公开化。

　　独立财团某人士透露，在此前的收购过程中，由于意识到王秦岱是收购的最大障碍，因此不久前通过股东迫使王秦岱卸任CEO。"去年10月，找王秦岱谈收购的时候，王秦岱并不愿意，说我们根本出不起想要的价位，其实是不想谈。后来我们转头寻找其他大股东，毕竟<strong>王秦岱只占10%的股份，在某些大股东压力下，王秦岱被迫辞任CEO，其现为非执行董事长，不能参与公司经营决策</strong>。"这位人士说，"后来，王秦岱要求全部出售股份，我们只同意收购51%。因此，如果卖给自己引入的盛大，王秦岱会更有台阶下，而我们不会给他台阶下。"他这样解释盛大出现的背景。

　　此前，<strong>华友世纪曾与盛大、光线传媒、灵通网、猫扑网等进行过四次合并谈判，但无一成功，其股价从10美元一路下行</strong>，华友的股东也不知道原因。这位人士表示，原因在于王秦岱总能找到一些方法操控董事会来阻挠收购，王秦岱希望一直操控华友世纪。

　　"王秦岱现在既难以全部高额套现，又只是个挂名董事长，所以现在是<strong>为荣誉而战</strong>，肯定不会卖给视为仇人的独立财团，所以迫使我们必须公开。"他说。"我们没有得到任何竞价机会，说明董事会完全被王秦岱操控。"

　　按照上述人士的说法，由于独立财团施压，王秦岱丢掉了CEO位置，且不能向独立财团全部套现，为了体面地下场，其宁愿由盛大来接盘，哪怕价格较低。

　　据了解，作为一家老SP公司，除了现金储备充裕和有一个唱片公司外，华友世纪业务已经没有多大潜力，去年，其净亏损1200万美元。据分析，盛大收购这个壳极有可能是打算将盛大文学板块并入其中。

　　欢乐传媒原是一家集影视制作、文化经纪、媒介经营业务于一体的娱乐公司，其总裁董朝晖2004年投资500万美元收购文学网站 "榕树下"，开始向互联网进军。董朝晖表示，整合华友的业务，他有信心将公司股价从近期的1美元做到7美元以上。


类似的SP上市公司壳资源不止华友一家，董朝晖们为何对华友世纪情有独钟？他说，因为这家公司股东分散，目前公司最大的持股者也不超过12%。

　　其实，另一重要原因被他回避了。华友世纪手握大笔现金，而且这些现金的价值甚至高于公司市值。据华友世纪的财报显示，<strong>截至2008年12月31日，华友世纪持有的现金及短期存款为5947万美元</strong>。

　　在董朝晖提出收购之前，<strong>华友世纪的股价已经跌落至1.50美元，其市值大约在3280万美元。即便以董朝晖3.5美元每股的报价计算，其估值也不过 7654万美元</strong>。此次董朝晖收购华友世纪51%股份，同时还要求将华友世纪的当前管理层赶下台，建立以他为首的新团队。董称他的新团队中包含数位娱乐业的资深人士，足以帮助华友世纪摆脱困境。


]]>
      
   </content>
</entry>

<entry>
   <title>搞笑版 - 淘宝上的天才回复与评论</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/05/answer_taobao.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2285</id>
   
   <published>2009-05-14T02:15:29Z</published>
   <updated>2009-05-14T02:21:48Z</updated>
   
   <summary>卖家解释：朋友，你拍下就是韩国版，当然是韩文的。这样一个差评，未免太过分了</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="开心幽默" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="396" label="Joke" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      <![CDATA[　　======================================　　
　　物品名称：【皇冠】周杰伦《叶惠美》韩国版...
　　[差评]：搞了好久才明白是韩文的=.=如果一开始说的清楚些更好 第一次买也优点 搞不必清楚
　　<strong>卖家解释</strong>：朋友，你拍下就是韩国版，当然是韩文的。这样一个差评，未免太过分了。
　　======================================
　　物品名称：痔疮栓
　　[差评]：货到的时候，我的痔疮已经好掉了！
　　卖家解释：多好的疗效，听说你买我的药，痔疮都吓没了
　　======================================   
　　物品名称：避孕套
　　[差评]：还好啦，只是说了保密邮寄为什么邮单上还写避孕套啊？让我好尴尬，下次注意啊！
　　卖家解释：我写的是日用品的，可是邮局的人说一定要写具体，然后她给我加上避孕套三个字。你可以看出来字迹都不同的。我觉得我们这里的邮局简直是没有人性。
　　======================================
　　
　　夏天适用时尚提包
　　差评 [详情]卖家服务不好，虽然我知道你很忙，但每次也不必和我说话如此简单
　　吧，不是恩，就是好，一个字一个字的说，太不尊重人了，所以给个差评。
　　解释：呸
　　
　　======================================
　　物品名称:易购厨房刀具5件套
　　差评 [详情] 什么东西呀，用起来一点不爽，差评
　　解释：你花痴呀，要爽大街上拉男人去，鄙视你！！
　　
　　======================================
　　好评：态度不好，东西还行
　　解释：我什么时候对你态度不好了？？？？？？？？？？莫名其妙是不是要我说我爱你觉得态度才好啊！？
　　`======================================
　　
　　商品：512M金士顿内存条
　　评价：{差评} 东西能用，只是你除了"哦"之外，能否讲回答点别的？
　　解释：嗯
　　
　　======================================
　　
　　130万像素视频头
　　评价：{差评} 发货就发货，还留言"沙有哪啦"，老子要抗日！
　　解释：救命哪。
　　======================================
　　秋水伊人夏裙（最新到货）
　　评价：{差评}穿上后大家都说像大妈，根本没有商品图片上那个女的好看。
　　解释：你不象大妈，你是天使，只是降临到地上的时候头先着地了，要不然穿什么都好看。
　　======================================
　　
　　中评：货到及时，但就是态度不够好
　　<strong>解释</strong>：晕，你付的是平邮的钱，我还给你快递了， 你还想要什么样的态度，是不是还需要给你大老远的端茶送水你才满意？
　　======================================
　　
　　日销文胸（最新到货）
　　
　　卖家：你多大？
　　买家：80N
　　卖家： 啊。。。。这么厉害，好像没有N号的文胸的。
　　买家：晕！我是说我是80年的
　　
　　======================================
　　卖家: 皇太极之死史书上说是暴死，但野史一般认为是暗杀
　　买家: 哦，又跑哪里去了
　　卖家: 等你哦过发表意见呢：）
　　买家: 没有意见！又不是我干的！
　　
　　======================================
　　买家：性能力怎么样？
　　卖家：？？？有关系吗？
　　买家：对不起，多了一个力字。性能怎么样？
　　卖家：偶......汗......
　　
　　======================================
　　卖家：为了表示我的诚意，我包邮给你
　　买家：你包邮给我？
　　卖家：是呀
　　买家：包邮你，给我？
　　======================================
　　
　　买家：掌柜好,你家有胖子吗?
　　卖家：......我家LG一百七十斤,算是胖子吧......汗
　　买家：哦,我打错了,是盘子
　　<strong>卖家</strong>：...昏倒，盘子有卖，我家胖子不卖
　　
　　======================================;
　　买家：你这个碗的除了高度和口径，其他的尺寸有没有？厚度？碗底宽度？碗底沿高度？碗壁倾斜角度？
　　卖家：......不好意思，没那么精确啊
　　买家：顾客是上帝，你连尺寸都不清楚做什么生意？
　　卖家：.....上帝啊，求你告诉我我的碗角度是多少吧
　　======================================
　　
　　买家：你好呀姐姐，我想买芦荟鲜汁喔，跟我介绍一下好吗，谢谢姐姐了。
　　卖家：好的~妹妹乖~~请问你的肤质？今年多大了？
　　买家：我四十多，快五十了......皮肤好干喔......姐姐有好的推荐吗
　　卖家：......不好意思失敬了......我是妹妹，我23岁

　　======================================
]]>
      
   </content>
</entry>

<entry>
   <title>宝宝被蚊虫叮咬肿痛怎么办</title>
   <link rel="alternate" type="text/html" href="http://www.eygle.com/digest/2009/04/baby_mosq.html" />
   <id>tag:www.eygle.com,2009:/digest//4.2264</id>
   
   <published>2009-04-26T02:17:39Z</published>
   <updated>2009-04-26T02:22:09Z</updated>
   
   <summary>可用芦荟叶中的汁液止痒。被蚊子叮咬后红肿奇痒时，可切一小片芦荟叶，洗干净后掰开，在红肿处涂擦几下，就能消肿止痒。</summary>
   <author>
      <name>eygle</name>
      <uri>http://www.eygle.com</uri>
   </author>
   
      <category term="孕产婴儿" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="427" label="Baby" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://www.eygle.com/digest/">
      <![CDATA[夏天到来后，蚊子随之孳生，尤其是雨季，蚊虫的幼虫--在大水中大量繁衍。蚊虫的叮咬使人难以入眠，而且还会传播疾病。可是要想彻底消灭蚊虫，并非易事，被蚊叮咬在所难免。蚊虫叮咬时，<strong>在蚊子的口器中分泌出一种有机酸--蚁酸，它的化学成分是HCOOH。这种物质可引起肌肉酸在家庭中可用浓肥皂涂抹可迅速止痒。</strong>原因是肥皂高级脂肪酸的钠盐。如：C17H35COONa。这种脂肪酸的钠盐水解后显碱性。 含OH- 蚁酸水溶液中含H+ ：因为肥皂水中的OH-与蚁酸的H+中和成H2O因此可迅速消除痛 痒。

被蚊子叮后，切忌乱抓乱挠，否则容易造成细菌感染。专家建议，可采取以下方法止痒：

<strong>1.一般人被蚊子叮咬后</strong>，都会出现红肿、痒、痛等症状，这时可用碱性物质进行缓解，比如，可用氨水止痒，也可将香皂蘸水在红肿处涂抹，这样能在数分钟内止痒。

<strong>
2.如果叮咬处很痒，可先用手指弹一弹，再涂上花露水、风油精等</strong>。

<strong>3.用盐水涂抹或冲泡痒处，</strong>这样能使肿块软化，还可以有效止痒。

<strong>4.可用芦荟叶中的汁液止痒。被蚊子叮咬后红肿奇痒时，可切一小片芦荟叶，洗干净后掰开，在红肿处涂擦几下，就能消肿止痒。 </strong>

]]>
      
   </content>
</entry>

</feed>
