<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[大虫的Blog]]></title> 
<link>http://www.cooboy.com/index.php</link> 
<description><![CDATA[最写实的程序员日记]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[大虫的Blog]]></copyright>
<item>
<link>http://www.cooboy.com/read.php?8</link>
<title><![CDATA[何以证明你的设计优秀？]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Fri, 30 Mar 2007 14:44:41 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?8</guid> 
<description>
<![CDATA[ 
	<p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" color=\"#008000\" size=\"2\">这篇文章是我team的一位SA写给team的开发人员的，供大家参考。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" color=\"#008000\" size=\"2\">何以证明你的设计优秀？</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">我想很多人都饱受过糟糕软件设计的痛苦，因此心里总有一股气，自己一定要做一个非常优秀的设计。至少我是这样的人。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">近日公司的一个项目进行TR1评审的时候，在技术方案的评估文档中，我发现其第一项列出的便是上一个版本存在的设计缺陷：</font></p><ol><li><div style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">产品之间复用只是停留在代码级别</font></div></li><li><div style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">模块代码不够独立，后期不能复用</font></div></li><li><div style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">模块代码不易扩展现在的新功能</font></div></li></ol><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">由于是公司产权产品，其具体的内容不便详说。幸好我们只需要关注一下其中的重点。对，就是复用！</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">当然了，这份技术方案中，剩下的就是自己如何解决所有问题，如何提取可供复用组件，如何架构一个好的系统。姑且不谈对本系统的设计如何，我们跳出来看看我们在做一件什么样的事。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">否定 --&gt; 肯定 --&gt; 否定</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">第一个否定，是我们在“否定”上一个版本，“肯定”是我们在肯定自己的版本，最后一个“否定”，是别人来否定我们的版本。不管我们意愿如何，这几乎是很多公司中必然的境况。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">再来看看我们所希望的：我们希望我的设计足够优秀，所以在这个产品的下一个版本的时候（或者维护阶段），他们不会抨击设计的缺陷，并且能发现，</font></p><ol><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">其架构的扩展性非常好，</font> </li><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">可重用的模块也非常多。</font> </li><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">原有系统的稳定性值得肯定。</font></li></ol><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">可是，事实总不如我们想象的那样。为什么呢？</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">古人有一句非常有道理的话：己所不欲，勿施于人。什么意思呢？你希望别人来称赞你的设计，将来来复用你的模块。那么你这么做了吗？你愿意这么做吗？你自己都不做，何以希望别人来做呢？</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">是的，作为设计师的你来说，设计的根本目的是解决问题。解决业务上的问题，解决原有系统的问题。那么你的设计才会被认为是有用的。至于设计是否是优秀的，事实上，谁也没把握。未来的事，谁知道呢？</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">如果只是来证明你有足够能力设计整个系统，我相信你一定早就拥有了。可是说到优秀，却又一个标准问题。这和编写代码不一样。我能编100000行代码，你一定会认为我很强。我把整个系统的大部分全都实现了，你一定会将我捧到非常高的地步。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">可惜，你要考虑的是，你不再是在编码，你是在设计。那么到底设计的衡量标准是什么呢？设计的标准很多，可是我相信有一个非常重要：</font></p><p style=\"TEXT-INDENT: 21pt\"><strong><font face=\"Arial\" size=\"2\">用最少的代码完成最多的事！</font></strong></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">这和程序员的宗旨看上去完全是反其道而行之的。为什么呢？</font></p><ol><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">代码越少，复杂度越低，所隐含的BUG也会越少。</font> </li><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">代码越少，编写成本也越少。生产率提高了，你的待遇也就提高了。</font> </li><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">代码越少，才真正证明了设计的重要性。如果设计就是让系统复杂话的话，要设计做什么？</font> </li><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">代码越少，维护越简单</font></li></ol><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">代码的大量减少，其实是意味着稳定性的模块在持续增加。这些稳定性的模块，才是设计的真正精髓所在。那么，这些稳定性的模块如何来呢？</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">一种选择是你来完成这样的模块，让别人调用。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">另外一个选择就是你直接用别人的模块。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">当然了，这里有一个非常有意思的地方。你或许会说，原来那么差的设计，我怎么使用？只能等我来设计了。可是我要说，如果你眼里只有第一种选择，那么你对别人来说，也不会有第二种选择。或者几乎可以肯定的是，你的设计，没有人会愿意复用。他们总可以发现你的设计中有足够多的缺陷来让他们放弃！就像你现在一样。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">这个不是简单的所谓态度决定一切的阐述。这之间几乎有着必然的联系：</font></p><ol><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" color=\"#008000\" size=\"2\">你发现不了别人系统中可以复用的，那么你在复用方面的意识就没有提升到足够的高度</font> </li><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" color=\"#008000\" size=\"2\">没有足够的高度的复用意思，编写不出足够可以复用的模块</font> </li><li style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" color=\"#008000\" size=\"2\">如此循环。抛弃式的设计只是会证明一点，又有一个存在众多问题的产品出生了。</font></li></ol><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">如果从企业角度来看，那么复用的重要性更是不可言语。不过，公司的高层一般在技术细节方面不会太多涉及，所以反而容易忽略这点最可以提升生产效率的过程。不过好的公司，会规划平台性质的产品模块，来降低系统设计的范围。也可以减少设计的错误。这和前面的想法从基本上是一致的。</font></p><p style=\"TEXT-INDENT: 21pt\"><font face=\"Arial\" size=\"2\">总之一句话，如果在解决问题之外，我们还想设计成优秀的产品，那么先从复用别人开始！</font></p>
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?28</link>
<title><![CDATA[面试PM职位中常问的问题]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Fri, 14 Jul 2006 10:11:30 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?28</guid> 
<description>
<![CDATA[ 
	<p>面试PM职位中常问的问题</p><p>下面是我在面试PM/PL的时候常常提的问题。</p><p>1）简单描述一下你曾经lead过的最满意的项目？<br />考察沟通能力，是否最项目中最重要的要素把握，比如project type, duration, team size, result</p><p>2）为什么觉得满意？那方面做得好，为什么？<br />考察其项目管理的强项</p><p>3）在这个项目中作为项目经理，你觉得最大的challenge是什么？你如何面对的？<br />项目经理啥问题都没有碰到是不可能的，考察对项目日常工作的考察。</p><p>4）平时你如何跟team member assign task？如何track task完成状况？有team member的performance表现不佳，你如何处理？</p><p>前两个问题容易回答。<br />后面一个问题时关于team build的问题。</p><p>5）客户背后说你坏话，打你小报告，你该咋办？<br />客户管理处理</p><p>6）客户需求老变来变去的，我们只能不停的改代码，还常常打乱我们原来的计划？碰到这样的问题，你该如何跟客户交涉？<br />注意，这是个小陷阱，表明上我问的是客户沟通的问题，实际上我考察的是scope管理，作为PM，你压根就不应该让这样的事情发生！</p><p>7）你发现你project的SA的技术决策有问题，但是SA很固执的坚持自己的意见，这样的状况你如何处理？<br />考察的是冲突管理和对PM和SA角色的理解。</p><p>8）在做presale的工作中，你一般采用什么办法来做估算？你觉得你的估算准吗？<br />查考presale的经验，一般来说：WBS，过去数据参考/经验，Peer review，一般来说只要catch到其中之一，应该稍微会好些。</p><p>9）你带的project都是on schedule的吗？你如何保证的？你的team OT的状况怎么样？你觉得效率高吗？<br />整体考虑，都是些小问题。</p><p>10）技术相关问题<br />相应技术还是需要有了解，不会问细节，如果把东西都说反了（项目经验中有写的），那基本就没戏了。<br />不懂的或者不清楚地就不要写在CV上了，不然直接就问倒了！</p><p>一般一轮面试下来大概需要30分钟到45分钟，基本上问题会在一个项目上拓展，会涉及到项目管理的方方面面，如果觉得不是很合适，我可能面试过15分钟就结束了。如果是发现简历中有虚假成分，一般马上就结束了。</p><p />
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?29</link>
<title><![CDATA[需求管理工具试用 – CaliberRM]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Fri, 14 Jul 2006 08:38:05 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?29</guid> 
<description>
<![CDATA[ 
	<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">需求管理工具试用</span><font face="Times New Roman"> <span lang="EN-US">– CaliberRM</span></font></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times=""><font size="3">先说说我的问题：</font></span></p><p></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">目前项目中一直使用</span><span lang="EN-US"><font face="Times New Roman">HP</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">内部的</span><span lang="EN-US"><font face="Times New Roman">RTM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">工具（需求跟踪矩阵）结合</span><span lang="EN-US"><font face="Times New Roman">CR (Change Request) Tracking Sheet</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">来进行管理需求管理工作，基本状况是：</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">项目分为多个子系统，针对一个需求模块编写一个</span><span lang="EN-US"><font face="Times New Roman">SRS (</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">有独立的需求编号</span><span lang="EN-US"><font face="Times New Roman">)</font></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><font face="Times New Roman">SRS</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">文档中包括了用户需求，系统需求和非功能需求。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">唯一的一个</span><span lang="EN-US"><font face="Times New Roman">HLD</font></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">针对每个</span><span lang="EN-US"><font face="Times New Roman">SRS</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">有对应的</span><span lang="EN-US"><font face="Times New Roman">LLD</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，</span><span lang="EN-US"><font face="Times New Roman">Integration Test Case/Test Report, System Test Case/Test Report, Performance Test Case/Report, UAT test case/Report.</font></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">配置管理库用的是</span><span lang="EN-US"><font face="Times New Roman">CVS.</font></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">由于系统庞大（超过</span><span lang="EN-US"><font face="Times New Roman">100ManMonths</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">），需求众多且复杂，</span><span lang="EN-US"><font face="Times New Roman">CR</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">也有不少，使用这样的</span><span lang="EN-US"><font face="Times New Roman">RTM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">工具（</span><span lang="EN-US"><font face="Times New Roman">excel</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">）来维护项目交付物的一致性就显得有些吃力。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">上周，公司组织了一个</span><span lang="EN-US"><font face="Times New Roman">Borland CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">的</span><span lang="EN-US"><font face="Times New Roman">Training</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，讲师来自</span><span lang="EN-US"><font face="Times New Roman">Borland</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，听了将近</span><span lang="EN-US"><font face="Times New Roman">2</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">个小时，效果并不好，夸夸其谈的举了一个生活上例子来说什么是需求就花了接近</span><span lang="EN-US"><font face="Times New Roman">45</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">分钟（晕），讲到</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">的时候发觉没时间了，随意讲了讲，没讲到要害，不说了，</span><span lang="EN-US"><font face="Times New Roman">BS Borland</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，难怪走下坡路</span><span lang="EN-US"><font face="Times New Roman">……</font></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times=""><font size="3">还是自己在网上下载试用版体验一下吧，看看能否解决自己的问题。</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">的客户端有</span><span lang="EN-US"><font face="Times New Roman">web</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">版的还有</span><span lang="EN-US"><font face="Times New Roman">c/s</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">版的，还是选择</span><span lang="EN-US"><font face="Times New Roman">c/s</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">版的吧。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">安装过程非常简单，</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">支持</span><span lang="EN-US"><font face="Times New Roman">Sql Server, Oracle</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">和</span><span lang="EN-US"><font face="Times New Roman">access</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">数据库，既然是试用，还是缺省的</span><span lang="EN-US"><font face="Times New Roman">access</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">吧。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">体会</span><span lang="EN-US"><font face="Times New Roman">1</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">：</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">就是一个需求管理工具。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times=""><font size="3">为什么会有这样奇怪的体会呢？</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">需求工程分为需求开发和需求管理，对于需求开发来说，比如需求获取和需求定义，</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">并不能提供太多的帮助。</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">对于一个需求来说，有一个</span><span lang="EN-US"><font face="Times New Roman">details</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">的文本输入框，其他主要就是各种属性（可以自己加入自定义属性），对于完整描述一个需求来说，感觉有点弱。在需求买书输入框中，需要放入</span><span lang="EN-US"><font face="Times New Roman">UI</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">的图片，就没有足够的支持，也没有</span><span lang="EN-US"><font face="Times New Roman">HTML</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">的支持，比起</span><span lang="EN-US"><font face="Times New Roman">word</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">来说实在是没法比。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">结论：对于复杂的系统来说，我更愿意把</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">作为一个需求索引的工具，在</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">里面记录各种需求和彼此间的关系，真正的需求内容还是写在</span><span lang="EN-US"><font face="Times New Roman">word</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">文档里面并存放在配置管理库中，并建立映射关系。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">体会</span><span lang="EN-US"><font face="Times New Roman">2</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">：为了</span><span lang="EN-US"><font face="Times New Roman">StarTeam</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">不支持</span><span lang="EN-US"><font face="Times New Roman">CVS</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><font face="Times New Roman">Borland</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">自己在推自己的配置管理工具</span><span lang="EN-US"><font face="Times New Roman">StarTeam</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，因此</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">及其它产品都不支持</span><span lang="EN-US"><font face="Times New Roman">CVS</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，这点让我非常的郁闷。支持</span><span lang="EN-US"><font face="Times New Roman">VSS</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">也做得很不地道，帮助文件里面就简单的写了几句，根本没法弄起来。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">结论：</span><span lang="EN-US"><font face="Times New Roman">Borland</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">一不小心把自己当成</span><span lang="EN-US"><font face="Times New Roman">MS</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">了。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">体会</span><span lang="EN-US"><font face="Times New Roman">3</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">：关于需求跟踪</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">一直在琢磨</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">会怎么把设计和</span><span lang="EN-US"><font face="Times New Roman">testcase</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">建立起好的</span><span lang="EN-US"><font face="Times New Roman">link</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，原来在需求类型里，除了用户需求，业务需求，系统需求外，还有可以增加的设计需求，测试需求，性能需求，通过这些需求类型可以很好的把需求</span><span lang="EN-US"><font face="Times New Roman">/</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">设计</span><span lang="EN-US"><font face="Times New Roman">/</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">测试建立好的</span><span lang="EN-US"><font face="Times New Roman">Link</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，从而可以保证文档的一致性，生成的需求跟踪矩阵可以比较好的图形化展示之间的关系。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">体会</span><span lang="EN-US"><font face="Times New Roman">4</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">：关于需求版本管理</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">这点是</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">比较好的地方，每个需求均有完整的版本管理并能够很好的同配置管理库结合（这个我没有装</span><span lang="EN-US"><font face="Times New Roman">StarTeam</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，但是应该</span><span lang="EN-US"><font face="Times New Roman">okey</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">的）</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">每个需求均有讨论板，需求历史，需求</span><span lang="EN-US"><font face="Times New Roman">approval</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">定义，增加自定义属性还可以更完整的了解需求状态。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">体会</span><span lang="EN-US"><font face="Times New Roman">5</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">：变更管理</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">在</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">里面，</span><span lang="EN-US"><font face="Times New Roman">2</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">个关联的需求，你修改了其中一个，你通过</span><span lang="EN-US"><font face="Times New Roman">Traceability Diagram</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">可以很清楚的看到两个需求之间变化。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">另外需求必须得到</span><span lang="EN-US"><font face="Times New Roman">approve</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">之后才能够</span><span lang="EN-US"><font face="Times New Roman">approve</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，</span><span lang="EN-US"><font face="Times New Roman">approve</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">之后需求就不能够修改，除非你建立一个新的基线。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">前面提到版本管理做得很好，但是没有明确的变更流程就不应该了，但是我觉得应该内置</span><span lang="EN-US"><font face="Times New Roman">”</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">变更需求</span><span lang="EN-US"><font face="Times New Roman">”</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">，</span><span lang="EN-US"><font face="Times New Roman">”</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">变更</span><span lang="EN-US"><font face="Times New Roman">”</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">是需求管理中最重要的部分，可以根据</span><span lang="EN-US"><font face="Times New Roman">”</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">变更“去修改各个需求，但是”变更“本身应该</span><span lang="EN-US"><font face="Times New Roman">highlight</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">出来。需求跟踪矩阵的作用是当一个变更产生时，你可以了解哪些相关联的交付物需要修改，并可以持续的进行</span><span lang="EN-US"><font face="Times New Roman">tracking</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">举个我项目中例子，客户提出</span><span lang="EN-US"><font face="Times New Roman">CR</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">单，我们会分析</span><span lang="EN-US"><font face="Times New Roman">CR</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">的影响，我会把这个</span><span lang="EN-US"><font face="Times New Roman">CR</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">放进</span><span lang="EN-US"><font face="Times New Roman">RTM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">中，并</span><span lang="EN-US"><font face="Times New Roman">tracking</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">受影响的各个交付物的完成状况，</span><span lang="EN-US"><font face="Times New Roman">CR</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">也会一直跟踪到它</span><span lang="EN-US"><font face="Times New Roman">close</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">体会</span><span lang="EN-US"><font face="Times New Roman">6</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">：文档生成和</span><span lang="EN-US"><font face="Times New Roman">report</font></span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">文档生成还不错，但是</span><span lang="EN-US"><font face="Times New Roman">report</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">就很少，分析就跟不用提了。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times=""><font size="3">总结：</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><font face="Times New Roman">1</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">）</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">是一款不错的需求管理工具，界面简洁，</span><span lang="EN-US"><font face="Times New Roman">Bug</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">少，速度快，能够很好的解决我需要解决的问题：需求一致性检查，需求跟踪，基线维护等。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times=""><font size="3">需求定义做得比较简陋，如果能够完善完善就好了，可以把需求都搬上来就好了。</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><font face="Times New Roman">2</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">）相比</span><span lang="EN-US"><font face="Times New Roman">Doors</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">来说，</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">还差得比较远。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><font size="3"><span lang="EN-US"><font face="Times New Roman">3</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">）我不会采用</span><span lang="EN-US"><font face="Times New Roman">CaliberRM</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " roman??="" new="" ?times="" mso-hansi-font-family:="" roman?;="" times="">作为项目的需求管理工具。</span></font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN-US"></span><p /><p /></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p></p><p><font face="Times New Roman" size="3"> </font></p>
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?86</link>
<title><![CDATA[软件工程、软件过程常见术语缩写表]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Sat, 17 Sep 2005 04:25:31 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?86</guid> 
<description>
<![CDATA[ 
	<h2>软件工程、软件过程术语缩写表</h2><p><table style="FONT-SIZE: 90%; COLOR: #000099" cellspacing="4" cellpadding="4" width="581"><tbody><tr><td>SE</td><td>Software Engineering</td><td>软件工程</td></tr><tr><td>BURS</td><td>Business and User Requirement Specification</td><td>业务和用户需求规格说明</td></tr><tr><td>CCB</td><td>Change Control Board</td><td>变更控制委员会</td></tr><tr><td>CI</td><td>Configuration Item</td><td>配置管理项</td></tr><tr><td>CR</td><td>Change Request</td><td>变更申请</td></tr><tr><td>CMM</td><td>Capability Maturity  Model</td><td>软件能力成熟度模型</td></tr><tr><td>COQ</td><td>Cost Of Quality</td><td>质量成本</td></tr><tr><td>CUT</td><td>Coding&amp;Unit Test /Construct</td><td>编码及单元测试</td></tr><tr><td>DD</td><td>Detail Design</td><td>详细设计</td></tr><tr><td>DP</td><td>Defect Prevention ( CMM Level 5 KPA )</td><td>缺陷预防(CMM第五级的KPA)</td></tr><tr><td>FURPS+</td><td>Functionality, Usability, Reliability, Performance,<br />Supportability, + Localizability, Portability</td><td>功能性，可用性，可靠性，性能，支持性<br />＋ 本地化，可移植性</td></tr><tr><td>HLD</td><td>High Level Design</td><td>概要设计</td></tr><tr><td>IC (IGC)</td><td>Intergroup Coordination ( CMM Level 3 KPA )</td><td>组间协调（CMM第三级的KPA）</td></tr><tr><td>ISM</td><td>Integrated Software Management ( CMM Level 3 KPA )</td><td>集成软件管理（CMM第三级的KPA）</td></tr><tr><td>IT</td><td>Integration Test</td><td>集成测试</td></tr><tr><td>KPA</td><td>Key Process Area</td><td>关键过程区域</td></tr><tr><td>LC</td><td>Lifecycle</td><td>生命周期</td></tr><tr><td>LLD</td><td>Low Level Design</td><td>详细设计</td></tr><tr><td>OOA</td><td>Object Ori<font size="-1">ented Analysis</font></td><td>面对对象分析</td></tr><tr><td>OOD</td><td>Object Oriented Design</td><td>面向对象设计</td></tr><tr><td>OPD</td><td>Organization Process Definition ( CMM Level 3 KPA )</td><td>组织过程定义（CMM第三级的KPA）</td></tr><tr><td>OPF</td><td>Organization Process Focus ( CMM Level 3 KPA )</td><td>组织过程焦点（CMM第三级的KPA）</td></tr><tr><td>OSSP</td><td>Organization Standard Software Process</td><td>组织标准软件过程</td></tr><tr><td>PCB</td><td>Process Capability  Baselines</td><td>过程能力基准</td></tr><tr><td>PCM</td><td>Process Change  Management ( CMM Level 5 KPA )</td><td>过程更改管理（CMM第五级的KPA）</td></tr><tr><td>PDSP</td><td>Project's Defined  Software Process</td><td>项目定义的软件过程</td></tr><tr><td>PI</td><td>Process Improvement</td><td>过程改进</td></tr><tr><td>PMR</td><td>Project Management Review</td><td>项目管理评审</td></tr><tr><td>PM</td><td>Project Manager</td><td>项目经理</td></tr><tr><td>PP</td><td>Project Planning</td><td>项目策划</td></tr><tr><td>PR</td><td>Peer Reviews ( CMM Level 3 KPA)</td><td>同行评审（CMM第三级的KPA）</td></tr><tr><td>QC</td><td>Quality Champion</td><td>项目SQA人员</td></tr><tr><td>QP</td><td>Quality Plan</td><td>质量计划</td></tr><tr><td>QPM</td><td>Quantitative Process  Management  ( CMM Level 4 KPA )</td><td>定量过程管理（CMM第四级的KPA）</td></tr><tr><td>RA</td><td>Requirement Analysis</td><td>需求分析</td></tr><tr><td>RCA</td><td>Root Cause Analysis</td><td>根本原因分析</td></tr><tr><td>RFP</td><td>Request for Proposal</td><td>提议和请求</td></tr><tr><td>RM</td><td>Requirements  Management  ( CMM Level 2 KPA )</td><td>需求管理（CMM第二级的KPA）</td></tr><tr><td>ROI</td><td>Return On Investment</td><td>投资收益率</td></tr><tr><td>SCCB</td><td>Software Configuration Control Board</td><td>软件配置控制组</td></tr><tr><td>SCM</td><td>Software Configuration Management ( CMM Level 2 KPA)</td><td>软件配置管理（CMM第二级的KPA）</td></tr><tr><td>SCMP</td><td>Software Configuration Management Plan</td><td>软件配置管理计划</td></tr><tr><td>SDLC</td><td>Software Development Life Cycle</td><td>软件开发生命周期</td></tr><tr><td>SEI</td><td>Software Engineering Institute</td><td>软件工程研究所</td></tr><tr><td>SEPG</td><td>Software Engineering  Process Group</td><td>软件工程过程组</td></tr><tr><td>SD</td><td>System Design</td><td>系统设计</td></tr><tr><td>SMR</td><td>Senior Management  Review</td><td>高级管理评审</td></tr><tr><td>SPC</td><td>Statistical Process Control</td><td>统计过程控制</td></tr><tr><td>SPE</td><td>Software Product Engineering ( CMM Level 3 KPA )</td><td>软件产品工程（CMM第三级的KPA）</td></tr><tr><td>SPI</td><td>Software Process  Improvement</td><td>软件过程改进</td></tr><tr><td>SPP</td><td>Software Project Plan ( CMM Level 2 KPA )</td><td>软件项目策划（CMM第二级的KPA）</td></tr><tr><td>SPTO</td><td>Software Project Tracking &amp; Oversight</td><td>软件项目跟踪和监督</td></tr><tr><td>SQA</td><td>Software Quality  Assurance  ( CMM Level 2 KPA )</td><td>软件质量保证（CMM第二级的KPA）</td></tr><tr><td>SQM</td><td>Software Quality Management</td><td>软件质量管理</td></tr><tr><td width="8%">SRS</td><td width="37%">System/Software Requirement Specification</td><td width="28%">软件需求规格说明</td></tr><tr><td width="8%">SSD</td><td width="37%">System Sequence Diagram</td><td width="28%"><span lang="zh-cn">系统时序图</span></td></tr><tr><td>SSM</td><td>Software Subcontract Management  ( CMM Level 2 KPA )</td><td>软件子合同管理（CMM第二级的KPA）</td></tr><tr><td>TCM</td><td>Technology Change Management</td><td>技术改革管理</td></tr><tr><td>TP</td><td>Training Plan / Training Program  ( CMM Level 3 KPA )</td><td>培训大纲（CMM第三级的KPA）</td></tr><tr><td>TQM</td><td>Total Quality Management</td><td>总质量管理</td></tr><tr><td>UAT</td><td>User Acceptance Test</td><td><span lang="zh-cn">用户验收测试</span></td></tr><tr><td>UC</td><td>Use Case</td><td>用例</td></tr><tr><td>UCD</td><td>Use Case Diagram</td><td>用例图</td></tr><tr><td>UT</td><td>Unit Testing</td><td>单元测试</td></tr><tr><td>WBS</td><td>Work Breakdown Structure</td><td>工作分解结构</td></tr><tr><td>　</td><td>　</td><td>　</td></tr></tbody></table></p>
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?117</link>
<title><![CDATA[数据库join查询介绍 ]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Sat, 11 Dec 2004 04:53:01 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?117</guid> 
<description>
<![CDATA[ 
	<table width="100%"><tbody><tr><td bgcolor="#00008b"><font color="#dddddd">数据库join查询介绍</font></td></tr><tr><td align="center">2004/12/11 04:40:26</td></tr></tbody></table><hr width="80%" />连接查询 <br /><br />通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点，也是它区别于其它类型数据库管理系统的一个标志。<br /><br />在关系数据库管理系统中，表建立时各数据之间的关系不必确定，常把一个实体的所有信息存放在一个表中。当检索数据时，通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性，他们可以在任何时候增加新的数据类型。为不同实体创建新的表，尔后通过连接进行查询。<br /><br />连接可以在SELECT 语句的FROM子句或WHERE子句中建立，似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以，在Transact-SQL中推荐使用这种方法。<br /><br />SQL-92标准所定义的FROM子句的连接语法格式为：<br />FROM join_table join_type join_table<br />[ON (join_condition)]<br />其中join_table指出参与连接操作的表名，连接可以对同一个表操作，也可以对多表操作，对同一个表操作的连接又称做自连接。<br /><br />join_type 指出连接类型，可分为三种：内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作，并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同，内连接又分为等值连接、自然连接和不等连接三种。<br /><br />外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是，外连接不只列出与连接条件相匹配的行，而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。<br /><br />交叉连接(CROSS JOIN)没有WHERE 子句，它返回连接表中所有数据行的笛卡尔积，其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。<br /><br />连接操作中的ON (join_condition) 子句指出连接条件，它由被连接表中的列和比较运算符、逻辑运算符等构成。<br /><br />无论哪种连接都不能对text、ntext和image数据类型列进行直接连接，但可以对这三种列进行间接连接。例如：<br /><br />SELECT p1.pub_id,p2.pub_id,p1.pr_info<br />FROM pub_info AS p1 INNER JOIN pub_info AS p2<br />ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)<br /><br />(一)内连接<br />内连接查询操作列出与连接条件匹配的数据行，它使用比较运算符比较被连接列的列值。内连接分<br />三种：<br />1、等值连接：在连接条件中使用等于号(=)运算符比较被连接列的列值，其查询结果中列出被连接表中的所有列，包括其中的重复列。<br /><br /><br />2、不等连接： 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括&gt;、&gt;=、&lt;=、&lt;、!&gt;、!&lt;和&lt;&gt;。<br /><br />3、自然连接：在连接条件中使用等于(=)运算符比较被连接列的列值，但它使用选择列表指出查询结果集合中所包括的列，并删除连接表中的重复列。<br /><br />例，下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社：<br />SELECT *<br />FROM authors AS a INNER JOIN publishers AS p<br />ON a.city=p.city<br /><br />又如使用自然连接，在选择列表中删除authors 和publishers 表中重复列(city和state)：<br />SELECT a.*,p.pub_id,p.pub_name,p.country<br />FROM authors AS a INNER JOIN publishers AS p<br />ON a.city=p.city<br /><br />(二)外连接<br /><br />内连接时，返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时，它返回到查询结果集合中的不仅包含符合连接条件的行，而还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。<br /><br />如下面使用左外连接将论坛内容和作者信息连接起来：<br />SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b<br />ON a.username=b.username<br /><br />下面使用全外连接将city表中的所有作者以及user表中的所有作者，以及他们所在的城市：<br />SELECT a.*,b.*<br />FROM city as a FULL OUTER JOIN user as b<br />ON a.username=b.username<br /><br />(三)交叉连接<br />交叉连接不带WHERE 子句，它返回被连接的两个表所有数据行的笛卡尔积，返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。<br /><br />例，titles表中有6类图书，而publishers表中有8家出版社，则下列交叉连接检索到的记录数将等于6*8=48行。<br /><br /><br />SELECT type,pub_name<br />FROM titles CROSS JOIN publishers<br />ORDER BY type <br /><br />
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?118</link>
<title><![CDATA[Oracle锁管理中常用的3个SQL语句 ]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Sat, 11 Dec 2004 04:52:29 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?118</guid> 
<description>
<![CDATA[ 
	<table width="100%"><tbody><tr><td bgcolor="#00008b"><font color="#dddddd">Oracle锁管理中常用的3个SQL语句</font></td></tr><tr><td align="center">2004/12/11 04:35:22</td></tr></tbody></table><hr width="80%" />select b.owner,b.object_name,l.session_id,l.locked_mode,l.*<br />from v$locked_object l, dba_objects b<br />where b.object_id=l.object_id<br /><br />select t2.username,t2.sid,t2.serial#,t2.logon_time ,t2.*<br />from v$locked_object t1,v$session t2 <br />where t1.session_id=t2.sid order by t2.logon_time<br /><br />alter system kill session '18,16583'<br />
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?119</link>
<title><![CDATA[db2向oracle8i移植的总结]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Sat, 11 Dec 2004 04:52:02 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?119</guid> 
<description>
<![CDATA[ 
	<table width="100%"><tbody><tr><td bgcolor="#00008b"><font color="#dddddd">db2向oracle8i移植的总结</font></td></tr><tr><td align="center">2004/12/11 04:33:11</td></tr></tbody></table><hr width="80%" /><br /><br /><br />目前总结的问题如下<br /><br /><br />一. 环境<br />1. DB2环境<br />Linux(redhat 7.2)+DB2(UDB7.1)+g++<br /><br />2. Oracle环境<br />Linux(suse)+Oracle8i+cc<br /><br />二. 功能点<br />1. 数据库连接与断开<br />DB2使用 EXEC SQL CONNECT TO :dbname USER :usrid USING :passwd;进行连接<br />Oracle使用 EXEC SQL CONNECT :usrid IDENTIFIED BY :passwd; 进行连接<br />DB2使用 EXEC SQL CONNECT RESET;断开连接<br />Oracle可以不显式地断开连接，但通常也用 EXEC SQL COMMIT RELEASE; <br /><br />结论，必须修改，但这部分工作量不太，因为正常情况下只有主程序去连接数据库<br /><br />2. 事务提交与撤销<br />DB2和Oracle都使用EXEC SQL COMMIT WORK;和EXEC SQL ROLLBACK;<br /><br />结论，无须修改。<br /><br />3. 静态SQL(不使用任何数据库函数)<br />对于不使用任何数据库函数（比如数据转化，字符定位等），DB2和Oracle都使用共同的SQL标准，对于增删改查，联接，游标，子查询等都相同<br /><br />结论，无须修改。<br /><br />4. 动态SQL(不使用任何数据库函数)<br />对于不使用任何数据库函数（比如数据转化，字符定位等），DB2和Oracle都使用共同的SQL标准，对于增删改查，联接，游标，子查询等都相同<br /><br />结论，无须修改。<br /><br />5. 宿主变量<br />DB2和Oracle都支持普通类型的宿主变量和宿主变量结构，但是对于一个结构来说，一般为了解决Null的问题，会在一个结构后增加一个short类型的数据或结构。<br />目前DB2使用的方案为<br />struct{<br />char xtzt[2];<br />char rq[9];<br />} rec;<br />int rec_ind[2];<br />对于Oracle必须改为<br />struct{<br />char xtzt[2];<br />char rq[9];<br />} rec;<br />struct{<br />short xtzt_ind;<br />short rq_ind<br />} rec_ind;<br /><br />结论，需要修改。这部分有相当的工作量<br /><br />6. 数据库函数<br />DB2和Oracle提供的数据库函数有相当的差异<br />例如，对DateTime类型的字段需要转换到CHAR<br />DB2使用CHAR(XXX)<br />ORACLE使用TO_CHAR(XXX,’YYYYMMDD’)<br />其它一些字符处理函数如Locate等也有一定的差异<br /><br />结论，需要修改。这部分有相当的工作量<br /><br />7. SQLDA<br />DB2的SQLDA的数据结构和使用方法和ORACLE的SQLDA完全不同，这部分的编码需要彻底重写<br /><br />结论，需要重写。这部分有相当的工作量<br /><br />8. 其他数据库管理命令<br />对于执行像Import,Export这样的数据库实用程序，DB2和ORACLE的参数有较大的差异，如果在Linux上执行这些实用程序，可能会面临字符集的问题。<br />
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?120</link>
<title><![CDATA[Temporary Tables临时表]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Sat, 11 Dec 2004 04:51:19 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?120</guid> 
<description>
<![CDATA[ 
	<table width="100%"><tbody><tr><td bgcolor="#00008b"><font color="#dddddd">Temporary Tables临时表</font></td></tr><tr><td align="center">2004/12/11 04:31:09</td></tr></tbody></table><hr width="80%" />Temporary Tables临时表<br />备注：偶尔会用到oracle的临时表，特别记录。<br /><br /><br />目录<br /><br />1简介<br /><br />2详细介绍<br /><br />3建立临时表<br /><br />4 与SQL SERVER的异同<br /><br /><br /><br />1简介<br /><br />ORACLE数据库除了可以保存永久表外，还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据，或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候，临时表的数据自动清空，但是临时表的结构以及元数据还存储在用户的数据字典中。<br /><br />In addition to permanent tables, Oracle can create temporary tables to hold session-private data that exists only for the duration of a transaction or session.<br />Temporary tables are supported by Oracle9i and Oracle8i.<br /><br /><br />2详细介绍<br /><br />Oracle临时表分为 会话级临时表 和 事务级临时表。<br />会话级临时表是指临时表中的数据只在会话生命周期之中存在，当用户退出会话结束的时候，Oracle自动清除临时表中数据。<br />事务级临时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束（commit or rollback），Oracle自动清除临时表中数据。<br />临时表中的数据只对当前Session有效，每个Session都有自己的临时数据，并且不能访问其它Session的临时表中的数据。因此，临时表不需要DML锁。<br />The CREATE GLOBAL TEMPORARY TABLE statement creates a temporary table that can be transaction-specific or session-specific. For transaction-specific temporary tables, data exists for the duration of the transaction. For session-specific temporary tables, data exists for the duration of the session. Data in a temporary table is private to the session. Each session can only see and modify its own data. DML locks are not acquired on the data of the temporary tables. The LOCK statement has no effect on a temporary table, because each session has its own private data.<br /><br />当一个会话结束(用户正常退出 用户不正常退出 ORACLE实例崩溃)或者一个事务结束的时候，Oracle对这个会话的表执行 TRUNCATE 语句清空临时表数据.但不会清空其它会话临时表中的数据.<br /><br />A TRUNCATE statement issued on a session-specific temporary table truncates data in its own session. It does not truncate the data of other sessions that are using the same table.<br />DML statements on temporary tables do not generate redo logs for the data changes. However, undo logs for the data and redo logs for the undo logs are generated. Data from the temporary table is automatically dropped in the case of session termination, either when the user logs off or when the session terminates abnormally such as during a session or instance failure.<br /><br />你可以索引临时表和在临时表基础上建立视图.同样,建立在临时表上的索引也是临时的,也是只对当前会话或者事务有效. 临时表可以拥有触发器.<br /><br />You can create indexes for temporary tables using the CREATE INDEX statement. Indexes created on temporary tables are also temporary, and the data in the index has the same session or transaction scope as the data in the temporary table.<br />You can create views that access both temporary and permanent tables. You can also create triggers on temporary tables.<br /><br />3建立临时表<br />临时表的定义对所有会话SESSION都是可见的,但是表中的数据只对当前的会话或者事务有效. <br /><br />建立方法:<br /><br />1) ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法.<br />CREATE GLOBAL TEMPORARY TABLE admin_work_area<br />(startdate DATE,<br />enddate DATE,<br />class CHAR(20))<br />ON COMMIT DELETE ROWS;<br /><br />EXAMPLE:<br /><br />SQL&gt; CREATE GLOBAL TEMPORARY TABLE admin_work_area<br />2 (startdate DATE,<br />3 enddate DATE,<br />4 class CHAR(20))<br />5 ON COMMIT DELETE ROWS;<br />SQL&gt; create table permernate( a number);<br />SQL&gt; insert into admin_work_area values(sysdate,sysdate,'temperary table');<br />SQL&gt; insert into permernate values(1);<br />SQL&gt; commit;<br />SQL&gt; select * from admin_work_area;<br />SQL&gt; select * from permernate;<br />A<br /><br />1<br /><br />2)ON COMMIT PRESERVE ROWS 定义了创建会话级临时表的方法.<br />CREATE GLOBAL TEMPORARY TABLE admin_work_area<br />(startdate DATE,<br />enddate DATE,<br />class CHAR(20))<br />ON COMMIT PRESERVE ROWS;<br />EXAMPLE:<br /><br />会话1:<br /><br />SQL&gt; drop table admin_work_area;<br />SQL&gt; CREATE GLOBAL TEMPORARY TABLE admin_work_area<br />2 (startdate DATE,<br />3 enddate DATE,<br />4 class CHAR(20))<br />5 ON COMMIT PRESERVE ROWS;<br />SQL&gt; insert into permernate values(2);<br />SQL&gt; insert into admin_work_area values(sysdate,sysdate,'session temperary');<br />SQL&gt; commit;<br />SQL&gt; select * from permernate;<br /><br />A<br />----------<br />1<br />2<br /><br /><br />SQL&gt; select * from admin_work_area;<br /><br />STARTDATE ENDDATE CLASS<br />---------- ---------- --------------------<br />17-1ÔÂ -03 17-1ÔÂ -03 session temperary<br /><br />会话2:<br /><br />SQL&gt; select * from permernate;<br /><br />A<br />----------<br />1<br />2<br /><br />SQL&gt; select * from admin_work_area;<br /><br /><br />未选择行.<br /><br />会话2看不见会话1中临时表的数据.<br /><br /><br /><br />4 ORACLE临时表和SQLSERVER临时表异同<br /><br />SQL SERVER临时表<br /><br />也可以创建临时表。临时表与永久表相似，但临时表存储在 tempdb 中，当不再使用时会自动删除。<br />有本地和全局两种类型的临时表，二者在名称、可见性和可用性上均不相同。本地临时表的名称以单个数字符号 (#) 打头；它们仅对当前的用户连接是可见的；当用户从 Microsoft® SQL Server™ 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头，创建后对任何用户都是可见的，当所有引用该表的用户从 SQL Server 断开连接时被删除。<br />例如，如果创建名为 employees 的表，则任何人只要在数据库中有使用该表的安全权限就可以使用该表，除非它已删除。如果创建名为 #employees 的本地临时表，只有您能对该表执行操作且在断开连接时该表删除。如果创建名为 ##employees 的全局临时表，数据表中的任何用户均可对该表执行操作。如果该表在您创建后没有其他用户使用，则当您断开连接时该表删除。如果该表在您创建后有其他用户使用，则 SQL Server在所有用户断开连接后删除该表<br />不同:<br /><br />1. SQL SERVER临时表是一种”内存表”,表是存储在内存中的.ORACLE临时表除非执行DROP TABLE,否则表定义会保留在数据字典中.<br /><br />2. SQL SERVER临时表不存在类似ORACLE临时表 事务级别 上的功能.<br /><br />3 SQL SERVER本地临时表(#) 与 ORACLE的会话级别临时表类似,但是在会话退出的时候,ORACLE不会删除表.<br /><br />4 SQL SERVER的全局临时表(##) 是指多个连接共享同一片内存.当没有指针引用该内存区域时,SQL SERVER自动释放全局临时表.<br /><br />5 由于ORACLE不是一种 内存中的数据库. 所以如果ORACLE类似SQL SERVER 频繁的对临时表进行建立和删除,必定会影响性能.所以ORACLE会保留临时表的定义直到用户DROP TABLE.<br /><br />6 在ORACLE中,如果需要多个用户共享一个表(类似SQL SERVER的全局临时表##).则可以利用永久表,并且在表中添加一些可以唯一标识用户的列.利用触发器和视图.当用户退出的时候,根据该登陆用户的唯一信息删除相应的表中的数据. 这种方法给ORACLE带来了一定量的负载.<br />
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?121</link>
<title><![CDATA[HP－UX系统培训 ]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Sat, 11 Dec 2004 04:50:32 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?121</guid> 
<description>
<![CDATA[ 
	<table width="100%"><tbody><tr><td bgcolor="#00008b"><font color="#dddddd">HP－UX系统培训</font></td></tr><tr><td align="center">2004/12/11 04:22:42</td></tr></tbody></table><hr width="80%" /><br /><br />培训内容：小型机上的HP UNIX、磁盘镜像、双机热备、数据库<br /><br />&lt;1&gt;HP rx4640服务器介绍<br /><br />产 品 性 能 指 标 <br />基本规格 <br />处理器类型 Intel Itanium 2 <br />处理器主频 1.3GHz<br />处理器缓存 3 MB<br />最大处理器个数 4 <br />内存类型 PC2100 ECC <br />标准内存容量 4GB (扩展板一条为4*256M)<br />最大内存容量 96GB <br />存储设备 <br />硬盘类型 SCSI <br />标准硬盘容量（GB） 36.4 * 2/台<br />软驱 选购 <br />光驱 DVD-ROM <br />网络 <br />网卡类型/数量 PCI 1000Base-SX Gigabit Ehternet Adpt/2<br />接口与扩展槽 <br />I/O端口 1 个通用RS-232 串口,2 个用于集成管理处理器的RX-232 串口,2 个USB 端口 <br />扩展槽个数 6 <br />电力规格 <br />电源类型 冗余热插拔电源 <br />电源个数 N+1 <br />是否冗余 是 <br />软件系统 <br />操作系统 HP-UX 11i v2,Microsoft Windows Server 2003,Enterprise Edition (64 位)Linux-Red Hat 和SuSE/United Linux 发行套件,OpenVMS Industry Standard 64,Evaluation Release 8.1 <br />管理软件 拥有单独支持的处理器和总线的内置故障管理系统,集成的HP Secure Web Console可进行基于Web的管理 <br />环境参数 <br />工作温度（℃） 5 - 35 <br />工作湿度 15%到80% RH 非冷凝 <br /><br /><br />&lt;2&gt;HP ds2405磁盘系统<br />高性能：支持最新的2 Gb光纤通道互连，速度达200 MB/s （光纤卡：PCI 2GB Fibre Channel Adapter）<br />可靠性：通过冗余电源、风扇和I/O卡确保数据存取 <br />可管理性：通过SCSI Enclosure Services简化管理及远程管理 <br />开放性：支持多种操作系统，包括HP-UX、Windows NT和Windows 2000 <br />灵活：支持混合磁盘环境，向下兼容1 Gb光纤通道 <br />结构紧凑：在3U外形中最多可以安装15个磁盘驱动器(或超过1 TB的容量) <br />可升级性：可向虚拟阵列VA升级（如VA7110虚拟阵列），提供投资保护 <br />可扩展性：可在单一回路上扩展到105个磁盘驱动器，满足不断发展的存储需要 <br />易维护性：采用热插拔磁盘、电源、风扇和I/O卡，维修方便 <br /><br />&lt;3&gt;磁盘镜像MirrorDisk（RAID 1）<br /><br />RAID知识简介：<br /><br />RAID 是 (Redundant Array of Independent Disks) 首字母的缩写，它最早于美国加州伯克利市的几个研究员在他们的论文中提出的。它通过对多个磁盘的配置和应用来实现数据的容错功能和数据传输性能的提高。 <br />RAID提供一个将多个单独硬盘当作一个大的虚拟硬盘的访问方法，通过分散数据在这些单个硬盘上来减少因为其中一个硬盘损毁的而造成的数据丢失，并且提高系统的访问效率。<br />RAID被应用于像大型的文件服务系统，应用程序的处理服务那样对数据存取性能有苛刻要求和对数据的安全型有很高的要求的系统。今天，RAID已经被广泛应用于CAD的桌面系统，多媒体的编辑和重放等等一些需要高速的数据传输领域 <br />RAID 0: 就是大家知道的“磁盘带区集”在技术角度，它并没有容错级别，它不提供容错功能，数据交错的写在多个磁盘中。所以当一个驱动器在读写时，另一个驱动器已经在搜寻下一个数据块。<br />这种带区集的系统的优势是它有很高的传输速率，可以有效利用全部的这个阵列中的所有磁盘空间。不利的因素是它没有容错功能－－如果其中一个硬盘损坏，那么整个阵列里的所有数据将全部丢失。<br />RAID 1: 就是我们常说的“磁盘镜像”，通过在阵列里的一个 硬盘上完全复制相同数据的方式来提供对数据的充分保护。如果其中一个硬盘毁坏，另外一个硬盘将提供精确的，完全相同的数据，RAID系统将切换到镜像的硬盘继续使用，对用户而言，数据并没有丢失。 <br />这种镜像系统不好的地方是数据的存储速度并没有得到改善，而且磁盘利用率低。然而，它提供对管理者而言最简单有效的保护，当一个硬盘失效时，阵列管理软件会直接将数据请求切换到有效硬盘上。<br />RAID 3:RAID 3 将数据交错分布在多个驱动器中，有一个专门的硬盘用户提供奇偶数据存储，提供错误数据的恢复和重建。 <br />RAID 5: RAID 5 是最通行的配置方式。它是具有奇偶校验的数据恢复功能的数据存贮方式。在 RAID 5里，奇偶校验数据块分布于阵列里的各个硬盘中，这样的数据连接会更加顺畅。 <br />如果其中一个硬盘损坏，奇偶校验数据将被用于数据的重建。这是一个很通行的做法。这种方式的缺点是数据的读写时间会相对长些（在写入一组数据时必须完成两次读写操作）。它的容量是 N-1,最小必须有三个硬盘。 <br />RAID 0+1: 这是带区集方式和镜像方式的组合，并没有采用奇偶校验的方式。它的优势在于数据访问速度快（如RAID0），可以用单个磁盘实现容错（如RAID1）。RAID 0+1也要求双倍的磁盘数量。<br /><br />实施步骤：<br /><br />1) Setup the disk partitions<br /># vi /tmp/partitionfile<br />2<br />EFI 100MB<br />HPUX 100%<br /># idisk -wf /tmp/partitionfile /dev/rdsk/c2t0d0<br />2) Create the new device files for the new partitions (c2t1d0s1 and c2t1d0s2)<br /># insf -e -Cdisk<br />3) Use mkboot(1M) to format the EFI partition (s1) and populate it with the EFI files below /usr/lib/efi/ and to format the LIF volume (part of s2) and populate it with the LIF files (ISL, AUTO, HPUX, LABEL) below /usr/lib/uxbootlf:<br /># mkboot -e -l /dev/rdsk/c2t0d0<br /># efi_ls -d /dev/rdsk/c2t0d0s1<br /># lifls -l /dev/rdsk/c2t0d0s2<br />4) Write content of AUTO file to EFI partition:<br /># mkboot -a &quot;boot vmunix -lq&quot; /dev/rdsk/c2t0d0<br /># efi_cp -d /dev/rdsk/c2t0d0s1 -u /EFI/HPUX/AUTO /tmp/x; cat /tmp/x<br />5) Initialize the LVM partition (s2) and add it to vg00<br /># pvcreate -f -B /dev/rdsk/c2t0d0s2<br /># vgextend vg00 /dev/dsk/c2t0d0s2<br />6) Mirror the LVs to the s2 partition<br /># lvextend -m 1 /dev/vg00/lvol1 /dev/dsk/c2t0d0s2<br /># lvextend -m 1 /dev/vg00/lvol2 /dev/dsk/c2t0d0s2<br /># lvextend -m 1 /dev/vg00/lvol3 /dev/dsk/c2t0d0s2<br /># lvextend -m 1 /dev/vg00/lvol4 /dev/dsk/c2t0d0s2<br /># lvextend -m 1 /dev/vg00/lvol5 /dev/dsk/c2t0d0s2<br /># lvextend -m 1 /dev/vg00/lvol6 /dev/dsk/c2t0d0s2<br /># lvextend -m 1 /dev/vg00/lvol7 /dev/dsk/c2t0d0s2<br /># lvextend -m 1 /dev/vg00/lvol8 /dev/dsk/c2t0d0s2<br />7) Write content of LABEL file, i.e. set root, boot, swap and dump device:<br /># lvlnboot -r /dev/vg00/lvol3<br /># lvlnboot -b /dev/vg00/lvol1<br /># lvlnboot -s /dev/vg00/lvol2<br /># lvlnboot -d /dev/vg00/lvol2<br /># lvlnboot -v<br />8) Specify the mirrored disk as alternate bootpath<br /># setboot -a 0/1/1/0.0.0<br /># setboot<br /><br />&lt;4&gt;双机热备MC(Muntil Computer)<br /><br /><br />主机名称 LAN0 IP地址<br />(心跳地址) LAN1 IP地址 LAN2 IP地址<br />cfe1 192.1.1.1/<br />255.255.0.0 10.2.9.11/<br />255.255.255.0 空IP<br />cfe2 192.1.1.2/<br />255.255.0.0 10.2.9.12/<br />255.255.255.0 空IP <br />cfe 浮动地址：10.2.9.1<br /><br /><br />+-----+ +-----+<br />| | | |<br />vg00---| cfe1 |--------------vg01---------| cfe2 |---vg00<br />| | | | <br />+-----+ +-----+<br />| | | |<br />|10.2.9.1(floatingIP) | |<br />|10.2.9.11 |10.2.9.12<br />---------+-|--------------+---------------+-|---------<br />|192.1.1.1 交换机 |192.1.1.2<br />-----------+--------------+-----------------+---------<br /><br />实施步骤：<br /><br />在cfe1 上：<br />pvcreate –f /dev/rdsk/c4t0d0<br />pvcreate –f /dev/rdsk/c4t1d0<br />vgcreate /dev/vg010 /dev/dsk/c4t0d0 /dev/dsk/c4t1d0<br />lvcraete –L 200 –n sybmater125 –m 1 /dev/vg01<br />lvcraete –L 200 –n sybproc125 –m 1 /dev/vg01<br />lvcraete –L 1024 –n syblog125 –m 1 /dev/vg01<br />lvcraete –L 2048 –n sybdata125 –m 1 /dev/vg01<br />lvcraete –L 552 –n sybtemp125 –m 1 /dev/vg01<br />vgchange –a n vg01<br />vgexport –v –p –s –m /tmp/vg01.map /dev/vg01<br />rcp /tmp/vg01.map cfe2:/tmp<br />在cfe2上：<br />mkdir /dev/vg01<br />mknod /dev/vg01/group c 64 0x010000<br />vgimport –v –s –m /tmp/vg01.map /dev/vg01<br />vgchange –a y vg01<br />vgchange –a n vg01<br />在cfe1上：<br />vgchange –a y vg01 vg02<br />cmquerycl –v –C /etc/cmcluster/cmcl.conf –n cfe1 –n cfe2<br />修改/etc/cmcluster/cmcl.conf有关内容<br />vgchange –a n vg01<br />cmcheckconf –v –C /etc/cmcluster/cmcl.conf<br />cmapplyconf –v –C /etc/cmcluster/cmcl.conf<br />cmruncl –v<br />cmviewcl –v<br />cmhaltcl –v –f<br />cd /etc/cmcluster<br />mkdir sybpkg<br />cd sybpkg<br />cmmakepkg –p ./sybpkg.conf<br />cmmakepkg –s ./sybpkg.cntl<br />修改文件 sybpkg.conf、sybpkg.cntl<br />chmod 755 sybpkg.conf<br />chmod 755 sybpkg.cntl<br />rcp –r /etc/cmcluster/* cfe2:/etc/cmcluster/<br />cmcheckconf –v –C /etc/cmcluster/cmclconf.ascii –P ./sybpkg.conf<br />cmapplyconf –v –C /etc/cmcluster/cmclconf.ascii –P ./sybpkg.conf<br />cmruncl<br />cmviewcl –v<br />cmhaltcl –v –f<br /><br />测试MC，结论是任意一台主机出现异常DOWN机，另一台主机会接管并正常提供服务。<br />(1)手工shutdown某一台主机<br />当sybase包在cfe1上运行时，手工将系统shutdown<br />#shutdown -h -y 0<br />然后到cfe2上查看双机的状态<br />#cmviewcl<br />查看sybase包时候已经被cfe2接管。<br />(2)拔掉心跳线<br />执行操作前后，在cfe1和cfe2上分别运行cmviewcl来查看此时的状态，查看包的切换情况。<br />(3)拔掉工作用网卡线<br />执行操作前后，在cfe1和cfe2上分别运行cmviewcl来查看此时的状态，查看包的切换情况。<br />(4) 软件模拟<br />cmhaltnode –f cfe1 (强制停止节点cfe1)<br />cmviewcl –v (此时应该看到节点cfe1状态为down，sybpkg转到节点cfe2上运行)<br />cmrunnode cfe1 (运行节点cfe1)<br /><br />&lt;5&gt;磁带机备份(DAT 40)：<br /><br />一 系统备份与恢复常用命令<br />1. fbackup &amp; frecover<br /><br />1.1系统备份命令： fbackup <br /><br />1) fbackup的常用方式一：<br /><br />[1] 进入单用户:<br /><br /># shutdown -y 0<br /># /etc/mount -a<br /><br />[2] 系统全备份<br /><br /># fbackup -f /dev/rmt/0m -0iv / -I /tmp/sysbk.index<br /><br />-f : 设备文件名 ( such as DDS tape driver)<br />-i : 要包含的目录<br />-e: 不包含的目录<br />- I: 备份内容检索目录<br />- v: 备份内容详细列表<br />- 0 : 零级备份 <br /><br /># fbackup -f /dev/rmt/0m -i / -e /home<br /><br />备份除了目录 /home的所有目录 <br /><br />[3] 说明<br /><br />1) 该命令方式对系统当前&quot;mounted &quot; 的文件系统进行备份<br />2) 备份级别说明<br /><br />备份级别有0～9 个级别，如果当前系统采用零级备份，当下一次采用5 级<br />备份时，系统仅将会对有变化的文件进行备份<br /><br />2) fbackup的常用方式二： <br /><br />〖1〗# mkdir -p /tmp/fbackupfiles/index<br /># mkdir -p /tmp/fbackupfiles/log<br /><br />〖2〗# touch /tmp/fbackupfiles/index/full.`date '+%y%m%d.%H:%M'`<br /><br />〖3〗进入单用户<br /><br /># shutdown -y 0<br /># /etc/mount -a<br /><br /><br /><br /><br />〖3〗对系统进行全备份<br /><br /># fbackup -0vi / -f /dev/rmt/0m \<br />-I /tmp/fbackupfiles/index/full.`date '+%y%m%d.%H:%M'` \<br />2 &gt; /tmp/fbackupfiles/log/ full.`date '+%y%m%d.%H:%M'`<br /><br />〖4〗说明<br /><br />通过该方式可以知到系统备份需要的时间<br /><br />3)fbackup的常用方式三：<br /><br />〖1〗进入单用户<br /><br /># shutdown -y 0<br /># /etc/mount -a<br /><br />〖2〗对系统进行全备份<br /><br /># fbackup -0uv / -f /dev/rmt/0m \<br />-g /tmp/fbackupfiles/mygraph \<br />-I /tmp/fbackupfiles/index/full.`date '+%y%m%d.%H:%M'` \<br />2 &gt; /tmp/fbackupfiles/log/ full.`date '+%y%m%d.%H:%M'`<br /><br />〖4〗说明<br /><br />a. 文件 mygraph: 包含需要备份的目录，格式如下：<br /><br />i /users/data<br />i /home/app<br />e /oracle/sql<br /><br />b. 参数 u :<br /><br />当备份系统成功时，系统将更新 /var/adm/fbackupfiles/dates.<br /><br />4) fbackup的常用方式四：<br /><br />备份远程系统<br /><br />[1] 登录在本地系统时<br /><br /># remsh backup_sysname &quot; fbackup -f DDS_sysname: /dev/rmt/0m -0vi / &quot; <br /><br />[2] 登录在远程系统时<br /><br /># fbackup -f backup_sysname: /dev/rmt/0m -0vi / <br /><br /><br /><br /><br /><br /><br /><br /><br />5) fbackup的常用方式五：<br /><br />压缩方式备份( 不建议使用、影响系统性能)<br /><br />[1] 压缩方式备份<br /><br /># fbackup -0vi /dir -f - | compress | dd of=/dev/rmt/0m obs=10k<br /><br />&quot;－&quot; : 指向标准输出<br /><br />[2] 查看备份内容<br /><br /># dd if=/dev/rmt/0m ibs=10k | uncompress | frecover -I - -f - <br /><br />1.2 系统恢复命令： frecover<br /><br />1) 恢复磁带机上所有内容：<br /><br />[1] 进入单用户:<br /><br /># shutdown -y 0<br /># /etc/mount -a<br /><br />[2] 恢复数据<br /><br /># frecover -rf /dev/rmt/0m<br /><br />恢复磁带上的所有数据<br /><br />-f: 设备文件名 <br />-r: 恢复磁带上的所有数据<br />-I: 将磁带上文件索引存到指定的文件中<br /><br /><br /># frecover -I /tmp/index.txt -f /dev/rmt/0m<br /><br /><br />2) 恢复某一目录：<br /><br /># frecover -xi /directory<br /><br /># frecover -x -i /dir1 -i /dir2<br /><br /># frecover -xoi /dir<br /><br />-o: 覆盖/dir下已有的、相同名称的文件<br /><br /><br /># frecover -xvXi /dir<br /><br />-X: 按磁带上目录恢复数据<br /><br /># cd /tmp/local; frecover -xvYi /dir<br /><br />-Y: 按磁带上文件名恢复数据<br /><br />例如：<br /><br /># cd /tmp/local<br /># frecover -xvF -i /home/filename<br /><br />[恢复结果] /tmp/local/filename 不是 /home/filename<br /><br /><br /><br /><br />3) 从远程磁带机上恢复数据到本地：<br /><br /># frecover -xi /dir -f remote_name : /dev/rmt/0m <br /><br />4) 从本地磁带机上恢复数据到远地系统：<br /><br /># remsh remote_name &quot;frecover -xi /dir -f local_name: <br />/dev/rmt/0m&quot; <br /><br /><br />2.tar 命令<br /><br />2.2.1 对系统全备份<br /><br /># tar cvf /dev/rmt/0m /<br /><br />2.2.2 备份某目录<br /><br /># tar cvf /dev/rmt/0m /tmp<br /><br />2.2.3 改变文件的备份路径<br /><br /># tar cvf /dev/rmt/0m -C /tmp .<br /><br />[Note] : 路径 /tmp 在磁带上的备份路径变为 ./<br /><br /># cd /tmp<br /># tar cvf /dev/rmt/0m ./*<br /><br />2.2.4 恢复数据<br /><br /># tar xvf /dev/rmt/0m (磁带上所有数据)<br /><br /># tar xvf /dev/rmt/0m /tmp ( 恢复目录 /tmp )<br /><br />2.2.5 查看磁带上的数据<br /><br /># tar tvf /dev/rmt/0m<br /><br /><br /><br /><br />3. SAM<br /><br />1) 备份数据<br /><br /># sam<br /><br />----&gt; Select &quot; Backup and Recovery &quot;<br />---- &gt;Select &quot; Interactive Backup and Recovery &quot;<br />---- &gt;Select &quot; Backup Device &quot;<br />---- &gt; Select &quot; Backup Files Interactively &quot; ( From [ Action ] menus )<br />----- &gt; Select Backup Scope<br />----- &gt; Select Local File Systems Only ( no NFS )<br />----- &gt; Select &quot; OK &quot;<br /><br />2) 检查备份的数据<br /><br />[1] 检查文件 /var/sam/log/br_log<br /><br />Notes: if Exit code=2, there is problem on backup procedure.<br /><br />[2] 查看磁带上有那些文件<br /><br /># frecover -rNsv -f /dev/rmt/0m<br /><br /><br /><br />4. Copyutil<br /><br />1) 如何启动 &quot; Copyutil &quot;<br /><br />[1] 从CD boot , 进入ISL<br /><br />BOOT_ADMIN&gt;boot scsi.n.m ( path of CDROM drive----such as scsi.4.0)<br /><br />[2] ISL&gt;ode copyutil<br /><br />Type help for command information<br /><br />[3] ISL_CMD&gt;copyutil<br /><br />please wait while scan device bussess…<br /><br /><br />TY Indx Path Product ID Bus Size Rev<br /><br />D 0 16/5.6.0 SEAGATEST31230N disk drive SCSI 1.0 GB HPM4<br />D 1 16/5.5.0 SEAGATEST31230N disk drive SCSI 1.0 GB HPM4<br />T 2 16/5.0.0 HPC1504[X]/HPC1521B DDS tape SCSI n/a 1009<br /><br /><br /><br />2) 备份系统硬盘上的所有数据<br /><br />COPYUTIL&gt;backup<br /><br />Enter the disk index ([q]/?): 0<br />Enter the Tape index ([q]/?): 2<br /><br />Use data compression? (y/[n])? Y<br /><br />When backup finished, system will show: DONE!<br /><br />COPYUTIL&gt; exit<br /><br />3) 恢复数据到指定的系统硬盘上<br /><br />COPYUTIL&gt; restore<br /><br />Enter the Tape index ([q]/?): 2<br />Enter the disk index ([q]/?): 0<br /><br />Use data compression? (y/[n])? Y<br /><br />After system display: Restored Successful, that means restore is finished!<br /><br />COPYUTIL&gt; exit<br /><br />4) 注意：<br /><br />当用copyutil备份Root Disk到相应的磁带时，该磁带可以作为bootable 磁带使用 <br /><br />5 make_recovery<br /><br />1) 安装 &quot;Ignite-UX application&quot;<br /><br />[1] 从 &quot; HP-UX Application CD-ROM &quot; 上安装<br /><br />1) # swinstall <br />2) &quot;Mark&quot; [A. 1.53 HP-UX Installation Utility( Ignite-ux for 10.20)]<br />3) &quot;Analysis&quot;<br />4) &quot;Install&quot;<br /><br /><br />[2] 从 WebSite 下载并安装: <br /><br />1) <a href="http://www.software.hp.com/" target="_blank">http://www.software.hp.com...</a> <br />Select : &quot; Network &amp; System administration &quot;<br />Download: &quot; ignite-ux_10.20.tar&quot;(10.20 为 OS 版本)<br /><br />2) 从硬盘上安装：<br /><br /># cd /tmp<br /># tar xvf /dev/rmt/0m ./ignite-ux_10.20.tar<br /># swinstall -s /tmp/ignite-ux_10.20.tar<br /><br />3) 从磁带上安装：<br /><br /># dd if=/tmp/ignite-ux_10.20.tar of=/dev/rmt/0m bk=2<br /># swinstall -s /dev/rmt/0m<br /><br />[4] make_recovery:<br /><br />/opt/ignite/bin make_recovery [ -AprvC] [-d destination] [-b boot_destination]<br /><br />-A : 指定要备份整个Root disk / Volume Group<br /><br />-p : 预览备份过程，并不创建 Bootable DDS Tape<br /><br />a. 确认 /var/opt/ignite/recovery/mkrec.append 文件<br /><br />b. 创建 /var/opt/ignite/recovery/arch.include 文件<br /><br />-r : 使用 -p 选项后，可以用该选项创建 Bootable DDS Tape<br /><br />a. 该选项可以识别 /var/opt/ignite/recovery/arch.include 文件<br /><br />-v : 用于显示备份过程的提示信息<br /><br />-d : 指定DDS 的设备文件名 ( default: /dev/rmt/0mn )<br /><br /><br />-b : 指定系统备份过程中，用到的临时文件 ( default: /var/tmp/uxinstlf.recovery )<br />该文件大小为 32M, 对系统进行make_recovery 时，要注意 /var 文件系统<br />的大小，当 /var 文件系统大小不足时，可用如下命令对系统进行备份：<br /><br /># make_recovery -A -C -b /tmp/uxinstlf.recovery<br /><br />-C : 创建反映系统当前状态的文件： /var/opt/ignite/recovery/makrec.last<br /><br />如果该文件存在，那么可以用 check_recovery 命令 <br /><br />[5] 注意：<br /><br />用make_recovery备份的磁带是bootable 磁带，用它可以安装OS。<br /><br /><br />2) 备份系统Root Disk<br /><br />[1] 创建 &quot; 最小&quot;OS 的 bootable DDS tape (default 设备文件: /dev/rmt/0mn )<br /><br /><br /># make_recovery<br /><br /><br />[2] 创建 &quot; 最小&quot;OS 的 bootable DDS tape (设备文件: /dev/rmt/c0t1d1BESTn )<br /><br /># make_recovery -d /dev/rmt/c0t1d1BESTn<br /><br /><br />[3] 先预览，再创建 bootable DDS tape<br /><br /># make_recovery -p<br /># vi /var/opt/ignite/recovery/arch.include<br /># make_recovery -r<br /><br />[4] 复制 整个 Root Disk<br /><br /># make_recovery -A<br /><br />[5] 复制 整个 Root Disk, 且生成反映系统当前状态的文件: <br />( /var/opt/ignite/recovery/makrec.last ) <br /><br /># make_recovery -C -A <br /><br />[6] 实例分析 :<br /><br />(1) 系统文件系统：<br /><br />Filesystem kbytes used avail %used Mounted on<br /><br />/dev/vg01/osdepot 2621440 2530838 84872 97% /osdepot<br />/dev/vg01/lvol1 480341 58696 373610 14% /var<br />/dev/vg01/lvol7 378965 297521 43547 87% /usr<br />/dev/vg01/lvol6 588643 245540 284238 46% /opt<br />/dev/vg00/lvol3 107669 38577 58325 40% /<br />/dev/vg00/lvol1 67733 12409 48550 20% /stand<br />/dev/vg00/lvol4 30597 19 27518 0% /tmp<br />/dev/vg00/lvol5 19861 1416 16458 8% /home<br /><br /><br />(2)分析：<br /><br /><br />[a] make_recovery:<br /><br />vg00: /stand, /sbin, /dev, /etc, /tmp, /home<br /><br />vg01: parts of /opt and /var (see Core-OS list)<br />/usr/bin, /usr/lib<br />/usr/obam, /usr/sam,<br />/usr/share, /usr/ccs,<br />/usr/conf, /usr/lbin,<br />/usr/contrib, /usr/local,<br />/usr/newconfig<br /><br />[b] make_recovery -A:<br /><br />vg00: 备份Root Volume Group 上的所有数据<br /><br />vg01: 备份non-Root volume Group 上的所有数据<br /><br />只有当/usr 位于non-root volume group时，<br />该 non-root volume group 上的所有数据也将<br />被备份到磁带上<br /><br />3) 复磁带上的所有数据<br /><br />(1) 非交互式恢复系统<br /><br />[1] 在磁带机中，插入系统恢复带<br /><br />[2] Boot 系统<br /><br />[3] 中断Boot 流程，进入 Boot_admin&gt; 提示下<br /><br />[4] Boot_admin&gt; bo 8/16.0.0<br /><br />8/16.0.0: 磁带机的 hardware path<br /><br />[5] 选取 &quot; non-interactive &quot;<br /><br />[6] 等待系统恢复完毕<br /><br />(2) 交互式恢复系统<br /><br />[1] 在磁带机中，插入系统恢复带<br /><br />[2] Boot 系统<br /><br />[3] 中断Boot 流程，进入 Boot_admin&gt; 提示下<br /><br />[4] Boot_admin&gt; bo 8/16.0.0<br /><br />8/16.0.0: 磁带机的 hardware path<br /><br />[5] 不选取 &quot; non-interactive &quot;<br /><br />[6] 选取<br /><br />a. [ Install HP-UX ]<br /><br />b. [ Advanced Installation ]<br /><br />c. 配置或改变如下选项： <br /><br />disks, file systems, <br />hostname, IP ddress,<br />timezone, root password, <br />DNS server, and gateway<br />[7] 选取 [install continue… ],直到系统恢复完毕 <br /><br /><br /><br /><br /><br /><br /><br />&lt;6&gt;sybase 64位在HP UNIX上的安装、数据移植等<br /><br />实施步骤：<br /><br />1.mount安装光盘或ftp安装文件到hp unix cfe1上<br />在windows下用samba服务拷贝时，大写文件名会变成小写，这样会导致安装失败。最好是打成tar包后再拷贝，或ftp上去。<br />2.用root用户登录，进入xwin，执行&quot;./setup is:javahome /opt/java1.4&quot;<br />进入sybase安装界面，选择语言&quot;United State America&quot;<br />选择安装目录&quot;/home/syb125/sybase&quot;<br />完成安装后，会有建库对话框。最好不用这种方式，退出，以脚本方式建库<br /><br />拷贝/home/syb125/sybase/SYBASE.sh里的内容（环境变量）到/home/syb125/.profile中<br /><br />3.在sybase下建rs目录，编辑建库脚本<br />ASE的建库脚本：ase.rs<br />ASE_BACKUP的建库脚本：back.rs<br />XP_SERVER的建库脚本：xp.rs<br /><br />执行<br />srvbuildres -r xxx.rs<br />startserver -f RUN_cfe<br /><br />4.建好库后，发现默认字符集为hp rom8，必须修改为iso_1<br /><br />cd /home/syb125/sybase/charsets/iso_1<br />charset -Usa -P -Scfe binary.srt iso_1 <br /><br />isql -Usa -P -Scfe<br />1&gt;select name,id from syscharsets <br />2&gt;go <br />找到name为iso_1对应的id(这里为&quot;1&quot;) <br />1&gt;sp_configure &quot;default character&quot;, 1 <br />2&gt;go <br /><br />重启server两次 <br />（注:第一次启动后，server会自动宕掉，需要第二次重启后才能使用）<br /><br />5.建设备，建库<br />执行脚本db_init.sql，内容如下:<br /><br />disk init name='hall',physname='/dev/vg01/rsybdata125',size=1024000<br />go<br />disk init name='log',physname='/dev/vg01/rsyblog125',size=512000<br />go<br /><br />create database hall on hall=700 log on log=300<br />go<br /><br />exec sp_addlogin 'halldb','halldb','hall'<br />go<br />use hall<br />go<br />exec sp_changedbowner halldb<br />go<br />sp_adduser 'halldb','halldb','public'<br />go<br /><br />use master<br />go<br />sp_dboption hall, 'select into/bulkcopy' ,true<br />go<br />sp_dboption hall, 'trunc log on chkpt' ,true<br />go<br />sp_dboption hall, 'abort tran on log full',true<br />go<br />use hall <br />go<br />checkpoint<br />go<br /><br />6.恢复数据<br /><br />1&gt;load database hall from &quot;/home/syb125/sybase/hall040615.dmp&quot;<br />2&gt;go<br />1&gt;online database hall<br />2&gt;go<br /><br /><br />7.输入licenses<br />用syb125用户登录xwin<br />cd /home/syb125/sybase/SYSAM-1_0/bin<br />执行&quot;./lmgr&quot;，在弹出对话框中输入license<br />cd /home/syb125/sybase/SYSAM-1_0<br />执行&quot;./bin/startd.sh .&quot;<br />执行&quot;./bin/lmutil lmstat -c ./licenses/license.dat&quot;<br />执行&quot;./bin/lmutil lmreread -c ./licenses/license.dat&quot;<br /><br />如果license正确，最后一步会报&quot;reread succesfull&quot;<br /><br />8.由于数据是不同版本sybase之间的dump和load，需要作重新编译，否则以后运行很可能出错<br /><br />在脚本调试控制台中，将分别结果保存到两个 .sql 文件中。然后用 isql 调用<br /><br />use hall<br />select 'update statistics ' + name + char(10) + 'go' from sysobjects where type='U'<br />go<br /><br />use hall<br />select 'exec sp_recompile ' + name + char(10) + 'go' from sysobjects where type='U'<br />go<br /><br />说明：<br />update statistics<br />更新表上的统计信息，以便查询优化器能够是到最新的统计信息。制定出最优的查询计划<br /><br />sp_recompile<br />将表上所有的触发器和存储过程在下次运行的时候重新编译，以便能够用到 update all statistics 后的统计信息<br /><br />准确语法如下:<br />update statistics table_name<br />exec sp_recompile table_name<br /><br /><br />9.把sybase目录从cfe1远程拷贝到cfe2<br /><br />用root用户登录<br />rcp -r /home/syb125/sybase cfe2:/home/syb125/.<br /><br />10.测试双机<br /><br />先保证两个节点都启动了：<br />cmrunnode -v cfe1<br />cmrunnode -v cfe1<br />保证sybase应用包在cfe1上起来了：<br />cmrunpkg -v -n cfe1 sybpkg<br />查看双机状态：<br />cmviewcll -v<br />模拟cfe1当机：<br />cmhaltnode -f -v cfe1<br />查看双机状态：<br />cmviewcll -v<br /><br />此时cfe1 node应该是down状态，sybpkg现在转到cfe2上运行了<br /><br />按上述步骤，测试cfe2的当机，均能正常切换。<br /><br /><br /><br /><br /><br />sybase跨操作平台的导库：<br /><br />(但有些小型机操作系统之间，比如sun solaris到hp parisc unix是可以的，但小型机和intel x86体系pc server之间肯定没戏)<br /><br />由于平台架构、操作系统的差异，从源数据库中dump出来的数据不能直接load到目的数据库中。<br />对于这种情况，可以采用BCP方式。<br /><br />BCP是SYBASE公司提供专门用于数据库表一级数据备份的工具。 <br />一般存放在所安装的ASE或者Open Client 的BIN目录中。 <br />12版本以前的ASE，bcp存放目录为 $SYBASE/bin <br />12版本（含12版本）以后存放目录为 $SYBASE/OCS-12_x/bin <br />其中$SYBASE为SYBASE安装目录，12_x代表12.0、12.5版本，显示为12_0或者12_5 <br /><br />可执行文件名称为bcp.EXE <br />参数列表如下：（可用 bcp – 得到） <br />usage: bcp [[database_name.]owner.]table_name[:slice_number] {in | out} datafile <br /><br />[-m maxerrors] [-f formatfile] [-e errfile] <br />[-F firstrow] [-L lastrow] [-b batchsize] <br />[-n] [-c] [-t field_terminator] [-r row_terminator] <br />[-U username] [-P password] [-I interfaces_file] [-S server] <br />[-a display_charset] [-q datafile_charset] [-z language] [-v] <br />[-A packet size] [-J client character set] <br />[-T text or image size] [-E] [-g id_start_value] [-N] [-X] <br />[-M LabelName LabelValue] [-labeled] <br />[-K keytab_file] [-R remote_server_principal] <br />[-V [security_options]] [-Z security_mechanism] [-Q] <br /><br />常用数据备份格式为： <br />bcp dbname..tablename out ./filename -Usa -Ppassword –Sservername –c <br />即可。 <br />其中 –U后为SYBASE登录名称，–P后为SYBASE登录口令，–S后为SYBASE服务名称，–c代表使用可见文本方式导出数据 <br />如果为数据恢复只需要将out 替换为 in 即可。 <br /><br />可用如下方法生成一个可以一次导出一个数据库中所有表的数据的执行脚本。 <br />编辑一个如下文本文件 文件名称例为 bcpscript： <br />use dbname 选中将要导出数据的数据库 <br />go <br />select 'bcp dbname..' + name + ' out /home/sybase/' + name + ' -Usa -P -Ssybcdsrv -c' from sysobjects where type = 'U' <br />go <br />在sysobjects系统表中type为U的表为用户表，系统表为S。 <br /><br />用如下格式执行： <br />isql –Usa –Ppassword –Sservername –i bcpscript –o bcpout.sh <br />i参数后为输入文件，o参数后文件为输入文件执行后得到的输出文件。 <br />执行后则生成一个shell文件并更改相应的执行权限，可直接执行。即在指定的目录下导出了相应的数据文件。一个表的数据为一个文件。<br /><br />备份得到的数据文件如果需要重新往数据库中恢复，只需要将上面操作步骤中BCP命令中的out 参数换为in参数即可。 <br />注意：在对正式数据做操作前最好先作一些测试。 <br />另外，如果牵涉到使用bcp进行字符集的更改，可以采用 –J charset 参数进行 <br />关于BCP等工具的具体使用指南，请参见SYBASE相关文档。 <br /><br />针对系统移植所需做的工作,应该有如下几个步骤: <br />1. 安装新环境的硬件环境,包括网络,硬盘状况; <br />2. 安装新环境的操作系统,包括Service Pack; <br />3. 安装相同版本的SYBASE数据库产品,包括补丁; <br />4. 添加数据库用户,设备等相关信息,应与老系统中一致 <br />5. 创建新系统数据库; <br />6. 利用你所拥有的表脚本或者通过SYBASE CENTRAL中的生成DDL功能,将老系统中的建表脚本导出,生成数据库中的表.最好将建表脚本与建立表上约束(主键,外键等)的脚本分开,先在表上不建约束,在数据导入后,再加上.; <br />7. BCP OUT 老系统中数据,根据上面提到的方法; <br />8. 运行建立其他对象的脚本,包括索引,主键,外键及存储过程,触发器,缺省等; <br />9. 在新系统中对需要更改的表结构做更改,或者添加新表; <br />10. 测试应用系统是否工作正常.<br /><br /><br />********************************************************************************************************<br /><br />实验环境：<br />源机器：Red Hat Linux 9.0, Sybase ASE 12.5 for intel x86<br />目的机器：HP Unix 11i v2 for intel IA-64<br /><br />步骤：<br />use master<br />go<br />1.建设备<br />disk init name='test',physname='/dev/vg01/rsybdata125',size=1024000<br />go<br />disk init name='log',physname='/dev/vg01/rsyblog125',size=512000<br />go<br />sp_helpdevice<br />go<br />2.建库<br />create database test on test=200 log on log=100<br />go<br />alter database test for load<br />go<br />sp_helpdb<br />go<br />3.建用户<br />4.更改数据库参数<br />use master<br />go<br />sp_dboption test, &quot;select into/bulkcopy&quot;, true<br />go<br />use test <br />go<br />checkpoint<br />go<br />5.生成脚本<br />select 'bcp test..' + name + ' out ' + <br />'./bcpdata/' + name + '.out' + <br />' -n -Scfe -Usa -P'<br />from test..sysobjects<br />where type = 'U'<br /><br />select 'bcp test..' + name + ' in ' + <br />'./bcpdata/' + name + '.out' + <br />' -n -Scfe -Usa -P -Jiso_1 -b 100'<br />from test..sysobjects<br />where type = 'U'<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 日常维护命令<br />一. MC/SrviceGuard命令<br />a) 缩写： CN=cluster_name NN=node_name PN=package_name<br />b) cmruncl [-f] [-v] [-n NN]<br />启动群集运行。<br />[-f] 不带警告信息强制启动群集。<br />[-v] 详细输出结果。<br />[-n] 指定要启动的节点。<br />c) cmviewcl [-v] [-n NN]… [-p PN]… [-l {package|cluster|node}<br />查看当前运行的群集信息。<br />[-v] 详细输出结果。<br />[-n] 仅查看指定的节点信息。<br />[-P] 仅查看指定的包信息。<br />[-l] 仅显示指定的包、群集或节点信息。<br />d) cmhaltcl [-v] [-f]<br />停止群集运行<br />[-f] 强制停止群集运行，包括正在运行的包。<br />[-v] 详细输出结果<br />e) cmrunnode [-v] [NN…]<br />将指定的节点加入群集运行.<br />[-v] 详细输出结果。<br />f) cmhaltnode [-f] [-v] [-NN…]<br />停止指定的节点运行。<br />[-f] 强制停止指定的节点运行，包括正在指定节点上运行的包。<br />[-v] 详细输出结果。<br />g) cmrunpkg [-n NN] [-v] PN…<br />启动包运行。<br />[-n] 启动包在指定的节点上运行。<br />[-v] 详细输出结果。<br />h) cmhaltpkg [-n NN] [-v] PN…<br />停止包运行。<br />[-n] 停止包在指定的节点上运行。<br />[-v] 详细输出结果。<br />i) cmmodpkg [-v] [-n NN]… {-e|-d} PN…<br />使包能够或不能够切换。<br />[-v] 详细输出结果。<br />[-n] 修改在指定节点的属性，否则在所有节点上生效。<br />-e 使能够（enable）<br />-d 使不能够（disable）<br />PN 要改变转换属性的包。<br />二. MC/ServiceGuard的相关文件<br />a) 日志文件<br />/var/adm/syslog/syslog.log<br />/etc/cmcluster/sybpkg/sybpkg.cntl.log<br />b) 其他文件<br />/etc/cmcluster<br />/etc/cmcluster/sybpkg<br />/etc/cmcluster/sybpkg/sybstart（sybase启动文件）<br />/etc/cmcluster/sybpkg/sybstop（sybase停机文件）<br />/etc/rc.config.d/cmcluster<br />/etc/hosts<br />/.rhosts<br />注：请不要轻意改变与MC有关的配置文件。<br />三. HP-UX命令<br />1. sam<br />完成系统管理任务。<br />2. man<br />命令解释手册。<br />3. useradd、usermod、userdel<br />增加、修改、删改用户信息。<br />4. groupadd、groupmod、groupdel<br />增加、修改、删改组信息。<br />5. passwd<br />修改用户口令。<br />6. ioscan<br />查看硬件设备信息和设备文件。<br />7. lssf<br />设备文件使用的驱动，设备的硬件地址信息，与设备有关的访问方式。<br />8. pvcreate<br />刨建物理卷，磁盘可以加入到卷组。<br />9. mknod、vgcreate<br />刨建卷组，可以开始在卷组上刨建逻辑卷。<br />例子：mkdir /dev/vg01<br />mknod /dev/vg01/group c 64 0x010000<br />vgcreate vg01 /dev/dsk/c0t3d0 <br />10. vgextend<br />向卷组添加磁盘。<br />11. vgdisplay<br />显示VG信息。<br />12. lvcraete<br />刨建逻辑卷。<br />13. lvextend<br />扩展逻辑卷。<br />14. lvdisplay<br />显示逻辑卷信息。<br />15. newfs<br />刨建新文件系统，刨建好后必须为文件系统建立一个挂起点目录，一个文件系统没有被加入/etc/fstab，系统启动时不会自动挂起。<br />16. extendfs<br />扩展文件系统。<br />17. mount<br />挂起文件系统，文件系统上的文件可以被读取。<br />18. umount<br />卸载文件系统，文件系统上的文件不能被读取。<br />19. fuser<br />列出进程在使用文件或文件结构。<br />20. bdf<br />显示挂起的文件系统使用的空间和可用的空间大小。<br />21. fsck<br />修复文件系统。在此命令执行前，必须umount文件系统，系统启动时自动执行fsck。<br />22. fbackup<br />系统备份。用sam命令也可以进行系统备份。备份时可以使用远程主机的磁带机。<br />23. frecover<br />系统恢复。用sam命令也可以进行系统恢复。恢复时也可以使用远程主机的磁带机。<br />24. make_recovery<br />刨建恢复磁带。此条命令能被使用，必须安装Ignite-UX软件。<br />25. shutdown<br />重引导或关闭主机。<br />shutdown –hy 0 关闭主机但不重启。<br />shutdown –ry 0 关闭主机并重启。<br />shutdown 重启主机并进行单用户模式。<br />26. swinstall<br />安装软件或补丁程序。<br />27. swremove<br />删除软件或补丁程序。<br />28. swlist<br />列出软件或补丁程序。<br />29. chown、chgrp、chmod<br />改变文件或目录的用户、组和存取权限。<br />
]]>
</description>
</item><item>
<link>http://www.cooboy.com/read.php?122</link>
<title><![CDATA[AIX常用命令]]></title> 
<author>大虫 &lt;hujuan30@hotmail.com&gt;</author>
<category><![CDATA[开发相关]]></category>
<pubDate>Sat, 11 Dec 2004 04:49:36 +0000</pubDate> 
<guid>http://www.cooboy.com/read.php?122</guid> 
<description>
<![CDATA[ 
	<table width="100%"><tbody><tr><td bgcolor="#00008b"><font color="#dddddd">AIX常用命令</font></td></tr><tr><td align="center">2004/12/11 04:20:28</td></tr></tbody></table><hr width="80%" />查看交换区信息：<br />lsps -a 显示交换区的分布信息<br />lsps -s 显示交换区的使用信息<br />slibclean 清除处理程序遗留的旧分页信息<br />smit mkps 建立交换区空间信息<br />swapon -a 启动所有的分页空间<br />/etc/swapspaces 存放分页空间表格信息<br />显示卷信息：<br />lsvg 显示卷的名称<br />lsvg -l rootvg 显示rootvg卷的详细信息<br /><br />mount卷的方法：<br />varyonvg datavg 加载datavg卷<br />mount /dev/data1 加载datavg下的一个data1卷<br /><br />裸设备类型：raw,jfs jfs可以转变成文件系统，而raw则不行<br /><br />在裸设备上安装oracle系统：<br />修改裸设备的权限，如裸设备名为system01，安装数据库用户为oracle<br />chown oracle:dba /dev/system01<br />chown oracle:dba /dev/rsystem01<br />在使用文件时必须用rsystem01<br /><br />smit快速路径名称：(smit：图形方式，smitty：字符方式)<br />dev 设备管理<br />diag 诊断<br />jfs 定期档案管理系统<br />lvm 逻辑卷册系统管理员管理<br />nfs NFS管理<br />sinstallp 软件安装及维护<br />spooler 列印队列管理<br />system 系统管理<br />tcpip TCP/IP管理<br />USER 使用者管理<br />clstart，clstop：启动和停止cluster<br />lssrc -g cluser：查看cluser的状态<br /><br />查看已安装的软件信息：<br />ls -aF /usr/lpp (lpp:Licensed Program Products)<br />查看安装媒体内容：<br />installp -q -d /dev/cdrom -l<br /><br />启动时自动加载文件系统信息：<br />需要加载的信息存放在/etc/filesystems<br />mount -t nf 加载所有在/ect/filesystems中定义type=nfs的文件系统<br />显示已加载的文件系统及状态： df -v,mount<br /><br />查看错误日志信息：<br />errpt -a<br /><br />有关TCP/IP的命令<br />网路卡：<br />smit chgenet,chgtok,chgfddi,opschange,mktty:adptr架构快速路径<br />smit mkinet,ppp:slip与ppp快速路径<br />ifconfig:config界面<br />位址：<br />/etc/hosts 静态主机表<br />/etc/resolv.conf 位址解析的名称服务器<br />/etc/named.boot 名称服务器架构<br />/etc/named.ca 根名称服务器快取<br />/etc/named.data 位址列表<br />/etc/named.rev 反转指标列表<br />nslookup 查询名称服务器资讯<br />网络路由：<br />route 管理路由<br />netstat -rn 列出定义的路由<br />routed 路由(daekmin rip)<br />gated 路由(daekmin rip、egp、hello)<br />/etc/gateways 已知网关<br />/etc/networks 已知网路<br />服务：<br />/etc/services<br />/etc/inetd.conf<br />TCP/IP群组子系统:<br />/etc/rc.net<br />startsrc -g tcpip 启动全部的tcpip子系统 <br />startsrc -s inetd 启动主要internet<br />除错：<br />iptrace 启动封包追踪<br />ipreport 追踪结果格式化输出<br />netstat 网络统计<br />ping 检查是否可以到达<br />查看HACMP，外部硬盘信息:<br />lscfg -v<br />lsdev -Cc adapter<br />对等机器信息：<br />/etc/.rhosts<br />/etc/hosts.equiv<br />/etc/hosts<br />观察进程内存使用情况：<br />ps aux 观察参数%mem：内存使用百分比 RSS:实际使用内存<br />vmstat free的单位为块，缺省值为4096bytst <br /><br />
]]>
</description>
</item>
</channel>
</rss>