<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/podcast2.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/ixdba" type="application/rss+xml" ref="self"></atom:link><fs:self_link href="http://feed.feedsky.com/ixdba" type="application/rss+xml"></fs:self_link><lastBuildDate>Tue, 01 Apr 2008 00:51:50 GMT</lastBuildDate><title>DBA Story (dba on unix/linux)</title><description>dba on unix</description><link>http://www.ixdba.com</link><language>en</language><pubDate>Tue, 08 Apr 2008 09:21:07 GMT</pubDate><dc:date>2008-04-08T09:21:07Z</dc:date><dc:language>en</dc:language><item><title>新书前言（第二次印刷）</title><link>http://item.feedsky.com/~feedsky/ixdba/~5931439/76630098/4059876/1/item.html</link><content:encoded>&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;这里，首先要感谢广大读者的支持与认可，该书第一次印刷到现在，2个多月的时间，就要准备第二次印刷了。在此期间，我也看到了很多读者反馈（包括读者书评与读者来信），他们对本书的肯定，让我深表感动。本书在写作与印刷过程中，也出现了部分的错误，感谢广大读者通过来信，或者是在我的网站&lt;a href=&quot;http://www.ixdba.com&quot;&gt;www.ixdba.com&lt;/a&gt;上留言指出了这些错误。本书在第二次印刷时会修正这些错误。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;作为本书的作者，当然更希望广大的读者能从本书中获得他们想要的知识，并能帮助他们获得自己的成功。高可用性，在未来的一些年中，也将是越来越被引起重视的技术。需要强调的是，高可用性不仅仅局限在一两个技术上面，它应当是一个范畴，包括高可用的规划与设计，建设与实施，管理与维护，等等。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;正因为高可用的范围如此广泛，所以本书所铺设的内容也特别之多。也有读者反映，因为内容太多，而在具体的细节内容上面，没有过分深入地进行介绍。这个问题其实与本书的写作规划有关，当初就是从如下三个方面来规划本书的：&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;（1）扩充视野&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;现在不管是国内还是国外，能独立管理从最底层的存储、主机、数据库，到支持最上层的应用产品设计的个人与团队是很少的，而我们团队就可以接触到以上相关技术。接触的东西越多，视野其实就越开阔，能看到的问题也越多，所以，在整个高可用性环境方面，我希望大家能从整体上去考虑，并了解影响到系统高可用性的有哪些东西。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;随着科技的日新月易，传统企业应用与互联网应用开始产生越来越多的差异：传统的企业应用更关注于单个数据库（或数据库集群）的处理能力以及系统硬件本身的可靠性；而互联网应用，由于分布系统的大规模出现，可以使用普通的硬件设备（如PC Server）来实现大规模冗余，通过廉价的设备也可以达到整个系统的高可用性（如Google与Amazon在这方面就做的很不错）。所以，当在互联网应用中评价系统压力时，不再是单纯地评估数据库的处理能力，而是评估整个系统的处理能力，因为数据可能不存在于任何传统的数据库中，DBA也不再仅仅是数据库管理人员，而有可能是数据管理人员。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;很难说，互联网技术以后就不影响传统企业现有的技术，广泛的了解与对比，是本书的目的之一。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;（2）拓展思路&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;在写作本书之前，我就已经跟非常多的厂家及很多服务提供商打过交道，经常遇到其销售人员把自己的产品说成金条，把别人的产品贬低为稻草的情况。如我在刚开始接触硬件的时候，听到IBM介绍IBM的产品，就觉得它是最好的了；马上，HP过来介绍HP的产品，我又觉得HP是最好的。但是，如果经验多了，了解也多了，情况就不一样了，别人的吹捧已经不能影响我自己的思路。所以，在本书的前几章，介绍产品选择与构架选择时，也一直在表达这一个观点，即一定要有自己的思路与观点，不要让别人左右你自己的思想，否则销售人员很容易就影响你了（关于销售人员的技巧，大家有兴趣的话，可以看看《影响力》这本书）。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;本书后面的一些章节，如数据迁移、监控体系，也是从构架设计的思路开始来描述具体的实现方法的。在信息化如此完善的今天，本身获得一两个方法是很简单的，但是，如果把方法系统化地规划起来，则是另外一种能力。好的思路，可以很快地帮大家获得成功，仅仅知道好的方法，不表示就有好的思路。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;不要用简单的思维去看那些构架，不要仅仅是关注其中的技术而抛弃了思想，否则，我只能说你获得了皮毛而抛弃了精髓，成语&amp;#8221;买椟还珠&amp;#8221;也就是这个意思。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;（3）获得经验&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;因为很多人认为高可用性技术就是几个技术那么简单，所以他们理解的Oracle高可用就是RAC技术与Data guard技术。而高可用性的管理与维护，有时候比高可用技术本身更值得关注与借鉴。因为技术本身，是在不断地变化过程中的。简单地说，如RAC的安装与配置，在不同的OS、不同的版本中，就有很大的差异，如RAC方面的bug，在不同的环境下也有差异。而维护与管理经验是通用的，也是最直接的、最宝贵的技术。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;本书的一些案例，操作使用方法，维护经验与优化经验其实都是高可用经验的总结。通过学习这些经验，可以让读者在面对真正的高可用环境时，不至于惊慌失措。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;所以本书&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;对于高级读者，可能不需要关注方法，而仅仅是关注自己不曾理解的领域与思路。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;对于初级读者，如果有了一定的基础，一次看不懂没有关系，通过知识面的不断扩充，再看一次，可能会有新的收获。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;对于未入门者，个人建议先了解一些基础知识，然后再看本书可能更有收获。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;最后，再次感谢对本书提出宝贵意见与建议的读者们，也希望你们获得更大更多的成功。&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;陈吉平&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;2008年3月于杭州&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.ixdba.com/html/y2008/m04/214-book-reprint.html/feed/</wfw:commentRss><description>这里，首先要感谢广大读者的支持与认可，该书第一次印刷到现在，2个多月的时间，就要准备第二次印刷了。在此期间，我也看到了很多读者反馈（包括读者书评与读者来信），他们对本书的...</description><category>book</category><category>印刷</category><category>前言</category><category>新书服务|Book</category><category>所有|All Blogs</category><pubDate>Tue, 01 Apr 2008 08:51:50 +0800</pubDate><author>piner</author><comments>http://www.ixdba.com/html/y2008/m04/214-book-reprint.html#comments</comments><guid isPermaLink="false">http://www.ixdba.com/html/y2008/m04/214-book-reprint.html</guid><dc:creator>piner</dc:creator><fs:srclink>http://www.ixdba.com/html/y2008/m04/214-book-reprint.html</fs:srclink><fs:srcfeed>http://www.ixdba.com/feed/</fs:srcfeed><fs:itemid>feedsky/ixdba/~5931439/76630098/4059876</fs:itemid></item><item><title>新书要第二次印刷了</title><link>http://item.feedsky.com/~feedsky/ixdba/~5931439/76630099/4059876/1/item.html</link><content:encoded>&lt;p&gt;根据出版社的信息，书库中的书已经不多了，马上就要第二次印刷了。第二次印刷可以修正掉已知的错误，所以质量将会比第一版更好。&lt;/p&gt;
&lt;p&gt;一直比较忙，没有太关心书的事情，想不到卖得还是挺快的，从第一次印刷到现在，也就3个月的时间。&lt;/p&gt;
&lt;p&gt;在此，非常感谢博文视点与出版社，非常感谢大家的支持，非常感谢广大读者提出的宝贵意见。&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.ixdba.com/html/y2008/m03/213-new-book-republication.html/feed/</wfw:commentRss><description>根据出版社的信息，书库中的书已经不多了，马上就要第二次印刷了。第二次印刷可以修正掉已知的错误，所以质量将会比第一版更好。
一直比较忙，没有太关心书的事情，想不到卖得还是挺...</description><category>book</category><category>印刷</category><category>新书服务|Book</category><category>所有|All Blogs</category><pubDate>Mon, 10 Mar 2008 17:20:01 +0800</pubDate><author>piner</author><comments>http://www.ixdba.com/html/y2008/m03/213-new-book-republication.html#comments</comments><guid isPermaLink="false">http://www.ixdba.com/html/y2008/m03/213-new-book-republication.html</guid><dc:creator>piner</dc:creator><fs:srclink>http://www.ixdba.com/html/y2008/m03/213-new-book-republication.html</fs:srclink><fs:srcfeed>http://www.ixdba.com/feed/</fs:srcfeed><fs:itemid>feedsky/ixdba/~5931439/76630099/4059876</fs:itemid></item><item><title>互动数字电视，一个字——差</title><link>http://item.feedsky.com/~feedsky/ixdba/~5931439/76630100/4059876/1/item.html</link><content:encoded>&lt;p&gt;刚买了电视，正好碰到数字电视在小区做推广，就办理了一个互动数字电视，每个月49元，说可以随意点播电影与电视剧。我比较讨厌看广告，就办理了一个，以为从此以后看电影电视就方便了。&lt;/p&gt;
&lt;p&gt;安装的时候，发现互动数字电视是需要网通的网线的，我们家装修早，根本就没有布网线，忍痛走了一根明线（我家第一根明线），为此还在墙上打了一个洞。&lt;/p&gt;
&lt;p&gt;真正开通的时候我才发现，能免费点播的电影、电视是少之又少，而且都是老掉牙或者根本不好看的。好看一些的电影与电视还是需要另外交费的，如电影基本要5块钱一部，电视要0.5元一集（一个100集的电视剧，50块钱就没有了）。我随便点了一个收费的进去不到10s就退出来了，查了下详单，费用就已经收进去了，看样子在收费上是绝对的不含糊啊。&lt;/p&gt;
&lt;p&gt;早知道如此，我办个啥的互动数字电视，还不如从网上下载下来，直接拿移动硬盘接在电视上就可以看了（我的电视支持USB的移动设备，基本支持所有的播放格式），还一分钱都不用花。&lt;/p&gt;
&lt;p&gt;互动数字电视，我算是上了你的当。&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.ixdba.com/html/y2008/m03/212-hangzhou-digital-tv.html/feed/</wfw:commentRss><description>刚买了电视，正好碰到数字电视在小区做推广，就办理了一个互动数字电视，每个月49元，说可以随意点播电影与电视剧。我比较讨厌看广告，就办理了一个，以为从此以后看电影电视就方便了...</description><category>生活|That's life</category><category>杭州</category><category>生活逸事|life</category><category>数字</category><category>电视</category><category>所有|All Blogs</category><pubDate>Tue, 04 Mar 2008 15:15:54 +0800</pubDate><author>piner</author><comments>http://www.ixdba.com/html/y2008/m03/212-hangzhou-digital-tv.html#comments</comments><guid isPermaLink="false">http://www.ixdba.com/html/y2008/m03/212-hangzhou-digital-tv.html</guid><dc:creator>piner</dc:creator><fs:srclink>http://www.ixdba.com/html/y2008/m03/212-hangzhou-digital-tv.html</fs:srclink><fs:srcfeed>http://www.ixdba.com/feed/</fs:srcfeed><fs:itemid>feedsky/ixdba/~5931439/76630100/4059876</fs:itemid></item><item><title>读者来信：piner的书《构建oracle高可用环境》读后感</title><link>http://item.feedsky.com/~feedsky/ixdba/~5931439/76630101/4059876/1/item.html</link><content:encoded>&lt;p&gt;很感谢这些读者对我，以及这本书的肯定，非常感谢。来信内容也可以参考：&lt;/p&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://blog.csdn.net/yzsind/archive/2008/02/27/2124819.aspx&quot; title=&quot;读者反馈&quot;&gt;http://blog.csdn.net/yzsind/archive/2008/02/27/2124819.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;piner的书《构建oracle高可用环境》一出来就看到了，由于还有几本书未读完，所以没有立即买，但是建议了同事去买来看看，春节前两天买到了。由于对书的内容及大师的景仰，所以就先看了。春节放假后回到老家，也把书带回家了看了。在春节期间，我们那刚好全县停电，感觉基本什么都做不了，除了睡觉，就是吃饭了。所以自然春节几天一直读这本书，感觉越看越深入，在读的过程中感觉非常流畅，感觉是一个大师在旁边一直介绍似的。基本上三天就看完了一半，上班后又接着看，花了一个星期的晚上时间看完，收益非浅啊。&lt;/p&gt;
&lt;p&gt;这本书是介绍了大部份高可用性ORACLE配置及管理的知识，包括主机、存储、安全、灾容、RAC、StandBy、Stream、物化视图、FlashBack、备份、数据迁移、优化、在线维护、监控等等，基本上都全了。里面的理论架构介绍不多，但很实用，实践指导性非常强，脚本及案例都很直观并非常具有说服力，让人看得比较轻松，也感觉到大师的ORACLE功底之深及知识之广。&lt;/p&gt;
&lt;p&gt;虽然这是一本DBA管理方面主题的书，但作为一名软件架构师或系统分析师，感觉自己在数据库架构设计方面又有了新的认识。&lt;/p&gt;
&lt;p&gt;系统监控也长见识了。对数据存储及主机方面也增长了许多见识，对一些高端的存储也有了新的了解。对高可用性方面有了新的认识，以前我们开发的系统虽然称是7*24的，但实际上基本上是7*8小时的要求，所以对高可用性也没有那么深入，理解也不深入，看了书后深深感觉到7*24*365小时服务的可靠性要求。对于7*8小时的应用基本上数据库结构更新都是考虑越方便越好，因为可以有一晚上的时间给你更新。以前对于oralce11g的新特性都了解过，感觉对自己意义不大，不过看过书后才恍然大悟，发现11g基本上每个更新在高可用性方面都有重大意义。&lt;/p&gt;
&lt;p&gt;现在国内的计算机技术书每年都有很多，但感觉大部份都是重复作品，从软件的参考手册中COPY，源代码及软件截图一大堆，一本书下来8,9百页，实际作者自己的内容不过100页。oracle方面的书也是如此，看过许多，除了eygle的几本书外，其它的大部份如此，不过在我印象最深的，看得最投入的就是去年看的TOM的《oracle9i/10g编程艺术》，和这次看到了piner的《构建oracle高可用环境》，这两本是我看得最舒服的书了。&lt;/p&gt;
&lt;p&gt;在这里也谢谢piner献给我们ORALCE技术人员这么好的礼物！！！&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.ixdba.com/html/y2008/m02/211-book-reader-opinion.html/feed/</wfw:commentRss><description>很感谢这些读者对我，以及这本书的肯定，非常感谢。来信内容也可以参考：
http://blog.csdn.net/yzsind/archive/2008/02/27/2124819.aspx
piner的书《构建oracle高可用环境》一出来就看到了，由于还有几本书...</description><category>新书服务|Book</category><category>blog</category><category>读者</category><category>所有|All Blogs</category><pubDate>Wed, 27 Feb 2008 18:12:23 +0800</pubDate><author>piner</author><comments>http://www.ixdba.com/html/y2008/m02/211-book-reader-opinion.html#comments</comments><guid isPermaLink="false">http://www.ixdba.com/html/y2008/m02/211-book-reader-opinion.html</guid><dc:creator>piner</dc:creator><fs:srclink>http://www.ixdba.com/html/y2008/m02/211-book-reader-opinion.html</fs:srclink><fs:srcfeed>http://www.ixdba.com/feed/</fs:srcfeed><fs:itemid>feedsky/ixdba/~5931439/76630101/4059876</fs:itemid></item><item><title>新书代码服务</title><link>http://item.feedsky.com/~feedsky/ixdba/~5931439/76630102/4059876/1/item.html</link><content:encoded>&lt;p&gt;新书出来好久了，因为我也一直比较忙，代码服务一直还没有跟上。这里很感谢广大读者的支持与理解，今天我将把本书的代码整理出来并共享给广大读者。&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;第1章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P12&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;Piner@10gR2&amp;gt;select f,b from (&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; select dbms_rowid.rowid_relative_fno(rowid) f, &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 　　　　　 dbms_rowid.rowid_block_number(rowid) b&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; from test) group by f,b;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Piner@10gR2&amp;gt;select file#,dbablk,tch from x$bh where obj=&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(select data_object_id from dba_objects &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;where owner='PINER' and object_name='TEST')&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;order by dbablk;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P15&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;select count(*) from v$bh where objd=&lt;/li&gt;
&lt;li&gt;(select data_object_id from dba_objects &lt;/li&gt;
&lt;li&gt;&amp;nbsp; where owner='PINER' and object_name='TEST')&lt;/li&gt;
&lt;li&gt;&amp;nbsp; and status !='free'&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P16&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;select /*+ rule */ owner,object_name from dba_objects &lt;/li&gt;
&lt;li&gt;where data_object_id in&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (select obj from &lt;/li&gt;
&lt;li&gt;&amp;nbsp; (select obj from x$bh order by tch desc) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;where rownum &amp;lt; 11) ;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; select tch, flag,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;	decode(bitand(flag,1), 0, 'N', 'Y') dirty,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;	decode(bitand(flag,16), 0, 'N', 'Y') temp,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;	decode(bitand(flag,1536), 0, 'N', 'Y') ping,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;	decode(bitand(flag,16384), 0, 'N', 'Y') stale,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;	decode(bitand(flag,65536), 0, 'N', 'Y') direct,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;	decode(bitand(flag,1048576), 0, 'N', 'Y') new&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;from&amp;nbsp; &amp;nbsp; &amp;nbsp;x$bh&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;where dbablk = 12&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;and obj=11835&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;and tch&amp;gt;0;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P38&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;select dbms_rowid.rowid_object('AAAAeNAADAAAAWZAAA') data_object_id#, &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_rowid.rowid_relative_fno('AAAAeNAADAAAAWZAAA') rfile#, &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_rowid.rowid_block_number('AAAAeNAADAAAAWZAAA') block#, &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_rowid.rowid_row_number('AAAAeNAADAAAAWZAAA') row# from dual;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt; &lt;strong&gt;第2章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt; P77&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;#nohup ./orion -run advanced -testname mytest -num_disks 96 -size_small 8 -size_large 8 -type rand &amp;amp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#nohup ./orion -run advanced -testname mytest -num_disks 96 -size_small 1024 -size_large 1024 -type seq &amp;amp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#nohup ./orion -run advanced -testname mytest -num_disks 96 -size_small 8 -size_large 128 -matrix col -num_small 500 -type rand &amp;amp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#nohup ./orion -run advanced -testname mytest -num_disks 96 -size_small 8 -size_large 128 -matrix detailed -type rand &amp;amp;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt; &lt;strong&gt;第4章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P161&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;rac1.local_listener='(address=(protocol=tcp)(host=dbrac01)(port=1521)) ' &lt;/li&gt;
&lt;li&gt;rac1.remote_listener='(address=(protocol=tcp)(host=dbrac02)(port=1521)) ' &lt;/li&gt;
&lt;li&gt;rac2.local_listener='(address=(protocol=tcp)(host=dbrac02)(port=1521)) ' &lt;/li&gt;
&lt;li&gt;rac2.remote_listener='(address=(protocol=tcp)(host=dbrac01)(port=1521)) '&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;$ more tnsnames.ora &lt;/li&gt;
&lt;li&gt;# tnsnames.ora.Network Configuration File&lt;/li&gt;
&lt;li&gt;rac=&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (description=&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; (load_balance=on)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; (failover=on)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; (address_list=&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address=(protocol=tcp)(host=dbrac01)(port=1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address=(protocol=tcp)(host=dbrac02)(port=1521)))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; (connect_data=&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(service_name=rac)))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;[oracle@dbtest admin]$ more test.sh&lt;/li&gt;
&lt;li&gt;#!/bin/sh&lt;/li&gt;
&lt;li&gt;sqlplus &amp;quot;test/test@rac&amp;quot; &amp;lt;&amp;lt;EOF&lt;/li&gt;
&lt;li&gt;select instance_name from v\$instance;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exit&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P162&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;Listeners_rac =&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (address_list =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address = (protocol = tcp)(host =dbrac01-vip)(port = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address = (protocol = tcp)(host =dbrac02-vip)(port = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address = (protocol = tcp)(host =dbrac03-vip)(port = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address = (protocol = tcp)(host =dbrac04-vip)(port = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp; )&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Rac =&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (description =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(load_balance = on)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address = (protocol = tcp)(host = dbrac01-vip)(port = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address = (protocol = tcp)(host = dbrac02-vip)(port = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address = (protocol = tcp)(host = dbrac03-vip)(port = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(address = (protocol = tcp)(host = dbrac04-vip)(port = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(connect_data =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; (server = dedicated)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; (service_name = rac)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp; )&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P164&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;rac=&lt;/li&gt;
&lt;li&gt;&amp;nbsp;(description=&lt;/li&gt;
&lt;li&gt;(load_balance=on)&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (failover=on)&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (address_list=&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; (address=(protocol=tcp)(host=dbtest)(port=1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; (address=(protocol=tcp)(host=dbtest)(port=1522)))&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (connect_data=&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; (service_name=rac)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; (failover_mode=(type=select)(method=basic))&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ))&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P183&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt;create diskgroup dgroup1&lt;/li&gt;
&lt;li&gt;	 Normal reduadancy&lt;/li&gt;
&lt;li&gt;	 failgroup controller1 &lt;/li&gt;
&lt;li&gt;	 disk&amp;nbsp; '/devices/diska1', '/devices/diska2','/devices/diska3','/devices/diska4',&lt;/li&gt;
&lt;li&gt;	 failgroup controller2 &lt;/li&gt;
&lt;li&gt;	 disk '/devices/diskb1', '/devices/diskb2', '/devices/diskb3', '/devices/diskb4';&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P187&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;create database orcl&lt;/li&gt;
&lt;li&gt;	controlfile reuse&lt;/li&gt;
&lt;li&gt;	logfile&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;'+dgroup1/redo1' size 100M&lt;/li&gt;
&lt;li&gt;	datafile&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '+dgroup1/system' size 1G&lt;/li&gt;
&lt;li&gt;	sysaux datafile&amp;nbsp; '+dgroup1/sysaux' size&amp;nbsp; 2G&lt;/li&gt;
&lt;li&gt;	default temporary tablespace temp&lt;/li&gt;
&lt;li&gt;	tempfile&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '+dgroup1/temp' size&amp;nbsp; 8G&lt;/li&gt;
&lt;li&gt;	undo tablespace undo&lt;/li&gt;
&lt;li&gt;	datafile&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; '+dgroup1/rollback' size 8G;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt; &lt;strong&gt;第5章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P205&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;db_unique_name=pridb&lt;/li&gt;
&lt;li&gt;log_archive_config='DG_CONFIG=(pridb,stbdb)'&lt;/li&gt;
&lt;li&gt;log_archive_dest_1='LOCATION=/arc/archive/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pridb' &lt;/li&gt;
&lt;li&gt;log_archive_dest_state_1=ENABLE&lt;/li&gt;
&lt;li&gt;log_archive_dest_2='SERVICE=standby_test VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)&amp;nbsp; DB_UNIQUE_NAME=stb_db'&lt;/li&gt;
&lt;li&gt;log_archive_dest_state_2=ENABLE&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;alter database add standby logfile &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;group 4 ('/u01/oracle/oradata/tbdb/stdy_redo04.log') size 102400K,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;group 5 ('/u01/oracle/oradata/tbdb/stdy_redo05.log') size 102400K,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;group 6 ('/u01/oracle/oradata/tbdb/stdy_redo06.log') size 102400K,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;group 7 ('/u01/oracle/oradata/tbdb/stdy_redo07.log') size 102400K;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P208&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;$more removearchive.sh&lt;/li&gt;
&lt;li&gt;#!/usr/bin/ksh&lt;/li&gt;
&lt;li&gt;# creator: piner&lt;/li&gt;
&lt;li&gt;# function: clear archive log of standby database if it had applied&lt;/li&gt;
&lt;li&gt;# usage: crontab on standby&lt;/li&gt;
&lt;li&gt;# last modify: 2007-10-10 create&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#env variable&lt;/li&gt;
&lt;li&gt;export ORACLE_HOME=/u01/oracle/product/9.2&lt;/li&gt;
&lt;li&gt;export HOME=/home/oracle&lt;/li&gt;
&lt;li&gt;export PATH=$PATH:$ORACLE_HOME/bin&lt;/li&gt;
&lt;li&gt;export ORACLE_SID=test&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#local variable&lt;/li&gt;
&lt;li&gt;BDUMP=/u01/oracle/admin/${ORACLE_SID}/bdump&lt;/li&gt;
&lt;li&gt;ALERT=$BDUMP/alert_${ORACLE_SID}.log&lt;/li&gt;
&lt;li&gt;ALERTBAK=$BDUMP/alert_${ORACLE_SID}.log.bak&lt;/li&gt;
&lt;li&gt;RMARC=$HOME/worksh/rmarchlog.sh&lt;/li&gt;
&lt;li&gt;TMLOG=$HOME/logs/logtmp.log&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#get rm archivelog script，thread 1&lt;/li&gt;
&lt;li&gt;grep &amp;quot;Media Recovery Log&amp;quot; $ALERT|grep 1_|sed '$d'|awk '{print $4}'|sed -e 's/^/rm /' &amp;gt;&amp;nbsp; $RMARC &lt;/li&gt;
&lt;li&gt;grep &amp;quot;Media Recovery Log&amp;quot; $ALERT|grep 1_|sed -n '$p' &amp;gt;&amp;nbsp; $TMLOG&lt;/li&gt;
&lt;li&gt;#if rac env,then thread 2&lt;/li&gt;
&lt;li&gt;#grep &amp;quot;Media Recovery Log&amp;quot; $ALERT|grep 2_|sed '$d'|awk '{print $4}'|sed -e 's/^/rm /' &amp;gt;&amp;gt; $RMARC&lt;/li&gt;
&lt;li&gt;#grep &amp;quot;Media Recovery Log&amp;quot; $ALERT|grep 2_|sed -n '$p' &amp;gt;&amp;gt; $TMLOG&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#start rm archive log&lt;/li&gt;
&lt;li&gt;ksh $RMARC&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#clear alert log&lt;/li&gt;
&lt;li&gt;cat $ALERT &amp;gt;&amp;gt; $ALERTBAK&lt;/li&gt;
&lt;li&gt;cat $TMLOG &amp;gt;&amp;nbsp; $ALERT&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#rm tmp file&lt;/li&gt;
&lt;li&gt;rm -f $RMARC&lt;/li&gt;
&lt;li&gt;rm -f $TMLOG&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;echo &amp;quot;DB done&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;ARCHIVE_DIR=/arc/archive/test&lt;/li&gt;
&lt;li&gt;#find $ ARCHIVE_DIR -name &amp;quot;*.arc&amp;quot; -ctime +3 -exec rm {} \;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P209&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;#!/bin/ksh&lt;/li&gt;
&lt;li&gt;# creator: piner&lt;/li&gt;
&lt;li&gt;# function: check standby archive send and applied &lt;/li&gt;
&lt;li&gt;# usage: crontab on standby&lt;/li&gt;
&lt;li&gt;# last modify: piner 2005-4-20 create&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#environment variable&lt;/li&gt;
&lt;li&gt;export ORACLE_SID=test&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;export ORACLE_HOME=/u01/oracle/product/9.2&lt;/li&gt;
&lt;li&gt;export PATH=$ORACLE_HOME/bin:$PATH&lt;/li&gt;
&lt;li&gt;export NLS_LANG=american_america.zhs16gbk&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#local variable&lt;/li&gt;
&lt;li&gt;LOGFILE=/home/oracle/logs/logstatus.log&lt;/li&gt;
&lt;li&gt;SQLPLUS=$ORACLE_HOME/bin/sqlplus&lt;/li&gt;
&lt;li&gt;DATE=`date +%Y-%m-%d:%H:%M:%S`&lt;/li&gt;
&lt;li&gt;dbname=`hostname`&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#monitor value&lt;/li&gt;
&lt;li&gt;appdoff=0.5&lt;/li&gt;
&lt;li&gt;sendoff=0.02&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#check database status&lt;/li&gt;
&lt;li&gt;$SQLPLUS /nolog &amp;lt;&amp;lt;EOF&lt;/li&gt;
&lt;li&gt;connect / as sysdba&lt;/li&gt;
&lt;li&gt;spool $LOGFILE&lt;/li&gt;
&lt;li&gt;&amp;nbsp; SELECT status FROM v\$instance;&lt;/li&gt;
&lt;li&gt;spool off&lt;/li&gt;
&lt;li&gt;exit&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;sleep 1&lt;/li&gt;
&lt;li&gt;if [ -f $LOGFILE ] ; then&lt;/li&gt;
&lt;li&gt;&amp;nbsp; STATUS=`egrep -i &amp;quot;(OPEN|MOUNT)&amp;quot; $LOGFILE|wc -l`&lt;/li&gt;
&lt;li&gt;&amp;nbsp; echo $STATUS&lt;/li&gt;
&lt;li&gt;else&lt;/li&gt;
&lt;li&gt;&amp;nbsp; touch $LOGFILE&lt;/li&gt;
&lt;li&gt;&amp;nbsp; echo &amp;quot;log file not exists&amp;quot; &amp;gt; $LOGFILE&lt;/li&gt;
&lt;li&gt;fi&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;if [ $STATUS -eq 0 ] ; then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mesglog=&amp;quot;$dbname standby status error,db not mount or open!&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;##Standby没有open或者是mount&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;##发送邮件，关于发送邮件的方法，参考本书第16章&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/li&gt;
&lt;li&gt;fi&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#check archive log applied&lt;/li&gt;
&lt;li&gt;$SQLPLUS /nolog &amp;lt;&amp;lt;EOF&lt;/li&gt;
&lt;li&gt;connect / as sysdba&lt;/li&gt;
&lt;li&gt;spool $LOGFILE&lt;/li&gt;
&lt;li&gt;&amp;nbsp;select decode(Sign(max(Next_time) - (sysdate - $appdoff)),-1,'false','true') from v\$archived_log t&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; where applied = 'YES' and first_time &amp;gt;sysdate-1;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;select thread#,sequence#, to_char(next_time,'yyyy-mm-dd hh24:mi:ss') log_time,applied from v\$archived_log t&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; where applied = 'NO' and first_time&amp;gt;sysdate-1&lt;/li&gt;
&lt;li&gt;&amp;nbsp; order by sequence#;&lt;/li&gt;
&lt;li&gt;spool off&lt;/li&gt;
&lt;li&gt;exit&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;APPSTATUS=`grep -i &amp;quot;false&amp;quot; $LOGFILE|grep -v &amp;quot;'false','true'&amp;quot;|wc -l`&lt;/li&gt;
&lt;li&gt;if [ $APPSTATUS -ge 1 ] ; then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;##应用日志错误&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;##发送邮件，关于发送邮件的方法，参考本书第16章&lt;/li&gt;
&lt;li&gt;fi&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#check archive log sended&lt;/li&gt;
&lt;li&gt;$SQLPLUS /nolog &amp;lt;&amp;lt;EOF&lt;/li&gt;
&lt;li&gt;connect / as sysdba&lt;/li&gt;
&lt;li&gt;spool $LOGFILE&lt;/li&gt;
&lt;li&gt;&amp;nbsp;select decode(Sign(max(next_time) - (sysdate - $sendoff)),-1,'false','true') from v\$archived_log t&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; where first_time&amp;gt;sysdate-1;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;select max(sequbnce#) max_sequbnce#,to_char(max(next_time),'yyyy-mm-dd hh24:mi:ss') log_time from v\$archived_log t&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; where first_time&amp;gt;sysdate-1;&lt;/li&gt;
&lt;li&gt;spool off&lt;/li&gt;
&lt;li&gt;exit&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SENDSTATUS=`grep -i &amp;quot;false&amp;quot; $LOGFILE|grep -v &amp;quot;'false','true'&amp;quot;|wc -l`&lt;/li&gt;
&lt;li&gt;if [ $SENDSTATUS -ge 1 ] ; then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;##发送日志错误&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;##发送邮件，关于发送邮件的方法，参考本书第16章&lt;/li&gt;
&lt;li&gt;fi&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P214&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;LISTENER_PRI =&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (DESCRIPTION_LIST =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(DESCRIPTION =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(ADDRESS_LIST =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(ADDRESS = (PROTOCOL = TCP)(HOST = primary_db)(PORT = 1521))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp; )&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SID_LIST_LISTENER_PRI =&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (SID_LIST =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(SID_DESC =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(GLOBAL_DBNAME = test)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(ORACLE_HOME = /u01/oracle/product/9.2)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(SID_NAME = test)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp; )&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;LISTENER_STB =&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (DESCRIPTION_LIST =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(DESCRIPTION =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(ADDRESS_LIST =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(ADDRESS = (PROTOCOL = TCP)(HOST = standby_db)(PORT = 1522))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp; )&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SID_LIST_LISTENER_STB =&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (SID_LIST =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(SID_DESC =&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(GLOBAL_DBNAME = test)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(ORACLE_HOME = /u01/oracle/product/9.2)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(SID_NAME = test)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&lt;/li&gt;
&lt;li&gt;&amp;nbsp; )&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;test = &lt;/li&gt;
&lt;li&gt;(DESCRIPTION = &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; (failover = on ) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; (ADDRESS_LIST = &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(ADDRESS = (PROTOCOL = TCP)(HOST = primary_db)(PORT = 1521)) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(ADDRESS = (PROTOCOL = TCP)(HOST = standby_db)(PORT = 1521)) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; ) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; (CONNECT_DATA = &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; (SID = test) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;) &lt;/li&gt;
&lt;li&gt;&amp;nbsp; )&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;第6章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P238&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt;create tablespace streams_tbs datafile 'file_name' size 500M;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; create user strmadmin identified by password&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; default tablespace streams_tbs&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; quota unlimited on streams_tbs;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; grant dba to strmadmin;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; connect strmadmin/password&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; create database link dbdest.net connect to strmadmin &lt;/li&gt;
&lt;li&gt;2&amp;nbsp; &amp;nbsp;identified by password using 'dest_db';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; connect strmadmin/password&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; create database link dbsour.net connect to strmadmin &lt;/li&gt;
&lt;li&gt;2&amp;nbsp; &amp;nbsp;identified by password using 'source_db';&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P240&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt;connect strmadmin/test&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; declare&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; empty_tbs dbms_streams_talespace_adm.tablespace_set;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; dbms_streams_adm.pre_instantiation_setup(&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; maintain_mode =&amp;gt; 'GLOBAL',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; &amp;nbsp; tablespace_names =&amp;gt; empty_tbs,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; &amp;nbsp; source_database =&amp;gt; 'dbsour.net',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 8&amp;nbsp; &amp;nbsp; destination_database =&amp;gt; 'dbdest.net',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 9&amp;nbsp; &amp;nbsp; perform_actions =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;10&amp;nbsp; &amp;nbsp; bi_directional =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;11&amp;nbsp; &amp;nbsp; include_ddl =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;12&amp;nbsp; &amp;nbsp; start_processes =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;13&amp;nbsp; &amp;nbsp; exclude_schemas =&amp;gt; NULL,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;14&amp;nbsp; &amp;nbsp; exclude_flags =&amp;gt; dbms_streams_adm.exclude_flags_unsupported +&lt;/li&gt;
&lt;li&gt;&amp;nbsp;15&amp;nbsp; &amp;nbsp; dbms_streams_adm.exclude_flags_dml +&lt;/li&gt;
&lt;li&gt;&amp;nbsp;16&amp;nbsp; &amp;nbsp; dbms_streams_adm.exclude_flags_ddl);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;17&amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;18&amp;nbsp; /&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P242&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt; set serveroutput on size 1000000&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; declare&lt;/li&gt;
&lt;li&gt;2&amp;nbsp; &amp;nbsp; until_scn number;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp;until_scn:= dbma_flashback.get_system_change_number;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_output.put_line('Until SCN: ' || until_scn);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; /&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;RMAN&amp;gt; run&lt;/li&gt;
&lt;li&gt;2&amp;gt; {&lt;/li&gt;
&lt;li&gt;3&amp;gt;&amp;nbsp; &amp;nbsp; set until scn 533910;&lt;/li&gt;
&lt;li&gt;4&amp;gt;&amp;nbsp; &amp;nbsp; duplicate target database to dbdest nofilenamecheck open restricted;&lt;/li&gt;
&lt;li&gt;5&amp;gt; }&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P244&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt;DECLARE&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp;empty_tbs dbms_streams_tablespace_adm.tablespace_set;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; BEGIN&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_streams_adm.post_instantiation_setup (&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp;maintain_mode =&amp;gt; 'GLOBAL',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp;tablespace_names =&amp;gt; empty_tbs,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp;source_database =&amp;gt; 'dbsour.net',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 8&amp;nbsp; &amp;nbsp; &amp;nbsp;destination_database =&amp;gt; 'dbdest.net',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 9&amp;nbsp; &amp;nbsp; &amp;nbsp;perform_actions =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;10&amp;nbsp; &amp;nbsp; &amp;nbsp;bi_directional =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;11&amp;nbsp; &amp;nbsp; &amp;nbsp;include_ddl =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;12&amp;nbsp; &amp;nbsp; &amp;nbsp;start_processes =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;13&amp;nbsp; &amp;nbsp; &amp;nbsp;instantiation_scn =&amp;gt; 533909,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;14&amp;nbsp; &amp;nbsp; &amp;nbsp;exclude_schemas =&amp;gt; NULL,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;15&amp;nbsp; &amp;nbsp; &amp;nbsp;exclude_flags =&amp;gt; dbms_streams_adm.exclude_flasgs_unsupported +&lt;/li&gt;
&lt;li&gt;&amp;nbsp;16&amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_streams_adm.exclude_flags_dml + &lt;/li&gt;
&lt;li&gt;&amp;nbsp;17&amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_streams_adm.exclude_flags_ddl);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;18&amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;19&amp;nbsp; /&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P245&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;STRMADM@dest&amp;gt;begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; dbms_streams_adm.maintain_global(&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; &amp;nbsp; &amp;nbsp;source_directory_object&amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; 'DIR_SOURCE',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp;destination_directory_object =&amp;gt; 'DIR_DEST',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp;source_database&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; 'dbsour.test',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp;destination_database&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt; 'dbdest.test',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp;perform_actions&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 8&amp;nbsp; &amp;nbsp; &amp;nbsp;dump_file_name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt; 'streams_rep.dmp',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 9&amp;nbsp; &amp;nbsp; &amp;nbsp;bi_directional&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt; false,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;10&amp;nbsp; &amp;nbsp; &amp;nbsp;include_ddl&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;11&amp;nbsp; &amp;nbsp; &amp;nbsp;instantiation&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; dbms_streams_adm.instantiation_full);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;12&amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;13&amp;nbsp; /&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P246&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;declare&lt;/li&gt;
&lt;li&gt;tables dbms_utility.uncl_apply;&lt;/li&gt;
&lt;li&gt;begin&lt;/li&gt;
&lt;li&gt;tables(1) := 'piner.test1';&lt;/li&gt;
&lt;li&gt;tables(2) := 'piner.test2';&lt;/li&gt;
&lt;li&gt;tables(3) := 'piner.test3';&lt;/li&gt;
&lt;li&gt;tables(4) := 'piner.test4';&lt;/li&gt;
&lt;li&gt;dbms_streams_adm.maintain_tables(&lt;/li&gt;
&lt;li&gt;table_names =&amp;gt; tables,&lt;/li&gt;
&lt;li&gt;source_directory_object =&amp;gt; NULL,&lt;/li&gt;
&lt;li&gt;destination_directory_object =&amp;gt; NULL,&lt;/li&gt;
&lt;li&gt;source_database =&amp;gt; 'dbsour.net',&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;destination_database =&amp;gt; 'dbdest.net',&lt;/li&gt;
&lt;li&gt;perform_actions =&amp;gt; false,&lt;/li&gt;
&lt;li&gt;script_name =&amp;gt; 'configure_rep.sql',&lt;/li&gt;
&lt;li&gt;script_directory_object =&amp;gt; 'SCRIPT_DIRECTORY',&lt;/li&gt;
&lt;li&gt;bi_directional =&amp;gt; false,&lt;/li&gt;
&lt;li&gt;include_ddl =&amp;gt; false,&lt;/li&gt;
&lt;li&gt;instantiation =&amp;gt; dbms_streams_adm.instantiation_table_network );&lt;/li&gt;
&lt;li&gt;end;&lt;/li&gt;
&lt;li&gt;/&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P247&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt;begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; &amp;nbsp; dbms_capture_adm.set_parameter(&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; &amp;nbsp; &amp;nbsp; capture_name =&amp;gt; 'PINER$CAP',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; parameter&amp;nbsp; &amp;nbsp; =&amp;gt; 'downstream_real_time_mine',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; value&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; 'y');&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; /&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P249&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt;col forward_block heading 'Forward Block' format A50&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;col forward_block_dblink heading 'Forward Block|Database Link' format A13&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;col status heading 'Status' format A12&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;set long 10000&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;select forward_block,forward_block_dblink,status&lt;/li&gt;
&lt;li&gt;2&amp;nbsp; from dba_recoverable_script_blocks&lt;/li&gt;
&lt;li&gt;3&amp;nbsp; where script_id = '39EDB8E5AB6CD5C3E040010A3D0552BE' &lt;/li&gt;
&lt;li&gt;4&amp;nbsp; and block_num = 7;&amp;nbsp; &amp;nbsp; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;begin&lt;/li&gt;
&lt;li&gt;2&amp;nbsp; &amp;nbsp; dbms_streams_adm.recover_operation(&lt;/li&gt;
&lt;li&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; script_id =&amp;gt; '39EDB8E5AB6CD5C3E040010A3D0552BE',&lt;/li&gt;
&lt;li&gt;4&amp;nbsp; &amp;nbsp; &amp;nbsp; operation_mode =&amp;gt; 'FORWARD');&lt;/li&gt;
&lt;li&gt;5&amp;nbsp; &amp;nbsp;end;&lt;/li&gt;
&lt;li&gt;6&amp;nbsp; &amp;nbsp;/&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P250&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;begin&lt;/li&gt;
&lt;li&gt;dbms_propagation_sdm.start_ propagation (&lt;/li&gt;
&lt;li&gt;propagation_name =&amp;gt; 'PROPAGATION$_195');&lt;/li&gt;
&lt;li&gt;end;&lt;/li&gt;
&lt;li&gt;/&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dbms_apply_sdm.set_parameter(apply_name=&amp;gt;'APPLY$_DBSOUR_187',&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; parameter=&amp;gt;'disable_on_error',&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; value=&amp;gt;'N');&lt;/li&gt;
&lt;li&gt;end;&lt;/li&gt;
&lt;li&gt;/&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exec dbms_apply_sdm.start_apply(apply_name=&amp;gt;'APPLY$_DBSOUR_187');&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P251&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;exec dbms_capture_adm.stop_capture(capture_name);&lt;/li&gt;
&lt;li&gt;exec dbms_capture_adm.drop_capture(capture_name);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exec dbms_propagation_adm.stop_propagation(propagation_name);&lt;/li&gt;
&lt;li&gt;exec dbms_propagation_adm.drop_propagation(propagation_name);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exec dbms_apply_adm.stop_apply(apply_name);&lt;/li&gt;
&lt;li&gt;exec dbms_apply_adm.drop_apply(apply_name);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exec dbms_streams_adm.remove_streams_configuration;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;第8章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P295&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;Piner@10gR2&amp;gt; select versions_starttime, versions_endtime, versions_xid,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; versions_operation, a,b&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from test versions between timestamp minvalue and maxvalue&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; order by versions_starttime;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P298&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;13:25:41 Piner@10gR2&amp;gt;select versions_xid, versions_operation&lt;/li&gt;
&lt;li&gt;13:25:42&amp;nbsp; &amp;nbsp;2&amp;nbsp; from test versions between timestamp&lt;/li&gt;
&lt;li&gt;13:25:42&amp;nbsp; &amp;nbsp;3&amp;nbsp; to_date('2007-08-27 13:21:56','yyyy-mm-dd hh24:mi:ss')&lt;/li&gt;
&lt;li&gt;13:25:42&amp;nbsp; &amp;nbsp;4&amp;nbsp; and MAXVALUE&lt;/li&gt;
&lt;li&gt;13:25:42&amp;nbsp; &amp;nbsp;5&amp;nbsp; WHERE versions_xid is not null&lt;/li&gt;
&lt;li&gt;13:25:42&amp;nbsp; &amp;nbsp;6&amp;nbsp; order by VERSIONS_STARTTIME;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P307&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;Piner@9iR2&amp;gt;exec sys.dbms_logmnr.add_logfile(LogFileName=&amp;gt;'/archive_log/archive/1_9.arc',options =&amp;gt; dbms_logmnr.new);&lt;/li&gt;
&lt;li&gt;PL/SQL procedure successfully completed.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Piner@9iR2&amp;gt;exec sys.dbms_logmnr.start_logmnr(Options =&amp;gt; sys.dbms_logmnr.dict_from_online_catalog);&lt;/li&gt;
&lt;li&gt;PL/SQL procedure successfully completed.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Piner@9iR2&amp;gt;exec sys.dbms_logmnr.add_logfile(LogFileName=&amp;gt;'/archive_log/archive/1_10.arc');&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Piner@9iR2&amp;gt;select t.SCN,t.TIMESTAMP,t.SEG_OWNER,t.OPERATION, &lt;/li&gt;
&lt;li&gt;2&amp;nbsp; t.SQL_REDO,t.SQL_UNDO &lt;/li&gt;
&lt;li&gt;3&amp;nbsp; from v$logmnr_contents t where t.SEG_NAME='TEST';&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P309&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;declare &lt;/li&gt;
&lt;li&gt;&amp;nbsp; mysql varchar2(4000); &lt;/li&gt;
&lt;li&gt;&amp;nbsp; num number :=0; &lt;/li&gt;
&lt;li&gt;begin &lt;/li&gt;
&lt;li&gt;&amp;nbsp; for c_tmp in (select sql_undo from logmnr_contents where operation = 'DELETE') loop &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;--去掉语句结尾的分号，如果语句中本身有分号，则不能采用这个方法。 &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mysql := replace(c_tmp,sql_undo,';',''); &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;execute immediate mysql; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;num := num + 1; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if mod(num,1000)=0 then &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;commit; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end if; &lt;/li&gt;
&lt;li&gt;&amp;nbsp; end loop; &lt;/li&gt;
&lt;li&gt;&amp;nbsp; commit; &lt;/li&gt;
&lt;li&gt;exception &lt;/li&gt;
&lt;li&gt;&amp;nbsp; when others then &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; --异常处理 &lt;/li&gt;
&lt;li&gt;end;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P310&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt;select name,sequence#,dictionary_begin d_beg, dictionary_end d_end&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; from v$archived_log&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; where sequence# = (select max(sequence#) from v$archived_log&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; where dictionary_end = 'YES' and sequence# &amp;lt;= 210);--或者是&amp;gt;=210&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; select name,sequence#,dictionary_begin d_beg, dictionary_end d_end&lt;/li&gt;
&lt;li&gt;&amp;nbsp; from v$archived_log&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; where sequence# = (select max(sequence#) from v$archived_log&lt;/li&gt;
&lt;li&gt;where dictionary_begin = 'YES' and sequence# &amp;lt;= 208);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exec dbms_logmnr.add_logfile(logfilename =&amp;gt; '/usr/oracle/data/db1arch_1_210_482701534.dbf',options =&amp;gt; dbms_logmnr.new);&lt;/li&gt;
&lt;li&gt;exec dbms_logmnr.add_logfile(logfilename =&amp;gt; '/usr/oracle/data/db1arch_1_208_482701534.dbf');&lt;/li&gt;
&lt;li&gt;exec dbms_logmnr.add_logfile(logfilename =&amp;gt; '/usr/oracle/data/db1arch_1_207_482701534.dbf');&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exec dbms_logmnr.start_logmnr(options =&amp;gt;dbms_logmnr.dict_from_onlinr_catalog + dbms_logmnr.committed_data_only);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';&lt;/li&gt;
&lt;li&gt;exec dbms_logmnr.start_logmnr(dictfilename =&amp;gt; '/oracle/database/dictionary.ora',&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; starttime =&amp;gt; '2007-04-11 08:30:00',&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; endtime =&amp;gt; '2007-04-11 08:45:00');&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P314&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt; declare i integer;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; &amp;nbsp; for i in 1..100 loop&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; insert into test values(i,100-i);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; end loop;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 8&amp;nbsp; /&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; create or replace trigger tr_test&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; &amp;nbsp;before insert or update or delete on test&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; &amp;nbsp; for each row&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; declare&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; PRAGMA AUTONOMOUS_TRANSACTION;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; &amp;nbsp; begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp; update audit_test set c=c+1;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 8&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 9&amp;nbsp; &amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 10&amp;nbsp; &amp;nbsp;/&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;第9章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P338&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;$more backup_exp.sh&lt;/li&gt;
&lt;li&gt;#!/bin/sh&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;# creator: piner&lt;/li&gt;
&lt;li&gt;# function: backup database with expdp&lt;/li&gt;
&lt;li&gt;# usage: crontab on linux&lt;/li&gt;
&lt;li&gt;# last modify: tuolei 2007-08-29 create&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#set environment variable&lt;/li&gt;
&lt;li&gt;export ORACLE_SID=test&lt;/li&gt;
&lt;li&gt;export ORACLE_HOME=/u01/oracle/product/9.2&lt;/li&gt;
&lt;li&gt;export NLS_LANG=american_america.zhs16gbk&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#开始备份，假定目录dump_test已经创建，并且dump_test=/u01/oracle/backup&lt;/li&gt;
&lt;li&gt;FILE=`date date +%Y%m%d`&lt;/li&gt;
&lt;li&gt;expdp user/pass directory=dump_test dumpfile=$FILE.dmp&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#删除以前过期的备份&lt;/li&gt;
&lt;li&gt;DUMP=/u01/oracle/backup&lt;/li&gt;
&lt;li&gt;find $DUMP -name &amp;quot;*.dmp&amp;quot; -mtime +7 -exec rm {} \;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P342&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;[oracle@db worksh]$ more rmanback.sh &lt;/li&gt;
&lt;li&gt;#!/bin/ksh&lt;/li&gt;
&lt;li&gt;#环境变量&lt;/li&gt;
&lt;li&gt;export ORACLE_HOME=/opt/oracle/product/9.2&lt;/li&gt;
&lt;li&gt;export ORACLE_SID=test&lt;/li&gt;
&lt;li&gt;export NLS_LANG=&amp;quot;AMERICAN_AMERICA.zhs16gbk&amp;quot;&lt;/li&gt;
&lt;li&gt;export PATH=$PATH:$ORACLE_HOME/bin&lt;/li&gt;
&lt;li&gt;#备份脚本&lt;/li&gt;
&lt;li&gt;echo &amp;quot;-----------------------------start-----------------------------&amp;quot;;date&lt;/li&gt;
&lt;li&gt;$ORACLE_HOME/bin/rman &amp;lt;&amp;lt;EOF&lt;/li&gt;
&lt;li&gt;connect target&lt;/li&gt;
&lt;li&gt;delete noprompt obsolete;&lt;/li&gt;
&lt;li&gt;backup database format '/netappdata1/rmanback/tbdb2/%U_%s.bak' filesperset = 4;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exit;&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;echo &amp;quot;------------------------------end------------------------------&amp;quot;;date&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P345&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;run{&lt;/li&gt;
&lt;li&gt;allocate channel node_c1 device type disk connect 'sys/pass@dbin1';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;allocate channel node_c2 device type disk connect 'sys/pass@dbin2';&lt;/li&gt;
&lt;li&gt;sql 'alter system archive log thread 2 current'; &lt;/li&gt;
&lt;li&gt;sql 'alter system archive log thread 1 current'; &lt;/li&gt;
&lt;li&gt;backup archivelog all delete input format '/u01/dbbak/%U_%s.bak' filesperset = 10;&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P348&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;RMAN&amp;gt; run{&lt;/li&gt;
&lt;li&gt;2&amp;gt; allocate channel c1 type disk;&lt;/li&gt;
&lt;li&gt;3&amp;gt; allocate channel c2 type disk;&lt;/li&gt;
&lt;li&gt;4&amp;gt; set until time = '2007-11-09:11:44:00';&lt;/li&gt;
&lt;li&gt;5&amp;gt; restore database;&lt;/li&gt;
&lt;li&gt;6&amp;gt; recover database;&lt;/li&gt;
&lt;li&gt;7&amp;gt; alter database open resetlogs; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;RMAN&amp;gt; run {&lt;/li&gt;
&lt;li&gt;2&amp;gt; set until sequence 120 thread 1;&lt;/li&gt;
&lt;li&gt;3&amp;gt; alter database mount;&lt;/li&gt;
&lt;li&gt;4&amp;gt; restore database;&lt;/li&gt;
&lt;li&gt;5&amp;gt; recover database;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; # 恢复到日志119&lt;/li&gt;
&lt;li&gt;6&amp;gt; alter database open resetlogs;&lt;/li&gt;
&lt;li&gt;7&amp;gt; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;RMAN&amp;gt; run {&lt;/li&gt;
&lt;li&gt;2&amp;gt;set newname for datafile&lt;/li&gt;
&lt;li&gt;3&amp;gt;'/u01/oradata/tools01.dbf' to '/tmp/tools01.dbf';&lt;/li&gt;
&lt;li&gt;4&amp;gt;restore datafile '/u01/oradata/tools01.dbf';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;5&amp;gt;switch datafile all;&lt;/li&gt;
&lt;li&gt;6&amp;gt;}&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P355&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;#!/bin/sh&lt;/li&gt;
&lt;li&gt;# creator: Piner&lt;/li&gt;
&lt;li&gt;# function: backup database or archive with rman&lt;/li&gt;
&lt;li&gt;# usage: crontab on linux&lt;/li&gt;
&lt;li&gt;# last modify: piner 2007-08-29 create&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#环境变量&lt;/li&gt;
&lt;li&gt;export ORACLE_SID=test&lt;/li&gt;
&lt;li&gt;export ORACLE_HOME=/u01/oracle/product/9.2&lt;/li&gt;
&lt;li&gt;export NLS_LANG=american_america.zhs16gbk&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#运行变量&lt;/li&gt;
&lt;li&gt;RMAN=$ORACLE_HOME/bin/rman&lt;/li&gt;
&lt;li&gt;SQLPLUS=$ORACLE_HOME/bin/sqlplus&lt;/li&gt;
&lt;li&gt;TEE=/usr/bin/tee&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;LOGFILE=/home/oracle/logs/rmanback.log&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#目录结构为类似这样：/back1/rmanbak/test/week1&lt;/li&gt;
&lt;li&gt;DBDEST1=/back1/rmanbak/${ORACLE_SID}/week`date +%w`&lt;/li&gt;
&lt;li&gt;DBDEST2=/back2/rmanbak/${ORACLE_SID}/week`date +%w`&lt;/li&gt;
&lt;li&gt;CTLFILE=/back1/rmanbak/${ORACLE_SID}/week`date +%w`/${ORACLE_SID}_ctl_`date +%Y%m%d%H%M`.ctl&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#开始运行RMAN来备份数据库与归档日志，并记录备份的日志文件&lt;/li&gt;
&lt;li&gt;echo &amp;quot;----------------backup start----------------------&amp;quot; &amp;gt; $LOGFILE&lt;/li&gt;
&lt;li&gt;$RMAN &amp;lt;&amp;lt;EOF | $TEE -a $LOGFILE&lt;/li&gt;
&lt;li&gt;connect target&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#分配多通道备份，只备份数据库&lt;/li&gt;
&lt;li&gt;Run{&lt;/li&gt;
&lt;li&gt;allocate channel c1 type disk format '$DBDEST1/%U_%s.bak' maxpiecesize = 2000M;&lt;/li&gt;
&lt;li&gt;allocate channel c2 type disk format '$DBDEST2/%U_%s.bak' maxpiecesize = 2000M;&lt;/li&gt;
&lt;li&gt;backup database filesperset = 4;&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#保留两次有效备份&lt;/li&gt;
&lt;li&gt;delete noprompt obsolete redundancy = 2 device type disk;&lt;/li&gt;
&lt;li&gt;exit;&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#备份控制文件&lt;/li&gt;
&lt;li&gt;$SQLPLUS &amp;quot;/ as sysdba&amp;quot;&amp;nbsp; &amp;lt;&amp;lt;EOF | $TEE -a $LOGFILE&lt;/li&gt;
&lt;li&gt;&amp;nbsp; alter database backup controlfile to '$CTLFILE';&lt;/li&gt;
&lt;li&gt;exit&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;echo &amp;quot;-----------------backup end-----------------------&amp;quot; &amp;gt;&amp;gt; $LOGFILE&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P356&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;RMAN&amp;gt; allocate channel c1 device type sbt&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; 2&amp;gt; parms='env=(nsr_server=tape_srv,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; 3&amp;gt; nsr_group=Oracle_tapes)';&lt;/li&gt;
&lt;li&gt;相关的数据库与归档日志备份脚本如下：&lt;/li&gt;
&lt;li&gt;#全备份脚本&lt;/li&gt;
&lt;li&gt;backup tag 'full' &lt;/li&gt;
&lt;li&gt;database filesperset = 4&lt;/li&gt;
&lt;li&gt;plus archivelog delete input filesperset = 10;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#零级备份脚本&lt;/li&gt;
&lt;li&gt;backup incremental level 0 tag 'db0' &lt;/li&gt;
&lt;li&gt;database filesperset = 4&lt;/li&gt;
&lt;li&gt;database skip readonly&lt;/li&gt;
&lt;li&gt;plus archivelog delete input filesperset = 10;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#一级备份脚本&lt;/li&gt;
&lt;li&gt;backup incremental level 1 tag 'db1' &lt;/li&gt;
&lt;li&gt;database filesperset = 4&lt;/li&gt;
&lt;li&gt;database skip readonly&lt;/li&gt;
&lt;li&gt;plus archivelog delete input filesperset = 10;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P359&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;RMAN&amp;gt; connect target sys/password@prod&amp;nbsp; &amp;nbsp; &amp;nbsp;#源数据库&lt;/li&gt;
&lt;li&gt;RMAN&amp;gt;connect auxiliary sys/password@aux&amp;nbsp; &amp;nbsp; #辅助数据库&lt;/li&gt;
&lt;li&gt;connected to target database: TEST (DBID=290922305)&lt;/li&gt;
&lt;li&gt;connected to auxiliary database: TEST (not mounted)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;RMAN&amp;gt;RUN{&lt;/li&gt;
&lt;li&gt;allocate auxiliary channel c1 type disk;&lt;/li&gt;
&lt;li&gt;recover tablespace 'USERS' until time &amp;quot;to_date('2007-10-22 15:48:17' , 'yyyy-mm-dd &lt;/li&gt;
&lt;li&gt;hh24:mi:ss')&amp;quot; AUXILIARY DESTINATION '/u01/oracle/new/';&lt;/li&gt;
&lt;li&gt;sql 'alter tablespace&amp;nbsp; USERS online';&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P365&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;RMAN&amp;gt;duplicate target database&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;to dupdb&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;password file&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;spfile&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;from active database&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;db_file_name_convert '/u01/Oracle/oradata/','/u02/Oracle/oradata/'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;parameter_value_convert '/u01/oracle/pfile/','/u02/Oracle/oradata/'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;set sga_max_size '300M'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;set sga_target '250M'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;set log_file_name_convert '/u01/oracle/redo/','/u02/oracle/redo/';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;run{&lt;/li&gt;
&lt;li&gt;set newname for datefile 1 to '/u01/oradatd1/system01.dbf'; &lt;/li&gt;
&lt;li&gt;set newname for datefile 2 to '/u01/oradata2/undotbs01.dbf';&lt;/li&gt;
&lt;li&gt;…….&lt;/li&gt;
&lt;li&gt;duplicate&amp;nbsp; &amp;nbsp;……&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;duplicate&amp;nbsp; &amp;nbsp;&lt;/li&gt;
&lt;li&gt;……&lt;/li&gt;
&lt;li&gt;parameter_values_convert '/u01/oracle/pfile/', '+DISK1'&lt;/li&gt;
&lt;li&gt;set db_create_file_dest '+DISK1';&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;第10章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P376&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt; begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp;dbms_streams_adm.maintain_schemas(&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; &amp;nbsp; &amp;nbsp;schema_names =&amp;gt; 'piner',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp;source_directory_object =&amp;gt; null,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp;destination_directory_object =&amp;gt; null,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp;source_database =&amp;gt; 'sour.net',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp;destination_database =&amp;gt; 'dest.net',&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 8&amp;nbsp; &amp;nbsp; &amp;nbsp;perform_actions =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 9&amp;nbsp; &amp;nbsp; &amp;nbsp;bi_directional =&amp;gt; false,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;10&amp;nbsp; &amp;nbsp; &amp;nbsp;include_ddl&amp;nbsp; &amp;nbsp; =&amp;gt; true,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;11&amp;nbsp; &amp;nbsp; &amp;nbsp;instantiation&amp;nbsp; =&amp;gt; dbms_streams_adm.instantiation_schema_network);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;12&amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;13&amp;nbsp; /&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P378&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt;create table table_name as select * from table_name@db_link where 1=0;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt; alter table table_name&lt;/li&gt;
&lt;li&gt;2&amp;nbsp; add constraint constraint_name primary key [unique] (field_name);&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;create materialized view table_name on prebuilt table refresh fast as&lt;/li&gt;
&lt;li&gt;2	select * from table_name@db_link;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;exec dbms_mview.refresh('table_name',method =&amp;gt; 'Complete');--全刷新&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;exec dbms_mview.refresh('table_name');--快速刷新&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;create index index_name on table_name(field_name);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;declare jobid number;&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;begin&lt;/li&gt;
&lt;li&gt;2&amp;nbsp; &amp;nbsp;sys.dbms_job.submit(job =&amp;gt; jobid,&lt;/li&gt;
&lt;li&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;what =&amp;gt; 'dbms_mview.refresh(''table_name'');',&lt;/li&gt;
&lt;li&gt;4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;next_date =&amp;gt; sysdate,&lt;/li&gt;
&lt;li&gt;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;interval =&amp;gt; 'sysdate+1/1440');&lt;/li&gt;
&lt;li&gt;6&amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;7&amp;nbsp; end;&lt;/li&gt;
&lt;li&gt;8/&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P379&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;create table rep_table_logs&lt;/li&gt;
&lt;li&gt;(&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Rep_key&amp;nbsp; &amp;nbsp;number not null,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Dml_type&amp;nbsp; varchar2(1) not null,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Dml_time&amp;nbsp; date default sysdate not null,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Rep_flag&amp;nbsp; number default 0 not null&lt;/li&gt;
&lt;li&gt;)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P380&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;create or replace trigger tr_table_repl&lt;/li&gt;
&lt;li&gt;&amp;nbsp; after insert or update or delete&lt;/li&gt;
&lt;li&gt;&amp;nbsp; on table_name&lt;/li&gt;
&lt;li&gt;&amp;nbsp; for each row&lt;/li&gt;
&lt;li&gt;/**********************************************************&lt;/li&gt;
&lt;li&gt;*create date:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&lt;/li&gt;
&lt;li&gt;*creator:piner&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/li&gt;
&lt;li&gt;*function description:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/li&gt;
&lt;li&gt;*&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&lt;/li&gt;
&lt;li&gt;*modify history:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/li&gt;
&lt;li&gt;***********************************************************/&lt;/li&gt;
&lt;li&gt;declare&lt;/li&gt;
&lt;li&gt;&amp;nbsp; m_dml_type varchar2(1);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; m_rep_id&amp;nbsp; &amp;nbsp;number;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; errormsg&amp;nbsp; &amp;nbsp;varchar2(500);&lt;/li&gt;
&lt;li&gt;begin&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; if inserting then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; m_dml_type := 'I';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; m_rep_id := :new.id;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; elsif updating then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;if :new.id != :old.id then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;raise_application_error(-20001,'You can not modify primary key');&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; end if;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; m_dml_type := 'U';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; m_rep_id := :old.id;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; elsif deleting then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; m_dml_type := 'D';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; m_rep_id := :old.id;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; else&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; m_dml_type := 'X';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; m_rep_id := -1;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; end if;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;insert into rep_table_logs(rep_key,dml_type,dml_time)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;values(m_rep_id,m_dml_type,sysdate);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;exception&lt;/li&gt;
&lt;li&gt;&amp;nbsp; when others then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; raise;&lt;/li&gt;
&lt;li&gt;end tr_table_repl;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P381&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;create or replace procedure sp_table_repl&lt;/li&gt;
&lt;li&gt;is&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; --复制参数&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; m_rep_flag number := 1;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; m_exc_flag number := 2;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; m_sp_name varchar2(10) := 'rep_table';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; --过程参数&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; end_stamp&amp;nbsp; date;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; num_row&amp;nbsp; &amp;nbsp; number;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; errormsg&amp;nbsp; &amp;nbsp;varchar2(256);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; pages_nums number;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; per_pages&amp;nbsp; number := 10000;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;begin &lt;/li&gt;
&lt;li&gt;/***************************************************************************&lt;/li&gt;
&lt;li&gt;*create date:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/li&gt;
&lt;li&gt;*creator: piner&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/li&gt;
&lt;li&gt;*function:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&lt;/li&gt;
&lt;li&gt;*&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/li&gt;
&lt;li&gt;*modify history:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*&lt;/li&gt;
&lt;li&gt;*&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/li&gt;
&lt;li&gt;*注意，该过程加入了并发控制，保证不能被并发运行，但是，该过程在运行的过程中*&lt;/li&gt;
&lt;li&gt;*不能被异常kill，如果被kill了，需要手工修改该标志从runing到stop。&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *&lt;/li&gt;
&lt;li&gt;****************************************************************************/&lt;/li&gt;
&lt;li&gt;--处理标志，为了保证过程不被并发执行&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; update rep_table_flag f set f.run_flag='runing',f.sp_time=sysdate&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;where f.run_flag='stop' and f.sp_type = m_sp_name;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; num_row := sql%rowcount;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; --更新到0行，表示有过程正在执行，该进程返回，不再执行&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; if num_row = 0 then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; end if;&lt;/li&gt;
&lt;li&gt;---------------------------------------------------------------------&lt;/li&gt;
&lt;li&gt;----------------------start------------------------------------------&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; --未处理日志数&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select count(*) into num_row&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; from rep_table_logs_syn t&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where t.rep_flag = 0;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pages_nums := trunc(num_row/per_pages) + 1;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; --分页处理。每次处理一个per_pages的数目&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; for pages in 1 .. pages_nums loop&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;select max(dml_time) into end_stamp from (&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; select dml_time from rep_table_logs_syn&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where rep_flag = 0&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;order by dml_time)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where rownum &amp;lt;= per_pages;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;--把这部分正在处理的日志，标记置为m_exc_flag，表示正在处理&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;update&amp;nbsp; rep_table_logs_syn&amp;nbsp; set rep_flag = m_exc_flag&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where rep_flag = 0&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and dml_time &amp;lt; end_stamp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;commit;&lt;/li&gt;
&lt;li&gt;-----------------------------------------------------------------&lt;/li&gt;
&lt;li&gt;-------------------------delete----------------------------------&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;--处理delete的记录&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; delete /*+ ordered use_nl(l) */ from rep_table u where id in&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(select rep_key from rep_table_logs_syn l&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where l.dml_type = 'D'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.rep_flag = m_exc_flag);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/li&gt;
&lt;li&gt;--更新处理过的标志位，注意，这里包含了insert,update,delete的所有日志&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;--因为如果该记录有删除日志存在，它的insert update是没有必要做的&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; update rep_table_logs_syn t set t.rep_flag = t.rep_flag + m_rep_flag&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where t.rep_key in&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (select rep_key from rep_table_logs_syn l&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where l.dml_type = 'D'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.rep_flag = m_exc_flag);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;commit;&lt;/li&gt;
&lt;li&gt;---------------------------------------------------------------------&lt;/li&gt;
&lt;li&gt;-------------------------insert--------------------------------------&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;--处理insert的记录，查看要插入的日志在目标表中是否已经存在&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;--一般情况下应当是不存在的，除了开始取数据可能存在的合并区&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;select /*+ ordered use_nl(l,u) */ count(*) into num_row&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from rep_table_logs_syn l,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rep_table u&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where l.rep_key = u.id&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.dml_type = 'I'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.rep_flag = m_exc_flag;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; --如果发现要更新的记录存在于目标表中，则删除该记录&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if num_row &amp;gt; 0 then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;delete from rep_table where id in&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(select /*+ ordered use_nl(l,u) */ l.rep_key&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from rep_table_logs_syn l,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rep_table&amp;nbsp; u&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where l.rep_key = u.id&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.dml_type = 'I'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.rep_flag = m_exc_flag);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;end if;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--把需要同步的数据插入到目标表中&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;insert into rep_table&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; select /*+ ordered use_nl(l,u) */ u.*&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from rep_table_logs_syn l,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;syn_rep_table_db1&amp;nbsp; u&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where l.rep_key = u.id&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.dml_type = 'I'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.rep_flag = m_exc_flag;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; --更新insert的标志位&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; update rep_table_logs_syn l set rep_flag = rep_flag + m_rep_flag&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where dml_type = 'I'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and rep_flag = m_exc_flag;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;---------------------------------------------------------------------&lt;/li&gt;
&lt;li&gt;-------------------------update--------------------------------------&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;--处理update的记录&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;--处理重复记录，其实多个update只需要同步一次即可&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; update rep_table_logs_syn set rep_flag = rep_flag + m_rep_flag&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; where rowid in&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; (select rid from (&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;select rowid rid,row_number() over(partition by rep_key &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;order by rowid) rn&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; from rep_table_logs_syn&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where rep_flag = m_exc_flag&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; and dml_type = 'U')&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where rn &amp;gt;= 2);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;commit;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;--更新，先插入到临时表&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert into rep_table_temp&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; select /*+ ordered use_nl(l,u) */ u.*&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;from rep_table_logs_syn l,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; syn_rep_table_db1&amp;nbsp; u&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where l.rep_key = u.id&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.dml_type = 'U'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and l.rep_flag = m_exc_flag;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--从临时表更新数据&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; update /*+ ordered use_nl(u) */ rep_table t&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;set (field1,field2...fieldn)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= (select * from rep_table_temp u&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where u.id=t.id)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where exists&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (select null from rep_table_temp tt&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where t.id = tt.id);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;--更新update的标志位&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;update rep_table_logs_syn l set rep_flag = rep_flag + m_rep_flag&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;where dml_type = 'U'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;and rep_flag = m_exc_flag;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;----------------------当前页全部更新完毕----------------------------&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; --更新时间戳&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; update rep_table_flag f set f.sp_time=sysdate &lt;/li&gt;
&lt;li&gt;where f.sp_type = m_sp_name;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;------------------------------------------------------------------&lt;/li&gt;
&lt;li&gt;-------------------------end loop---------------------------------&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; end loop;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; --删除处理完的日志&lt;/li&gt;
&lt;li&gt;&amp;nbsp; delete from rep_table_logs_syn where rep_flag = m_rep_flag + m_exc_flag;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; --做完标志&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; update rep_table_flag f set f.run_flag='stop',f.sp_time=sysdate &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where f.sp_type = m_sp_name;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;exception&lt;/li&gt;
&lt;li&gt;&amp;nbsp; when others then&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; --如果失败，则回滚&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; rollback;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; --提交错误信息&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; errormsg := sqlerrm;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; --做完标志&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; update rep_table_flag f set f.run_flag='stop',f.sp_time=sysdate &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where f.sp_type = m_sp_name;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; insert into rep_table_sp_errors(error_id,error_msg,error_time)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; values(m_sp_name,errormsg,sysdate);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; commit;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; raise;&lt;/li&gt;
&lt;li&gt;end sp_table_repl;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P385&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;#!/usr/bin/perl&lt;/li&gt;
&lt;li&gt;###########################################################################&lt;/li&gt;
&lt;li&gt;#creator:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #&lt;/li&gt;
&lt;li&gt;#create date:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#&lt;/li&gt;
&lt;li&gt;#function:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #&lt;/li&gt;
&lt;li&gt;#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#&lt;/li&gt;
&lt;li&gt;#modify history:&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #&lt;/li&gt;
&lt;li&gt;#&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#&lt;/li&gt;
&lt;li&gt;###########################################################################&lt;/li&gt;
&lt;li&gt;use strict;&lt;/li&gt;
&lt;li&gt;use warnings;&lt;/li&gt;
&lt;li&gt;use DBI;&lt;/li&gt;
&lt;li&gt;#$OUTPUT_AUTOFLUSH = false&lt;/li&gt;
&lt;li&gt;$|=1;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;if (my $pid = open(CHILD,&amp;quot;-|&amp;quot;)) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #parent process&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #environment variable for oracle nls_lang &lt;/li&gt;
&lt;li&gt;&amp;nbsp; $ENV{&amp;quot;NLS_LANG&amp;quot;} = 'AMERICAN_AMERICA.US7ASCII';&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &lt;/li&gt;
&lt;li&gt;#这里连接远程数据库&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #user/pass@dbname&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $dbname1=&amp;quot;test&amp;quot;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $user1=&amp;quot;test&amp;quot;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $passwd1=&amp;quot;test&amp;quot;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $count=0;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #connect oracle database&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $dbh1 = DBI-&amp;gt;connect(&amp;quot;dbi:Oracle:$dbname1&amp;quot;,$user1,$passwd1) or die (&amp;quot;can't connect&lt;/li&gt;
&lt;li&gt;&amp;nbsp; to oracle database &amp;quot;,$DBI::errstr);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &lt;/li&gt;
&lt;li&gt;#这里采用了进程间通信的方式，这里是父进程&lt;/li&gt;
&lt;li&gt;#父进程把从子进程读到的信息，按照&amp;quot;::&amp;quot;作为分界符的方法，切换成多个字段的记录&lt;/li&gt;
&lt;li&gt;#这个分界符是可以自定义的&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #read child process information&lt;/li&gt;
&lt;li&gt;&amp;nbsp; while (&amp;lt;CHILD&amp;gt;){&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;my @newrec = split(/::/,&amp;quot;$_&amp;quot;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;chomp(@newrec);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;my $sqls = &amp;quot;insert into test(id,name) values('$newrec[0]','$newrec[1]')&amp;quot;; &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;my $rows =&amp;nbsp; $dbh1 -&amp;gt; do($sqls);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$count += $rows;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp; close(CHILD) or die(&amp;quot;Cannot close:$!&amp;quot;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; $dbh1-&amp;gt;disconnect();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; print &amp;quot;inert rows:$count.ok\n&amp;quot;;&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;elsif(defined($pid)){&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #child process&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &lt;/li&gt;
&lt;li&gt;#这里是子进程，可以拥有跟父进程不一样的字符集环境变量&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#environment variable for oracle nls_lang &lt;/li&gt;
&lt;li&gt;$ENV{&amp;quot;NLS_LANG&amp;quot;} = 'AMERICAN_AMERICA.ZHS16GBK';&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#这里连接字符集不同的另外一个数据库&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #user/pass@dbname&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $dbname2=&amp;quot;&amp;quot;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $user2=&amp;quot;test&amp;quot;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $passwd2=&amp;quot;test&amp;quot;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #connect oracle database&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $dbh2 = DBI-&amp;gt;connect(&amp;quot;dbi:Oracle:$dbname2&amp;quot;,$user2,$passwd2) or die (&amp;quot;can't connect&lt;/li&gt;
&lt;li&gt;&amp;nbsp; to oracle database &amp;quot;,$DBI::errstr);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #query sql&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $sth=$dbh2-&amp;gt;prepare(&amp;quot;select * from test&amp;quot;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #execute sql&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my $rc=$sth-&amp;gt;execute;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; my @recs;&lt;/li&gt;
&lt;li&gt;#get row data and send to parent process&lt;/li&gt;
&lt;li&gt;#把记录拼合在一起，用&amp;quot;::&amp;quot;来分隔记录&lt;/li&gt;
&lt;li&gt;#然后把分隔好的记录传递给父进程&lt;/li&gt;
&lt;li&gt;&amp;nbsp; while(@recs = $sth -&amp;gt; fetchrow_array()){&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; print $recs[0].&amp;quot;::&amp;quot;.$recs[1].&amp;quot;\n&amp;quot;;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp; $dbh2-&amp;gt;disconnect();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; $sth-&amp;gt;finish();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; #exit child process&lt;/li&gt;
&lt;li&gt;&amp;nbsp; exit();&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li&gt;else{&lt;/li&gt;
&lt;li&gt;&amp;nbsp; print &amp;quot;could not fork process\n&amp;quot;;&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P386&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;###&amp;nbsp; $dbh1-&amp;gt;{AutoCommit} = 0;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; $dbh1-&amp;gt;{RaiseError} = 1; &lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; #data&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; my @col1;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; my @col2;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; #read child process information&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; while (&amp;lt;CHILD&amp;gt;){&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp; my @newrec = split(/::/,&amp;quot;$_&amp;quot;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp; chomp(@newrec);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp; $col1[$count] = $newrec[0];&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp; $col2[$count] = $newrec[1];&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp; $count++;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; my (@rowstats, $rv);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; my $sth1 = $dbh1-&amp;gt;prepare(&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;insert into test(TNAME,TABTYPE) values (?, ?)&amp;quot;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; $sth1-&amp;gt;bind_param_array(1, \@col1);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; $sth1-&amp;gt;bind_param_array(2, \@col2);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; $rv = $sth1-&amp;gt;execute_array(&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp; &amp;nbsp;{ArrayTupleStatus =&amp;gt; \@rowstats});&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; close(CHILD) or die(&amp;quot;Cannot close:$!&amp;quot;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; $dbh1-&amp;gt;disconnect();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; ###&amp;nbsp; print &amp;quot;inert rows:$rv,ok\n&amp;quot;;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P391&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;RMAN&amp;gt;convert datafile&lt;/li&gt;
&lt;li&gt;2&amp;gt; '/home/ora10g/data_user01.dbf'&lt;/li&gt;
&lt;li&gt;3&amp;gt; to platform='AIX-Based Systems (64-bit)'&lt;/li&gt;
&lt;li&gt;4&amp;gt; from platfrom='Linux IA (32-bit)'&lt;/li&gt;
&lt;li&gt;5&amp;gt; db_file_name_convert='/home/ora10g/','/u01/oracle/oradata/test/';&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P394&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;$ more test.ctl&lt;/li&gt;
&lt;li&gt;Load data&lt;/li&gt;
&lt;li&gt;insert&lt;/li&gt;
&lt;li&gt;into table test&lt;/li&gt;
&lt;li&gt;Fields terminated by &amp;quot;,&amp;quot; Optionally enclosed by &amp;quot;'&amp;quot;&lt;/li&gt;
&lt;li&gt;(id,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;name,&lt;/li&gt;
&lt;li&gt;SQL&amp;gt;create_date&amp;nbsp; date &amp;quot;yyyy-mm-dd hh24:mi:ss&amp;quot; nullif(create_date=&amp;quot;NULL&amp;quot;))&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;$ sqlldr userid=piner/xxxxxx control=test.ctl data=test.dat&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P397&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;Piner@9iR2&amp;gt;create table ext_test&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; (employee_id&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NUMBER(4), &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;name&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VARCHAR2(20),&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;job_id&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VARCHAR2(10),&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;hire_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DATE,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;salary&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NUMBER(8,2),&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;email&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;VARCHAR2(25) &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 8&amp;nbsp; &amp;nbsp; &amp;nbsp; )&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 9&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;organization external &lt;/li&gt;
&lt;li&gt;&amp;nbsp;10&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;( &lt;/li&gt;
&lt;li&gt;&amp;nbsp;11&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;type oracle_loader &lt;/li&gt;
&lt;li&gt;&amp;nbsp;12&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;default directory dump_dir &lt;/li&gt;
&lt;li&gt;&amp;nbsp;13&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;access parameters&lt;/li&gt;
&lt;li&gt;&amp;nbsp;14&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;( &lt;/li&gt;
&lt;li&gt;&amp;nbsp;15&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;records delimited by newline &lt;/li&gt;
&lt;li&gt;&amp;nbsp;16&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;badfile dump_dir:'test%a_%p.bad' &lt;/li&gt;
&lt;li&gt;&amp;nbsp;17&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logfile dump_dir:'test%a_%p.log' &lt;/li&gt;
&lt;li&gt;&amp;nbsp;18&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fields terminated by ',' optionally enclosed by '&amp;quot;'&lt;/li&gt;
&lt;li&gt;&amp;nbsp;19&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;missing field values are null &lt;/li&gt;
&lt;li&gt;&amp;nbsp;20&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;( employee_id,name, job_id,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;21&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;hire_date char date_format date mask &amp;quot;yyyy-mm-dd&amp;quot;, &lt;/li&gt;
&lt;li&gt;&amp;nbsp;22&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;salary, email &lt;/li&gt;
&lt;li&gt;&amp;nbsp;23&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;24&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;25&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;location ('test1.dat', 'test2.dat') &lt;/li&gt;
&lt;li&gt;&amp;nbsp;26&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;27&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;parallel&lt;/li&gt;
&lt;li&gt;&amp;nbsp;28&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;reject limit unlimited;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Table created.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Piner@10gR2&amp;gt;create table ext_test&lt;/li&gt;
&lt;li&gt;organization external&lt;/li&gt;
&lt;li&gt;(&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; type oracle_datapump&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; default directory dump_dir&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; location ('test.dmp')&lt;/li&gt;
&lt;li&gt;)&lt;/li&gt;
&lt;li&gt;as&lt;/li&gt;
&lt;li&gt;&amp;nbsp; select * from test;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Piner@10gR2&amp;gt;create table ext_test&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(field1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;number, &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; field2&amp;nbsp; &amp;nbsp; &amp;nbsp; varchar2(100)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;) &lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;organization external&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;(type oracle_datapump&amp;nbsp; &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; default directory dump_dir&amp;nbsp; &amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; location('test.dmp'));&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;第11章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P413&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SELECT D.TABLESPACE_NAME,SPACE SUM_SPACE,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; SPACE-NVL(FREE_SPACE,0) USED_SPACE,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2) USED_RATE,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; FREE_SPACE FREE_SPACE&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; FROM (SELECT TABLESPACE_NAME,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ROUND(SUM(BYTES)/(1024*1024),2) SPACE,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SUM(BLOCKS) BLOCKS&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM DBA_DATA_FILES&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GROUP BY TABLESPACE_NAME) D,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; (SELECT TABLESPACE_NAME,&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACE&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM DBA_FREE_SPACE&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GROUP BY TABLESPACE_NAME) F&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;WHERE&amp;nbsp; D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;第12章&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P430&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;$more statpack.sh&lt;/li&gt;
&lt;li&gt;#!/bin/ksh&lt;/li&gt;
&lt;li&gt;# creator: piner&lt;/li&gt;
&lt;li&gt;# function:produce statpack snapshot&lt;/li&gt;
&lt;li&gt;date&lt;/li&gt;
&lt;li&gt;#设置环境变量&lt;/li&gt;
&lt;li&gt;export ORACLE_SID=test&lt;/li&gt;
&lt;li&gt;export ORACLE_HOME=/u01/oracle/product/9.2&lt;/li&gt;
&lt;li&gt;export NLS_LANG=american_america.zhs16gbk&lt;/li&gt;
&lt;li&gt;#收集快照点&lt;/li&gt;
&lt;li&gt;$ORACLE_HOME/bin/sqlplus /nolog &amp;lt;&amp;lt;EOF&lt;/li&gt;
&lt;li&gt;connect perfstat/perfstat&lt;/li&gt;
&lt;li&gt;&amp;nbsp;exec statspack.snap&lt;/li&gt;
&lt;li&gt;exit&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;$more spreport.sh&lt;/li&gt;
&lt;li&gt;#!/bin/ksh&lt;/li&gt;
&lt;li&gt;# creator: piner&lt;/li&gt;
&lt;li&gt;# function:get statpack report&lt;/li&gt;
&lt;li&gt;date&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#设置环境变量&lt;/li&gt;
&lt;li&gt;export ORACLE_SID=test&lt;/li&gt;
&lt;li&gt;export ORACLE_HOME=/u01/oracle/product/9.2&lt;/li&gt;
&lt;li&gt;export NLS_LANG=american_america.zhs16gbk&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#设置运行时变量&lt;/li&gt;
&lt;li&gt;SQLPLUS=$ORACLE_HOME/bin/sqlplus&lt;/li&gt;
&lt;li&gt;LOGFILE=/home/oracle/logs/spreport.txt&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #日志文件&lt;/li&gt;
&lt;li&gt;REPFILE=/home/oracle/worksh/spreport.lst&amp;nbsp; &amp;nbsp; &amp;nbsp; #报表文件&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#获得最后2个快照点&lt;/li&gt;
&lt;li&gt;$SQLPLUS -S perfstat/perfstat &amp;lt;&amp;lt;EOF&lt;/li&gt;
&lt;li&gt;set echo off&lt;/li&gt;
&lt;li&gt;set feedback off&lt;/li&gt;
&lt;li&gt;set heading off&lt;/li&gt;
&lt;li&gt;set pagesize 0&lt;/li&gt;
&lt;li&gt;set linesize 1000&lt;/li&gt;
&lt;li&gt;set trimspool on&lt;/li&gt;
&lt;li&gt;spool $LOGFILE&lt;/li&gt;
&lt;li&gt;select snap_id from&lt;/li&gt;
&lt;li&gt;&amp;nbsp; (select snap_id from stats\$snapshot where instance_number=1&lt;/li&gt;
&lt;li&gt;&amp;nbsp; order by snap_time desc) where rownum&amp;lt;3;&lt;/li&gt;
&lt;li&gt;spool off;&lt;/li&gt;
&lt;li&gt;set echo on&lt;/li&gt;
&lt;li&gt;set feedback on&lt;/li&gt;
&lt;li&gt;set heading on&lt;/li&gt;
&lt;li&gt;exit&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;line1=`tail -1 $LOGFILE`&lt;/li&gt;
&lt;li&gt;line2=`head -1 $LOGFILE`&lt;/li&gt;
&lt;li&gt;echo &amp;quot;line1 is&amp;quot;$line1&lt;/li&gt;
&lt;li&gt;echo &amp;quot;line2 is&amp;quot;$line2&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#产生报表&lt;/li&gt;
&lt;li&gt;rm $REPFILE&lt;/li&gt;
&lt;li&gt;$SQLPLUS -S perfstat/perfstat &amp;lt;&amp;lt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;define begin_snap=$line1&lt;/li&gt;
&lt;li&gt;&amp;nbsp;define end_snap=$line2&lt;/li&gt;
&lt;li&gt;&amp;nbsp;define report_name=$REPFILE&lt;/li&gt;
&lt;li&gt;@?/rdbms/admin/spreport.sql&lt;/li&gt;
&lt;li&gt;exit&lt;/li&gt;
&lt;li&gt;EOF&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#发送邮件 &lt;/li&gt;
&lt;li&gt;mail -s `date +%Y%m%d`'-'`hostname`spreport&amp;nbsp; test@mail.com &amp;lt; $REPFILE&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0cm 0cm 0pt&quot; class=&quot;MsoNormal&quot;&gt;P451&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;ol class=&quot;hl-main ln-show&quot; title=&quot;Double click to hide line number.&quot; ondblclick = &quot;linenumber(this)&quot;&gt;&lt;li class=&quot;hl-firstline&quot;&gt;SQL&amp;gt; select to_char(snap_time,'yyyy-mm-dd hh24') time,&lt;/li&gt;
&lt;li&gt;&amp;nbsp; 2&amp;nbsp; round(sum(read/1024)) &amp;quot;write(kb)&amp;quot;,round(sum(write/1024)) &amp;quot;read(kb)&amp;quot; from &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 3&amp;nbsp; (select sn.snap_time snap_time,(newr.value-oldr.value) read, &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (neww.value-oldw.value) write &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 5&amp;nbsp; from stats$sysstat newr, &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stats$sysstat oldr, &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stats$sysstat neww, &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 8&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stats$sysstat oldw, &lt;/li&gt;
&lt;li&gt;&amp;nbsp; 9&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stats$snapshot sn &lt;/li&gt;
&lt;li&gt;&amp;nbsp;10&amp;nbsp; where sn.snap_id=newr.snap_id &lt;/li&gt;
&lt;li&gt;&amp;nbsp;11&amp;nbsp; &amp;nbsp; and sn.snap_id=neww.snap_id &lt;/li&gt;
&lt;li&gt;&amp;nbsp;12&amp;nbsp; &amp;nbsp; and sn.snap_id-1=oldr.snap_id &lt;/li&gt;
&lt;li&gt;&amp;nbsp;13&amp;nbsp; &amp;nbsp; and sn.snap_id-1=oldw.snap_id &lt;/li&gt;
&lt;li&gt;&amp;nbsp;14&amp;nbsp; &amp;nbsp; and newr.name='physical reads' &lt;/li&gt;
&lt;li&gt;&amp;nbsp;15&amp;nbsp; &amp;nbsp; and oldr.name='physical reads' &lt;/li&gt;
&lt;li&gt;&amp;nbsp;16&amp;nbsp; &amp;nbsp; and neww.name='physic