<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>TTA -- when you believe</title>
	<atom:link href="http://www.easyora.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.easyora.net</link>
	<description>想到达明天现在就要启程...</description>
	<pubDate>Wed, 10 Mar 2010 14:36:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Oracle高可用迁移升级场景与实战(一)</title>
		<link>http://www.easyora.net/blog/maa_migrate_database_1.html</link>
		<comments>http://www.easyora.net/blog/maa_migrate_database_1.html#comments</comments>
		<pubDate>Wed, 10 Mar 2010 09:28:00 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[MAA]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[高可用迁移]]></category>

		<guid isPermaLink="false">http://www.easyora.net/blog/oracle%e9%ab%98%e5%8f%af%e7%94%a8%e8%bf%81%e7%a7%bb%e5%9c%ba%e6%99%af%e4%b8%8e%e5%ae%9e%e6%88%98%e4%b8%80.html</guid>
		<description><![CDATA[       较大型的系统环境往往因各种原因，将数据库部署到不同平台或者不同版本上。随着系统的后期调整，必然涉及到数据库方面的相关改造（比如平台迁移，版本升级等）。对于这类整改工作，需要考虑的因素比较多，但核心问题无外乎以下几点：
① 风险与可控性
      风险与可控不单单指的是迁移升级过程中，更指迁移完毕后的新环境的运行情况(稳定性、性能等)以及对业务系统的支撑情况。
       一个良好的迁移工程，需要强有力的迁移控制过程，完善的模拟验证机制以及快速有效的回退方案。
②停机维护窗口
      大部分迁移都需要在指定的停机时间内完成，以避免对业务造成更多的中断和影响。对于高可用环境，需要有良好的迁移方案来尽可能压缩停机时间。
       本文重点讨论各种常见场景下利用Oracle自身特征的迁移升级手法，不涉及跨字符集转换，不涉及成熟的第三方迁移工具。
       先简单列举一下各种迁移手段及其特点。
(1). EXP/IMP
      逻辑导入导出工具，优点是可以跨平台跨版本，可以实现数据重组，但是对大规模的DB不适合，停机时间长且不可控。
(2). EXPDP/IMPDP
      10g以上版本可用；优点是可以跨平台跨版本，可以实现数据重组，虽然处理速度上较exp/imp有了大幅提升，但仍然不适合短时间的海量数据迁移。
(3).Transport Tablespace 表空间搬移
       9i以上版本可用, 可跨版本。9i上不能进行跨平台迁移，10g以上可以实现跨平台迁移，处理办法因字节高低位顺序有所不同。停机窗口一般。
(4).高级复制
      该方案可以跨平台跨版本，可大大缩短停机时间，但操作复杂，可控性差，且迁移过程对源环境有影响，非必要不建议使用。
(5).物理Dataguard/备份恢复
      物理Dataguard就是一个自动化的异库恢复过程，与手工的异库recover archivelog并无异样，二者实际是一体的。优点是可控性强，停机时间短，一般不应该超过半小时。但是不支持异构平台，10g以上版本可以支持一定的异构环境，可参考metalink id 413484.1
(6).Streams
        Streams灵活多变，可以作为我们迁移升级的一个强力工具，尤其是跨平台升级或者迁移。缺点是配置略显繁杂，注意点比较多，还需要一些逻辑对象的支持和数据支持，9i以上适用。
       以上是常见的一些Oracle自身迁移升级手段，实际的案例中，可能并不单单局限于其中某种，交叉使用是必要的。
        下面就同平台和异构平台两种大情况，列举一些常见的高可用迁移方案，当然，实际迁移过程中情况不尽相同，方案无所谓最优，做到灵活处理，满足需求为佳。
&#60;1&#62; 同平台下的迁移/升级
(1) 版本升级
常见案例情况： 9i/10g/11g之间的小版本升级、大版本升级。（以9.2.0.8升级10.2.0.4为例）
可采用方案:
Dataguard + 升级数据字典
       实际过程中如果条件允许，应该尽量避免在原始库上做升级操作以避免升级失败带来一系列问题。
简单步骤：
①备机装2套db软件，一套9.2.0.8用来与原始库做物理dataguard，另外一套10.2.0.4用来做升级数据库版本。
② 同步dataguard，业务不受影响
③ 停止业务，Standby库failover成主库
④ dbua或者脚本方式进行库版本升级
评点：停机时间比较短，顺利2小时之内可完成操作，检查点比较少，失败后可重新启用原始库。
Dataguard + Transport tablespace
简单步骤：
①备机建2套db软件，一套9.2.0.8用来与原始库做物理dataguard，利用另外一套10.2.0.4创建一个新库以便进行空间搬移
② 同步dataguard，业务不受影响
③停止业务，Standby库failover成主库
④利用Transport tablespace技术将9208库表空间搬移到10204库
⑤处理表空间搬移无法操作的逻辑对象等
评点：停机时间很短，30分钟内可以完成，需要注意检查一些逻辑对象的状态和同步情况，失败后可重新启用原始库。
（2）位数升级
常见案例情况：DB版本位数转换(以linux 32bit 10.2.0.1转换到linux 64bit 10.2.0.1为例)
可采用方案：
Dataguard + 位数转换脚本
简单步骤：
①备机安装1套64bit的Oracle 10.2.0.1，与原始库形成物理Dataguard .
②同步dataguard。
③停止业务，Standby库failover成主库
④利用Oracle提供的32bit&#60;-&#62;64bit转换脚本utlirp进行位数转换(双向)。
评点：停机时间很短，30分钟内可以完成，失败后可重新启用原始库。
     可能实际碰到的情况看起来更复杂一些，比如位数和版本都需要同时升级，这就是个如何打组合拳的问题，本质处理方法都是类似的。可以参考一个实际案例：
记一次高可用迁移方案的规划— Oracle 9i 32 bit升级至Oracle 10g 64 bit
       大多数的同平台数据库迁移，Dataguard/备份恢复是个优选工具，结合其他的一些手段，停机时间都不需要太长，而无需过度关心数据库的数据量问题。
 [...]]]></description>
			<content:encoded><![CDATA[<p>       较大型的系统环境往往因各种原因，将数据库部署到不同平台或者不同版本上。随着系统的后期调整，必然涉及到数据库方面的相关改造（比如平台迁移，版本升级等）。对于这类整改工作，需要考虑的因素比较多，但核心问题无外乎以下几点：</p>
<p>① 风险与可控性</p>
<p>      风险与可控不单单指的是迁移升级过程中，更指迁移完毕后的新环境的运行情况(稳定性、性能等)以及对业务系统的支撑情况。</p>
<p>       一个良好的迁移工程，需要强有力的迁移控制过程，完善的模拟验证机制以及快速有效的回退方案。</p>
<p>②停机维护窗口</p>
<p>      大部分迁移都需要在指定的停机时间内完成，以避免对业务造成更多的中断和影响。对于高可用环境，需要有良好的迁移方案来尽可能压缩停机时间。</p>
<p>       本文重点讨论各种常见场景下利用Oracle自身特征的迁移升级手法，不涉及跨字符集转换，不涉及成熟的第三方迁移工具。<span id="more-496"></span></p>
<p>       先简单列举一下各种迁移手段及其特点。</p>
<p>(1). EXP/IMP</p>
<p>      逻辑导入导出工具，优点是可以跨平台跨版本，可以实现数据重组，但是对大规模的DB不适合，停机时间长且不可控。</p>
<p>(2). EXPDP/IMPDP</p>
<p>      10g以上版本可用；优点是可以跨平台跨版本，可以实现数据重组，虽然处理速度上较exp/imp有了大幅提升，但仍然不适合短时间的海量数据迁移。</p>
<p>(3).Transport Tablespace 表空间搬移</p>
<p>       9i以上版本可用, 可跨版本。9i上不能进行跨平台迁移，10g以上可以实现跨平台迁移，处理办法因字节高低位顺序有所不同。停机窗口一般。</p>
<p>(4).高级复制</p>
<p>      该方案可以跨平台跨版本，可大大缩短停机时间，但操作复杂，可控性差，且迁移过程对源环境有影响，非必要不建议使用。</p>
<p>(5).物理Dataguard/备份恢复</p>
<p>      物理Dataguard就是一个自动化的异库恢复过程，与手工的异库recover archivelog并无异样，二者实际是一体的。优点是可控性强，停机时间短，一般不应该超过半小时。但是不支持异构平台，10g以上版本可以支持一定的异构环境，可参考metalink id 413484.1</p>
<p>(6).Streams</p>
<p>        Streams灵活多变，可以作为我们迁移升级的一个强力工具，尤其是跨平台升级或者迁移。缺点是配置略显繁杂，注意点比较多，还需要一些逻辑对象的支持和数据支持，9i以上适用。</p>
<p>       以上是常见的一些Oracle自身迁移升级手段，实际的案例中，可能并不单单局限于其中某种，交叉使用是必要的。</p>
<p>        下面就同平台和异构平台两种大情况，列举一些常见的高可用迁移方案，当然，实际迁移过程中情况不尽相同，方案无所谓最优，做到灵活处理，满足需求为佳。</p>
<blockquote><p>&lt;1&gt; 同平台下的迁移/升级</p></blockquote>
<p><strong>(1) 版本升级</strong></p>
<blockquote><p>常见案例情况： 9i/10g/11g之间的小版本升级、大版本升级。（以9.2.0.8升级10.2.0.4为例）</p></blockquote>
<p>可采用方案:</p>
<blockquote><p>Dataguard + 升级数据字典</p></blockquote>
<p>       实际过程中如果条件允许，应该尽量避免在原始库上做升级操作以避免升级失败带来一系列问题。</p>
<p>简单步骤：</p>
<p>①备机装2套db软件，一套9.2.0.8用来与原始库做物理dataguard，另外一套10.2.0.4用来做升级数据库版本。</p>
<p>② 同步dataguard，业务不受影响</p>
<p>③ 停止业务，Standby库failover成主库</p>
<p>④ dbua或者脚本方式进行库版本升级</p>
<p>评点：停机时间比较短，顺利2小时之内可完成操作，检查点比较少，失败后可重新启用原始库。</p>
<blockquote><p>Dataguard + Transport tablespace</p></blockquote>
<p>简单步骤：</p>
<p>①备机建2套db软件，一套9.2.0.8用来与原始库做物理dataguard，利用另外一套10.2.0.4创建一个新库以便进行空间搬移</p>
<p>② 同步dataguard，业务不受影响</p>
<p>③停止业务，Standby库failover成主库</p>
<p>④利用Transport tablespace技术将9208库表空间搬移到10204库</p>
<p>⑤处理表空间搬移无法操作的逻辑对象等</p>
<p>评点：停机时间很短，30分钟内可以完成，需要注意检查一些逻辑对象的状态和同步情况，失败后可重新启用原始库。</p>
<p><strong>（2）位数升级</strong></p>
<blockquote><p>常见案例情况：DB版本位数转换(以linux 32bit 10.2.0.1转换到linux 64bit 10.2.0.1为例)</p></blockquote>
<p>可采用方案：</p>
<blockquote><p>Dataguard + 位数转换脚本</p></blockquote>
<p>简单步骤：</p>
<p>①备机安装1套64bit的Oracle 10.2.0.1，与原始库形成物理Dataguard .</p>
<p>②同步dataguard。</p>
<p>③停止业务，Standby库failover成主库</p>
<p>④利用Oracle提供的32bit&lt;-&gt;64bit转换脚本utlirp进行位数转换(双向)。</p>
<p>评点：停机时间很短，30分钟内可以完成，失败后可重新启用原始库。</p>
<p>     可能实际碰到的情况看起来更复杂一些，比如位数和版本都需要同时升级，这就是个如何打组合拳的问题，本质处理方法都是类似的。可以参考一个实际案例：<br />
<a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html">记一次高可用迁移方案的规划— Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></p>
<p>       大多数的同平台数据库迁移，Dataguard/备份恢复是个优选工具，结合其他的一些手段，停机时间都不需要太长，而无需过度关心数据库的数据量问题。</p>
<blockquote><p>  <a href="http://www.easyora.net/blog/maa_migrate_database_2.html">Oracle高可用迁移升级场景与实战(二)</a></p></blockquote>
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/asm_migrate.html" title=" ASM下的存储更换迁移方案"> ASM下的存储更换迁移方案</a></li>
<li><a href="http://www.easyora.net/blog/hugepages_on_linux.html" title="Hugepages On Linux">Hugepages On Linux</a></li>
<li><a href="http://www.easyora.net/blog/push_predicate_sql_tuning.html" title="一次改变PUSHED PREDICATE方式进行SQL调优的案例">一次改变PUSHED PREDICATE方式进行SQL调优的案例</a></li>
<li><a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html" title="记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit">记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_performance.html" title="Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化">Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_daily_maintenance.html" title="Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除">Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/maa_migrate_database_1.html&title=Oracle%E9%AB%98%E5%8F%AF%E7%94%A8%E8%BF%81%E7%A7%BB%E5%8D%87%E7%BA%A7%E5%9C%BA%E6%99%AF%E4%B8%8E%E5%AE%9E%E6%88%98%28%E4%B8%80%29&tags=MAA, oracle, 高可用迁移, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/maa_migrate_database_1.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Hugepages On Linux</title>
		<link>http://www.easyora.net/blog/hugepages_on_linux.html</link>
		<comments>http://www.easyora.net/blog/hugepages_on_linux.html#comments</comments>
		<pubDate>Fri, 27 Nov 2009 01:11:14 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[Hugepages]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[内存扩展]]></category>

		<guid isPermaLink="false">http://www.easyora.net/?p=482</guid>
		<description><![CDATA[       HugePages在linux kernel 2.6被完整引进，其目的是为了提供更大的内存页面以便于更好的支持大内存。
       在linux中,默认的内存页面是4096字节,而现行物理设备中,内存动辄几十G，当系统运行内存较大的应用程序(比如数据库)时，过小的内存页面会产生大量的TLB miss和缺页中断，将大大降低程序性能。Hugepages提供了2M到256M的大内存页面(大小取决于内核版本和物理架构)来代替默认的页面大小.
       使用Hugepages可以得到更好的性能，因为Hugepages不可交换,可以避免内存的换入换出，对一个Oracle database，可以将使用的SGA作为Hugepages钉住，会整体上提升db的性能。Oracle推荐在64bit Linux上对大内存数据库使用Hugepages.
       
       以RHEL4 64bit为例,配置Hugepages过程如下:
1 更改os参数,配置Hugepages大小
      Hugepages需设置为比SGA略大一点,过大的设置会造成内存浪费，过小则会造成无法使用。
(1)修改/etc/sysctl.conf参数,增加vm.nr_hugepages=&#8221;&#60;total_size&#62;/&#60;Hugepagesize&#62;&#8221;，并使之生效
      注意vm.nr_hugepages的单位,其值为需要设置成Hugepages的总内存大小/Hugepages的页面大小.
      HugePages的页面大小可以这样获得：
[root@jss01 ~]# grep Hugepagesize/proc/meminfo
Hugepagesize: 2048 kB
(2) 修改/etc/security/limits.conf，增加locked memory的最大限制，设置成大于等于sga大小。
* soft memlock &#60;total_size&#62;
* hard memlock &#60;total_size&#62;
2.重新启动db,检查是否生效
[root@jss01 ~]# grep Huge /proc/meminfo
HugePages_Total: 4000
HugePages_Free: 0
Hugepagesize: 2048 kB
      HugePages_Free表示剩余的大内存页面数，应该是接近为0的数字。
     在32bit OS中，使用Hugepages是为了配合大内存扩展，由于32bit OS的寻址空间限制,使用的SGA有限。尽管可以通过降低Oracle软件的mapped_base(挂载地址)来实现sga的扩展，但无法突破4G制约。而通过VLM (Very Large Memory)技术,hugemem内核的OS可以将SGA最大内存扩展到62Gb(smp内核最大支持14Gb SGA).在kernel 2.6之后，实现VLM可以借助hugepages+in-memory filesystem (ramfs)。
     需注意的是，使用VLM,将不能使用SGA自动动态调整功能。
      以RHEL4 32bit为例，具体步骤如下：
1.创建ramfs
[root@jss01 ~]umount /dev/shm
[root@jss01 ~]mount -t [...]]]></description>
			<content:encoded><![CDATA[<p>       HugePages在linux kernel 2.6被完整引进，其目的是为了提供更大的内存页面以便于更好的支持大内存。</p>
<p>       在linux中,默认的内存页面是4096字节,而现行物理设备中,内存动辄几十G，当系统运行内存较大的应用程序(比如数据库)时，过小的内存页面会产生大量的TLB miss和缺页中断，将大大降低程序性能。Hugepages提供了2M到256M的大内存页面(大小取决于内核版本和物理架构)来代替默认的页面大小.</p>
<p>       使用Hugepages可以得到更好的性能，因为Hugepages不可交换,可以避免内存的换入换出，对一个Oracle database，可以将使用的SGA作为Hugepages钉住，会整体上提升db的性能。Oracle推荐在64bit Linux上对大内存数据库使用Hugepages.</p>
<p><span id="more-482"></span>       <br />
       以RHEL4 64bit为例,配置Hugepages过程如下:</p>
<blockquote><p>1 更改os参数,配置Hugepages大小</p></blockquote>
<p>      Hugepages需设置为比SGA略大一点,过大的设置会造成内存浪费，过小则会造成无法使用。</p>
<p>(1)修改/etc/sysctl.conf参数,增加vm.nr_hugepages=&#8221;&lt;total_size&gt;/&lt;Hugepagesize&gt;&#8221;，并使之生效</p>
<p>      注意vm.nr_hugepages的单位,其值为需要设置成Hugepages的总内存大小/Hugepages的页面大小.</p>
<p>      HugePages的页面大小可以这样获得：</p>
<blockquote><p>[root@jss01 ~]# grep Hugepagesize/proc/meminfo</p>
<p>Hugepagesize: 2048 kB</p></blockquote>
<p>(2) 修改/etc/security/limits.conf，增加locked memory的最大限制，设置成大于等于sga大小。</p>
<blockquote><p>* soft memlock &lt;total_size&gt;</p>
<p>* hard memlock &lt;total_size&gt;</p></blockquote>
<blockquote><p>2.重新启动db,检查是否生效</p></blockquote>
<blockquote><p>[root@jss01 ~]# grep Huge /proc/meminfo</p>
<p>HugePages_Total: 4000</p>
<p>HugePages_Free: 0</p>
<p>Hugepagesize: 2048 kB</p></blockquote>
<p>      HugePages_Free表示剩余的大内存页面数，应该是接近为0的数字。</p>
<p>     在32bit OS中，使用Hugepages是为了配合大内存扩展，由于32bit OS的寻址空间限制,使用的SGA有限。尽管可以通过降低Oracle软件的mapped_base(挂载地址)来实现sga的扩展，但无法突破4G制约。而通过VLM (Very Large Memory)技术,hugemem内核的OS可以将SGA最大内存扩展到62Gb(smp内核最大支持14Gb SGA).在kernel 2.6之后，实现VLM可以借助hugepages+in-memory filesystem (ramfs)。</p>
<p>     需注意的是，使用VLM,将不能使用SGA自动动态调整功能。</p>
<p>      以RHEL4 32bit为例，具体步骤如下：</p>
<blockquote><p>1.创建ramfs</p></blockquote>
<blockquote><p>[root@jss01 ~]umount /dev/shm</p>
<p>[root@jss01 ~]mount -t ramfs ramfs /dev/shm</p>
<p>[root@jss01 ~]chown oracle:oinstall /dev/shm</p></blockquote>
<blockquote><p>2.配置os参数和Hugepages大小(步骤略,同上)</p></blockquote>
<blockquote><p>3.配置db parameter</p></blockquote>
<p>      32bit扩展大内存需要牺牲掉一些特性，参数文件里面，需要做如下改动：</p>
<p>(1) 移除DB_CACHE_SIZE/DB_xK_CACHE_SIZE等参数，用以老参数DB_BLOCK_BUFFERS代替。</p>
<p>(2) 设置 USE_INDIRECT_DATA_BUFFERS=TRUE</p>
<p>(3) 移除sga_target(11g memory_target/memory_max_target)等参数</p>
<blockquote><p>4.重启instance/验证</p></blockquote>
<p>       对于不存在Hugepages功能的更早的一些内核版本(比如RHAS 2,可以通过bigpages+in-memory filesystem(shmfs)来实现大内存扩展.</p>
<p>      <strong>注意</strong>,与在32bit下VLM使用Hugepages不同的是,在64bit Linux下使用Hugepages并不需要修改数据库参数。当然，在物理设备飞速发展的今天，还是尽快升级到你手头的32bit OS到64bit OS上来吧，何必在去为一些内存扩展苦苦折腾.</p>
<p>      具体可参考Metalink Note 261889.1 317141.1 361468.1 361323.1等
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/maa_migrate_database_1.html" title="Oracle高可用迁移升级场景与实战(一)">Oracle高可用迁移升级场景与实战(一)</a></li>
<li><a href="http://www.easyora.net/blog/push_predicate_sql_tuning.html" title="一次改变PUSHED PREDICATE方式进行SQL调优的案例">一次改变PUSHED PREDICATE方式进行SQL调优的案例</a></li>
<li><a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html" title="记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit">记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_performance.html" title="Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化">Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_daily_maintenance.html" title="Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除">Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</a></li>
<li><a href="http://www.easyora.net/blog/oracle_time_model.html" title="Oracle性能优化下的时间模型">Oracle性能优化下的时间模型</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/hugepages_on_linux.html&title=Hugepages+On+Linux&tags=Hugepages, oracle, 内存扩展, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/hugepages_on_linux.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>一次改变PUSHED PREDICATE方式进行SQL调优的案例</title>
		<link>http://www.easyora.net/blog/push_predicate_sql_tuning.html</link>
		<comments>http://www.easyora.net/blog/push_predicate_sql_tuning.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:32:24 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[no_push_pred]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[sql tuning]]></category>

		<guid isPermaLink="false">http://www.easyora.net/blog/%e4%b8%80%e6%ac%a1%e6%94%b9%e5%8f%98pushed-predicate%e6%96%b9%e5%bc%8f%e8%bf%9b%e8%a1%8csql%e8%b0%83%e4%bc%98%e7%9a%84%e6%a1%88%e4%be%8b.html</guid>
		<description><![CDATA[     早上某数据库服务器CPU不断报警，应用系统管理员同时反馈应用响应明显变慢。登陆数据库主机查看，应用连接上来的几个进程占用了大量的CPU资源，造成CPU空闲率很低。登陆数据库查询，发现有不少buffer cache chains的等待，初步判断是应用上出现了某些性能糟糕的SQL语句。
     通过进程捕获了几条耗资源的SQL语句，发现大部分都是类似同一条语句造成的。手工执行一下，需要2分多钟才能出结果。
    捕获到的SQL语句如下：

SELECT *
FROM (SELECT DISTINCT e.n_event_id,
e.n_parent_id,
e.v_event_num,
em.n_req_type_1,
em.n_req_type_2,
em.v_title,
em.v_description,
e.n_priority,
cb.n_time_limit,
cb.n_status,
e.n_process_way,
e.n_maintaince_event_id,
e.v_maintaince_flag,
e.v_replacedevice_flag,
et.d_acbept_date,
et.d_finish_date,
et.v_exempt_status,
et.n_callback_status,
et.n_delay_time,
erpl.n_creator,
erpl.d_creation_date,
e.n_req_id,
el.v_res_notice_msg,
el.v_res_notice_email,
el.v_res_notice_im,
vd.v_valid_status,
vd.v_related_org_id,
e.n_dev_process_way,
e.v_over_time_reason,
e.v_confirm_person,
e.v_new_device_num
FROM tb_event e,
tb_event_related_person erpl,
vorg_department vd,
tb_callback cb,
tb_event_log el,
tb_event_marker em,
tb_event_track et
WHERE e.n_event_id = et.n_event_id(+)
AND e.n_event_id = em.n_event_id(+)
AND e.n_event_id = el.n_event_id(+)
AND e.n_event_id = cb.n_event_id(+)
AND erpl.n_dept_id = vd.recid(+)
AND e.n_event_id = erpl.n_event_id(+)
ORDER BY e.d_creation_date DESC)
WHERE rownum &#60;= 40;
vorg_department为一个view，具体定义如下：
create or replace view vorg_department as
select d.recid,
r.v_valid_status,
d.v_related_org_id,
r.org_parent,
r.tree_no,
d.dept_kind,
d.dept_type,
d.dept_name,
d.status,
d.dept_code,
d.area_code,
d.dept_prof,
d.sort_num,
d.link_addr,
r.layer
from ORG_DEPARTMENT d, ORG_DEPRELATION r
where d.recid = r.org_child
and [...]]]></description>
			<content:encoded><![CDATA[<p>     早上某数据库服务器CPU不断报警，应用系统管理员同时反馈应用响应明显变慢。登陆数据库主机查看，应用连接上来的几个进程占用了大量的CPU资源，造成CPU空闲率很低。登陆数据库查询，发现有不少buffer cache chains的等待，初步判断是应用上出现了某些性能糟糕的SQL语句。</p>
<p>     通过进程捕获了几条耗资源的SQL语句，发现大部分都是类似同一条语句造成的。手工执行一下，需要2分多钟才能出结果。</p>
<p>    捕获到的SQL语句如下：<br />
<span id="more-461"></span></p>
<blockquote><p>SELECT *<br />
FROM (SELECT DISTINCT e.n_event_id,<br />
e.n_parent_id,<br />
e.v_event_num,<br />
em.n_req_type_1,<br />
em.n_req_type_2,<br />
em.v_title,<br />
em.v_description,<br />
e.n_priority,<br />
cb.n_time_limit,<br />
cb.n_status,<br />
e.n_process_way,<br />
e.n_maintaince_event_id,<br />
e.v_maintaince_flag,<br />
e.v_replacedevice_flag,<br />
et.d_acbept_date,<br />
et.d_finish_date,<br />
et.v_exempt_status,<br />
et.n_callback_status,<br />
et.n_delay_time,<br />
erpl.n_creator,<br />
erpl.d_creation_date,<br />
e.n_req_id,<br />
el.v_res_notice_msg,<br />
el.v_res_notice_email,<br />
el.v_res_notice_im,<br />
vd.v_valid_status,<br />
vd.v_related_org_id,<br />
e.n_dev_process_way,<br />
e.v_over_time_reason,<br />
e.v_confirm_person,<br />
e.v_new_device_num<br />
FROM tb_event e,<br />
tb_event_related_person erpl,<br />
vorg_department vd,<br />
tb_callback cb,<br />
tb_event_log el,<br />
tb_event_marker em,<br />
tb_event_track et<br />
WHERE e.n_event_id = et.n_event_id(+)<br />
AND e.n_event_id = em.n_event_id(+)<br />
AND e.n_event_id = el.n_event_id(+)<br />
AND e.n_event_id = cb.n_event_id(+)<br />
AND erpl.n_dept_id = vd.recid(+)<br />
AND e.n_event_id = erpl.n_event_id(+)<br />
ORDER BY e.d_creation_date DESC)<br />
WHERE rownum &lt;= 40;</p></blockquote>
<p>vorg_department为一个view，具体定义如下：</p>
<blockquote><p>create or replace view vorg_department as<br />
select d.recid,<br />
r.v_valid_status,<br />
d.v_related_org_id,<br />
r.org_parent,<br />
r.tree_no,<br />
d.dept_kind,<br />
d.dept_type,<br />
d.dept_name,<br />
d.status,<br />
d.dept_code,<br />
d.area_code,<br />
d.dept_prof,<br />
d.sort_num,<br />
d.link_addr,<br />
r.layer<br />
from ORG_DEPARTMENT d, ORG_DEPRELATION r<br />
where d.recid = r.org_child<br />
and r.relation_type = 1</p></blockquote>
<p>    该语句的执行计划如下：</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">PLAN_TABLE_OUTPUT</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">| Id<span style="mso-spacerun: yes;">  </span>| Operation<span style="mso-tab-count: 2;">      </span><span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;">          </span>|<span style="mso-spacerun: yes;">  </span>Name<span style="mso-tab-count: 3;">                 </span>| Rows  | Bytes|TempSpc|Cost|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes;">   </span>0 | SELECT STATEMENT<span style="mso-tab-count: 1;">   </span><span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;"> </span>| <span style="mso-tab-count: 3;">          </span><span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;">       </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-tab-count: 1;">   </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>40| 15404| <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-tab-count: 1;">  </span>23M|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes;">  </span>1 |<span style="mso-spacerun: yes;">  </span>COUNT STOPKEY<span style="mso-tab-count: 2;">      </span><span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;">    </span>| <span style="mso-tab-count: 3;">          </span><span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;">         </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-tab-count: 1;">   </span><span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-tab-count: 1;">    </span><span style="mso-spacerun: yes;">  </span>|<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;">  </span>|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes;">   </span>2 |<span style="mso-spacerun: yes;">   </span>VIEW<span style="mso-tab-count: 3;">              </span><span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;">      </span><span style="mso-spacerun: yes;"> </span>| <span style="mso-tab-count: 3;">           </span><span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;">         </span>|<span style="mso-tab-count: 1;">   </span>110M|<span style="mso-spacerun: yes;">  </span>395G|<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span>| <span style="mso-spacerun: yes;"> </span>23M|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes;">  </span>3 |<span style="mso-spacerun: yes;">    </span>SORT UNIQUE STOPKEY<span style="mso-tab-count: 1;">  </span><span style="mso-spacerun: yes;">     </span><span style="mso-spacerun: yes;"> </span>| <span style="mso-tab-count: 3;">            </span><span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;">       </span>|<span style="mso-tab-count: 1;">   </span>110M|<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span>27G| 58G|<span style="mso-tab-count: 1;">  </span>11M|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;"><span style="font-size: 9pt; color: #ff0000; font-family: 宋体;">|<span style="mso-spacerun: yes">  </span><span style="mso-spacerun: yes"> </span>4 |<span style="mso-spacerun: yes">    </span><span style="mso-spacerun: yes"> </span>NESTED LOOPS OUTER<span style="mso-tab-count: 1">   </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes">   </span><span style="mso-spacerun: yes"> </span>| <span style="mso-tab-count: 2">     </span><span style="mso-tab-count: 1">     </span><span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes"> </span>|<span style="mso-tab-count: 1">   </span>110M| <span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span>27G|<span style="mso-tab-count: 1">  </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span>|<span style="mso-tab-count: 1"> </span>2797|</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;"><span style="font-size: 9pt; color: #ff0000; font-family: 宋体;">|* <span style="mso-spacerun: yes"> </span>5 |<span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes"> </span>HASH JOIN OUTER<span style="mso-tab-count: 1">     </span><span style="mso-spacerun: yes">     </span>| <span style="mso-tab-count: 2">         </span><span style="mso-tab-count: 1">     </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes"> </span>|<span style="mso-tab-count: 1">  </span></span><span style="font-size: 9pt; color: #00ff00; font-family: 宋体;">1255K</span><span style="font-size: 9pt; color: #ff0000; font-family: 宋体;">| <span style="mso-spacerun: yes"> </span>308M| 39M|<span style="mso-tab-count: 1"> </span>2797|</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|* <span style="mso-spacerun: yes;"> </span>6 |<span style="mso-spacerun: yes;">       </span>HASH JOIN OUTER<span style="mso-tab-count: 1;">    </span><span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;"> </span>| <span style="mso-tab-count: 3;">            </span><span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;">        </span>|<span style="mso-tab-count: 1;">   </span>153K| <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>37M|<span style="mso-spacerun: yes;"> </span>28M|<span style="mso-tab-count: 1;"> </span>1873|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes;">  </span>7 |<span style="mso-spacerun: yes;">        </span>HASH JOIN OUTER<span style="mso-tab-count: 1;">   </span><span style="mso-spacerun: yes;">     </span>| <span style="mso-tab-count: 3;">            </span><span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-tab-count: 1;">   </span>115K| <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>27M| 24M| 1384|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes;">  </span>8 | <span style="mso-spacerun: yes;">        </span>HASH JOIN OUTER<span style="mso-spacerun: yes;">      </span><span style="mso-spacerun: yes;"> </span>| <span style="mso-tab-count: 3;">            </span><span style="mso-spacerun: yes;">        </span><span style="mso-spacerun: yes;">  </span>|<span style="mso-tab-count: 1;">   </span>101K|<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span>23M| 23M| <span style="mso-spacerun: yes;"> </span>990|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes;">  </span>9 | <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;">        </span>HASH JOIN OUTER<span style="mso-spacerun: yes;">     </span><span style="mso-spacerun: yes;"> </span>| <span style="mso-tab-count: 3;">            </span><span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;">       </span>|<span style="mso-tab-count: 1;">   </span>100K|<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span>22M| 17M| <span style="mso-spacerun: yes;"> </span>571| </span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes;">  </span>10 | <span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;">        </span>TABLE ACCESS FULL <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>| TB_EVENT<span style="mso-tab-count: 2;">         </span><span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;">  </span>| <span style="mso-spacerun: yes;"> </span>77044|<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span>16M|<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">   </span>| <span style="mso-spacerun: yes;"> </span>256|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes;">  </span>11 | <span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;">        </span>INDEX FAST FULL SCAN| IDX_EVENT_TRACK_N_E_ID|<span style="mso-tab-count: 1;">   </span>100K|<span style="mso-spacerun: yes;">  </span>491K|<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">   </span>|<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>4|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes;">  </span>12 | <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;">        </span>INDEX FAST FULL SCAN |IDX_TB_CALLBAK_E_ID    | <span style="mso-spacerun: yes;"> </span>75959|<span style="mso-spacerun: yes;">  </span>296K| <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>| <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>21|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes;">  </span>13 | <span style="mso-spacerun: yes;">        </span>TABLE ACCESS FULL<span style="mso-spacerun: yes;">     </span>| TB_EVENT_MARKER <span style="mso-spacerun: yes;">      </span>|<span style="mso-tab-count: 1;">   </span>3686| 18430|<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;"> </span>3|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|* 14 |<span style="mso-spacerun: yes;">        </span>INDEX FAST FULL SCAN<span style="mso-spacerun: yes;">   </span>| IDX_TB_EVENT_RP_DUP1<span style="mso-tab-count: 1;">  </span>|<span style="mso-tab-count: 1;">   </span>101K|<span style="mso-spacerun: yes;">  </span>895K|<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>4|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes;">  </span>15 |<span style="mso-spacerun: yes;">       </span>INDEX FAST FULL SCAN<span style="mso-spacerun: yes;">    </span>|IDX_TB_EVENT_LOG_N_E_ID|<span style="mso-tab-count: 1;">   </span>628K| 2455K| <span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-spacerun: yes;">  </span>149|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;"><span style="font-size: 9pt; color: #ff0000; font-family: 宋体;">| <span style="mso-spacerun: yes"> </span>16 |<span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes"> </span>VIEW PUSHED PREDICATE <span style="mso-spacerun: yes">  </span><span style="mso-spacerun: yes"> </span>| VORG_DEPARTMENT <span style="mso-spacerun: yes">     </span><span style="mso-spacerun: yes"> </span>|<span style="mso-tab-count: 1">    </span><span style="mso-spacerun: yes"> </span>88| 1144 | <span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span>|<span style="mso-tab-count: 1">  </span><span style="mso-spacerun: yes">  </span><span style="mso-spacerun: yes"> </span>|</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes;">  </span>17 |<span style="mso-spacerun: yes;">      </span><span style="mso-spacerun: yes;"> </span>NESTED LOOPS<span style="mso-tab-count: 1;">  </span><span style="mso-spacerun: yes;">      </span><span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;">                   </span>|<span style="mso-tab-count: 1;">   </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>1 |<span style="mso-spacerun: yes;">  </span><span style="mso-spacerun: yes;"> </span>15 |<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">   </span>|<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">   </span>2|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|* 18 |<span style="mso-spacerun: yes;">       </span><span style="mso-spacerun: yes;"> </span>INDEX UNIQUE SCAN<span style="mso-spacerun: yes;">    </span>| PK_DEPARTMENT<span style="mso-tab-count: 2;">           </span>|<span style="mso-tab-count: 1;">  </span><span style="mso-spacerun: yes;">   </span>1 |<span style="mso-tab-count: 1;">    </span><span style="mso-spacerun: yes;"> </span>6|<span style="mso-spacerun: yes;">    </span>|<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">   </span>1|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">|* 19 |<span style="mso-spacerun: yes;">        </span>INDEX RANGE SCAN<span style="mso-spacerun: yes;">    </span><span style="mso-spacerun: yes;"> </span>| ASSOCIATION8_FK <span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;">      </span>|<span style="mso-tab-count: 1;">   </span><span style="mso-spacerun: yes;">  </span>1 |<span style="mso-tab-count: 1;">    </span><span style="mso-spacerun: yes;"> </span>9|<span style="mso-spacerun: yes;">   </span><span style="mso-spacerun: yes;"> </span>|<span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;">   </span>1|</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 宋体;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p>     首先了解了一下各表的统计信息情况和表的数据情况，统计信息都是最新的，除了tb_event_log表略微大点，有60多万数据外，其余表均10万左右或更小，执行计划里面的小表table full sacn和一些索引的access情况也并无严重问题。接下来关注表与表之间的关联顺序和方式。</p>
<p>    继续分析这个执行计划，第四行评估出了一个超级大的结果集，找到这个结果集的产生方式，第16行引起了我的注意。VIEW PUSHED PREDICATE,在存在out join和view的情况下，CBO自动选择了谓词推进到了视图VORG_DEPARTMENT中以过滤更多的数据，也算无可厚非。但继续往上找，找到这个谓词的基数，第5行，发现评估出来的基数竟然有100多万行之多，而视图本身的结果集，只有不到3000行！</p>
<p>   看来这是一个“愚蠢的&#8221;执行计划，CBO先选择视图之外的表做关联,tb_event虽然本身很小，但由于与其他表做多次外连接，因此最终得到一个庞大的基数，而拿着这个结果集推进到视图中，想想是多么恐怖的事情！</p>
<p>    一般来说，大集合的结果集合并不适合进行PUSHED PREDICATE。如果只是少量，会起到比较好的效果。</p>
<p>    既然知道了原因，那就尝试着去改变这个执行计划。Oracle提供了no_push_pred和push_pred来改变pushed predication行为，在上述语句中添加no_push_pred提示：</p>
<blockquote><p>SELECT *<br />
FROM (SELECT <strong>/*+ no_push_pred(vd) */</strong> DISTINCT e.n_event_id,<br />
e.n_parent_id,<br />
e.v_event_num,<br />
&#8230;.<br />
FROM tb_event e,<br />
tb_event_related_person erpl,<br />
vorg_department vd,<br />
tb_callback cb,<br />
tb_event_log el,<br />
tb_event_marker em,<br />
tb_event_track et<br />
WHERE e.n_event_id = et.n_event_id(+)<br />
AND e.n_event_id = em.n_event_id(+)<br />
AND e.n_event_id = el.n_event_id(+)<br />
AND e.n_event_id = cb.n_event_id(+)<br />
AND erpl.n_dept_id = vd.recid(+)<br />
AND e.n_event_id = erpl.n_event_id(+)<br />
ORDER BY e.d_creation_date DESC)<br />
WHERE rownum &lt;= 40;</p></blockquote>
<p>修改后的执行计划如下：</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">| Id<span style="mso-spacerun: yes">  </span>|<span style="mso-spacerun: yes">                     </span>Operation | <span style="mso-spacerun: yes">                 </span><span style="mso-spacerun: yes"> </span>Name | Rows | Bytes|TempSpc|Cost|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">| <span style="mso-spacerun: yes">  </span>0 | SELECT STATEMENT<span style="mso-spacerun: yes">              </span>| <span style="mso-spacerun: yes">                       </span>| <span style="mso-spacerun: yes">  </span>40 | 11553|<span style="mso-spacerun: yes">   </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span>| <span style="mso-spacerun: yes"> </span>181K|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes">  </span>1 |<span style="mso-spacerun: yes">  </span>COUNT STOPKEY<span style="mso-spacerun: yes">                </span>| <span style="mso-spacerun: yes">                       </span>| <span style="mso-spacerun: yes">     </span>| <span style="mso-spacerun: yes">     </span>|<span style="mso-spacerun: yes">    </span><span style="mso-spacerun: yes"> </span>| <span style="mso-spacerun: yes">     </span>|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes">   </span>2 |<span style="mso-spacerun: yes">   </span>VIEW<span style="mso-spacerun: yes">                       </span><span style="mso-spacerun: yes"> </span>|<span style="mso-spacerun: yes">                       </span><span style="mso-spacerun: yes"> </span>| 1470K| 5398M|<span style="mso-spacerun: yes">    </span><span style="mso-spacerun: yes"> </span>| <span style="mso-spacerun: yes"> </span>181K|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes">  </span>3 |<span style="mso-spacerun: yes">    </span>SORT UNIQUE STOPKEY<span style="mso-spacerun: yes">        </span>| <span style="mso-spacerun: yes">                       </span>| 1470K| <span style="mso-spacerun: yes"> </span>370M| 765M| 92546|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes">  </span>4 |<span style="mso-spacerun: yes">     </span>HASH JOIN OUTER<span style="mso-spacerun: yes">           </span>| <span style="mso-spacerun: yes">                       </span>| 1470K| <span style="mso-spacerun: yes"> </span>370M| <span style="mso-spacerun: yes"> </span>46M| <span style="mso-spacerun: yes"> </span>3546|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes">  </span>5 |<span style="mso-spacerun: yes">      </span>HASH JOIN OUTER<span style="mso-spacerun: yes">          </span>| <span style="mso-spacerun: yes">              </span><span style="mso-spacerun: yes">         </span>| <span style="mso-spacerun: yes"> </span>180K| <span style="mso-spacerun: yes">  </span>44M| <span style="mso-spacerun: yes"> </span>39M| <span style="mso-spacerun: yes"> </span>2499|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; color: #ff0000; font-family: 宋体;">|*<span style="mso-spacerun: yes">  </span>6 |<span style="mso-spacerun: yes">       </span>HASH JOIN OUTER<span style="mso-spacerun: yes">         </span>|<span style="mso-spacerun: yes">                       </span><span style="mso-spacerun: yes"> </span>| <span style="mso-spacerun: yes"> </span>153K| <span style="mso-spacerun: yes">  </span>37M| <span style="mso-spacerun: yes"> </span>28M| <span style="mso-spacerun: yes"> </span>1873|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes">  </span>7 |<span style="mso-spacerun: yes">        </span>HASH JOIN OUTER<span style="mso-spacerun: yes">        </span>| <span style="mso-spacerun: yes">                       </span>| <span style="mso-spacerun: yes"> </span>115K| <span style="mso-spacerun: yes">  </span>27M| <span style="mso-spacerun: yes"> </span>24M| <span style="mso-spacerun: yes"> </span>1384|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes">  </span>8 |<span style="mso-spacerun: yes">         </span>HASH JOIN OUTER<span style="mso-spacerun: yes">   </span><span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes">                       </span>| <span style="mso-spacerun: yes"> </span>101K| <span style="mso-spacerun: yes">  </span>23M| <span style="mso-spacerun: yes"> </span>23M| <span style="mso-spacerun: yes">  </span>990|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|*<span style="mso-spacerun: yes">  </span>9 |<span style="mso-spacerun: yes">          </span>HASH JOIN OUTER<span style="mso-spacerun: yes">      </span>| <span style="mso-spacerun: yes">                       </span>| <span style="mso-spacerun: yes"> </span>100K| <span style="mso-spacerun: yes">  </span>22M| <span style="mso-spacerun: yes"> </span>17M|<span style="mso-spacerun: yes">  </span><span style="mso-spacerun: yes"> </span>571|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes">  </span>10 |<span style="mso-spacerun: yes">           </span>TABLE ACCESS FULL<span style="mso-spacerun: yes">   </span>| TB_EVENT<span style="mso-spacerun: yes">              </span><span style="mso-spacerun: yes"> </span>| 77044| <span style="mso-spacerun: yes">  </span>16M| <span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes">  </span>256|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes">  </span>11 |<span style="mso-spacerun: yes">       </span><span style="mso-spacerun: yes">    </span>INDEX FAST FULL SCAN| IDX_EVENT_TRACK_N_E_ID | <span style="mso-spacerun: yes"> </span>100K| <span style="mso-spacerun: yes"> </span>491K| <span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes">    </span>4|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes">  </span>12 |<span style="mso-spacerun: yes">          </span>INDEX FAST FULL SCAN | IDX_TB_CALLBAK_E_ID<span style="mso-spacerun: yes">  </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span>| 75959| <span style="mso-spacerun: yes"> </span>296K| <span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes">  </span>21|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes">  </span>13 |<span style="mso-spacerun: yes">         </span>TABLE ACCESS FULL<span style="mso-spacerun: yes">     </span>| TB_EVENT_MARKER<span style="mso-spacerun: yes">      </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span>| <span style="mso-spacerun: yes"> </span>3686| 18430| <span style="mso-spacerun: yes">    </span>|<span style="mso-spacerun: yes">  </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes">  </span>3|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|* 14 |<span style="mso-spacerun: yes">        </span>INDEX FAST FULL SCAN<span style="mso-spacerun: yes">   </span>| IDX_TB_EVENT_RP_DUP1 <span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes"> </span>| <span style="mso-spacerun: yes"> </span>101K| <span style="mso-spacerun: yes"> </span>895K| <span style="mso-spacerun: yes">    </span>|<span style="mso-spacerun: yes">  </span><span style="mso-spacerun: yes"> </span><span style="mso-spacerun: yes">  </span>4|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; color: #ff0000; font-family: 宋体;">|<span style="mso-spacerun: yes">  </span>15 |<span style="mso-spacerun: yes">       </span>VIEW <span style="mso-spacerun: yes">                   </span>| VORG_DEPARTMENT<span style="mso-spacerun: yes">  </span><span style="mso-spacerun: yes">      </span>| <span style="mso-spacerun: yes"> </span>3355| 20130| <span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes">    </span>3|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes">  </span>16 |<span style="mso-spacerun: yes">        </span>NESTED LOOPS<span style="mso-spacerun: yes">           </span>| <span style="mso-spacerun: yes">                       </span>| <span style="mso-spacerun: yes"> </span>3355| 50325| <span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes">    </span>3|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|* 17 |<span style="mso-spacerun: yes">         </span>INDEX FAST FULL SCAN<span style="mso-spacerun: yes">  </span>| ASSOCIATION8_FK <span style="mso-spacerun: yes">       </span>| <span style="mso-spacerun: yes"> </span>3356| 30204| <span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes">    </span>3|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|* 18 |<span style="mso-spacerun: yes">         </span>INDEX UNIQUE SCAN<span style="mso-spacerun: yes">     </span>| PK_DEPARTMENT<span style="mso-spacerun: yes">         </span><span style="mso-spacerun: yes"> </span>| <span style="mso-spacerun: yes">    </span>1| <span style="mso-spacerun: yes">    </span>6| <span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes">     </span>|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">|<span style="mso-spacerun: yes">  </span>19 |<span style="mso-spacerun: yes">      </span>INDEX FAST FULL SCAN<span style="mso-spacerun: yes">     </span>| IDX_TB_EVENT_LOG_N_E_ID| <span style="mso-spacerun: yes"> </span>628K| 2455K| <span style="mso-spacerun: yes">    </span>| <span style="mso-spacerun: yes">  </span>149|</span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-size: 9pt; font-family: 宋体;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p>     调整后整个执行速度有了明显提升，15秒之内可以返回结果，可以看到view结果集与第六步产生的结果集进行hash join outer，然后得到的结果集合与最大的表tb_event_log再次进行hash join outer。当然这个执行计划可能还有完善的余地，需进一步根据数据情况调整表的关联顺序.
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/maa_migrate_database_1.html" title="Oracle高可用迁移升级场景与实战(一)">Oracle高可用迁移升级场景与实战(一)</a></li>
<li><a href="http://www.easyora.net/blog/hugepages_on_linux.html" title="Hugepages On Linux">Hugepages On Linux</a></li>
<li><a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html" title="记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit">记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_performance.html" title="Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化">Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_daily_maintenance.html" title="Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除">Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</a></li>
<li><a href="http://www.easyora.net/blog/oracle_time_model.html" title="Oracle性能优化下的时间模型">Oracle性能优化下的时间模型</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/push_predicate_sql_tuning.html&title=%E4%B8%80%E6%AC%A1%E6%94%B9%E5%8F%98PUSHED+PREDICATE%E6%96%B9%E5%BC%8F%E8%BF%9B%E8%A1%8CSQL%E8%B0%83%E4%BC%98%E7%9A%84%E6%A1%88%E4%BE%8B&tags=no_push_pred, oracle, sql tuning, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/push_predicate_sql_tuning.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</title>
		<link>http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html</link>
		<comments>http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 03:57:42 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[32bit 64bit]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[upgrade]]></category>

		<category><![CDATA[升级]]></category>

		<category><![CDATA[高可用]]></category>

		<guid isPermaLink="false">http://www.easyora.net/?p=438</guid>
		<description><![CDATA[由于系统整体规划需求，需将现有9iR2数据库统一升级到10gR2版本，由于涉及到机房内多套业务系统，因此作为明年的迁移项目，需要做前期迁移方案规划和测试。
   目前情况大致如此：Linux 32bit/Oracle 32 bit 升级到 Linux 64 bit/Oracle 64 bit,由于涉及的业务数据库容量动辄几百G，且停机时间有限(不超过4小时),因此迁移方案的核心在于如何用最短的时间和最安全可控的步骤来完成这次迁移。]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;由于系统整体规划需求，需将现有9iR2数据库统一升级到10gR2版本，由于涉及到机房内多套业务系统，因此作为明年的迁移项目，需要做前期迁移方案规划和测试。
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;情况大致如此
</p>
<table class="MsoNormalTable" style="margin: auto auto auto 17.6pt; mso-cellspacing: 0cm; mso-padding-alt: 0cm 0cm 0cm 0cm;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="left"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;" lang="EN-US"> </span></p>
</td>
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 6pt 0pt; text-align: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="center"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;">迁移前<span lang="EN-US"></span></span></p>
</td>
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 6pt 0pt; text-align: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="center"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;">迁移后<span lang="EN-US"></span></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 6pt 0pt; text-align: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="center"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;" lang="EN-US">OS </span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;">版本<span lang="EN-US"></span></span></p>
</td>
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 6pt 0pt; text-align: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="center"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;" lang="EN-US">Linux AS4( 32bit)</span></p>
</td>
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 6pt 0pt; text-align: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="center"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;" lang="EN-US">Linux AS4( 64bit)</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes;">
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 6pt 0pt; text-align: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="center"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;" lang="EN-US">Oracle</span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;">版本<span lang="EN-US"></span></span></p>
</td>
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 6pt 0pt; text-align: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="center"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;" lang="EN-US">9iR2(9.2.0.6/9.2.0.8)</span></p>
</td>
<td style="width: 5cm; background-color: transparent; border: #d4d0c8; padding: 0cm;" width="189">
<p class="MsoNormal" style="margin: 0cm 6pt 0pt; text-align: center; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;" align="center"><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;" lang="EN-US">10.2.0</span><span style="font-size: 9pt; color: black; font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体;" lang="EN-US">.4</span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;&nbsp;&nbsp;&nbsp;由于涉及的业务数据库容量动辄几百G，且停机时间有限(不超过4小时),因此迁移方案的核心在于如何用最短的时间和最安全可控的步骤来完成这次迁移。<br />
<span id="more-438"></span>
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;在高可用迁移案例中，最糟糕的情况莫过于跨OS的数据库迁移(非异构,排除字符集不同的情况,比如Linux-&gt;UNiX,Windows-&gt;Unix),除了可借助一些oracle AQ和Streams来完成高可用同步和迁移外，并没有更好的处理办法(Dataguard无从发挥作用,诸如transport tablespace等手段对一个跨os的大容量的迁移项目也几乎鸡肋,实际中根本无法承受转换数据文件类型所带来的时间损耗)。但Streams等方案太过于繁琐,需要有审慎周密的迁移步骤和考虑。当然，借助于三方工具可以完成诸多海量迁移(如DSG/SharePlex等),但出于成本和其他因素,并不是每个迁移用户都有选择的余地.
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;话题转到开篇的迁移情况，由于只是OS位数和Oracle版本/位数的转换，所以情况并非那么悲观。Oracle本身也提供了脚本,用来支持在32位和64位之间做互相转换(rdbms/admin/utlirp.sql,这种转换是双向的).那么重点问题在于如何在停机之前将32位os上的32位db与64位os上的64位db做同步,因为不可能停库以后才去将32bit os上datafile文件copy到64bit os上，如此数据量,光copy文件的时间就无法接受。能想到的最简单的同步办法，莫过于dataguard了.
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;因此整个迁移方案雏形形成,新增一台设备，安装linux 64bit的os，部署2套Oracle版本，一套Oracle 9i(版本对应待升级源库版本,作为待升级源库的standby端做日志同步),另一套Oracle 64bit 10.2.0.4(用来做最终的升级版本).
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;如此一来,整个迁移步骤就比较明了了。停库升级之前,做好主备的dataguard同步.待升级时刻，停主库，备库做failove切换，然后在新主库上做一系列数据字典升级和位数转换工作.跨版本的升级和位数转换过程，可以参考<strong>Metalink ID 62290.1</strong>(该文档并没有提及跨大版本升级的位数转换，但实际测试中9i 32bit 升级到10g 64bit依然可行)
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;特别提出：Metalink ID 62290.1提出32bit与64bit区别仅仅在于PL/SQL的编译格式不同，而且，一般的版本升级/降级过程会自动进行位数的转换。</p>
<blockquote><p>The on-disk format for database data, redo, and undo is identical for the 32-bit and 64-bit installations of Oracle. The only internal structural differences between the 32-bit and 64-bit Oracle installations are the following:<br />
The compiled format of PL/SQL is different. The instructions for how and when to recompile PL/SQL are provided in the appropriate chapters of the Migration book. The storage format of user-defined types is based on the release of Oracle that created the database. The existing storage format will be converted to the correct format transparently when necessary. User-defined types include object types, REFs, varrays, and nested tables.</p></blockquote>
<blockquote><p>If you are changing word-size during a migration, upgrade, or downgrade operation then no additional action is required. The word-size is changed automatically during any of these operations</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;问题到此为止远没有结束,当我提出这个方案的时候，同事持有诸多疑虑。在Linux 64bit的OS上，用来做standby同步的9i版本,装的是32bit的还是64bit的呢，且是否能够与32bit OS上的32bit db形成dataguard体系呢?
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;早前我曾做过测试案例，无论位数32还是64,dataguard体系都不存在任何问题.但要害在于,无论装32bit和64bit，看似Oracle官方都有不支持的地方且有明确的文档说明。
</p>
<blockquote><p>1.linux 64bit OS上安装oracle 32bit 9iR2</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;按照常规办法，这种组合根本就无法正常安装成功。Oracle不支持在linux 64bit OS上安装oracle 32bit 9iR2,见<strong><strong><strong>metalink ID 416530.1</strong></strong></strong>
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 实际中从主库上tar一个安装好的Oracle 32bit 9iR2放到linux 64bit的OS上，数据库依然能够正常运行并与主库形成dataguard体系.
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Dataguard failover后，利用10gR2的软件，直接进行数据字典升级(或者用dbua).
</p>
<blockquote><p>2.linux 64bit OS上安装oracle 64bit 9iR2</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;这种办法等同于64bit的db与32bit的db做dataguard，<strong><strong>metalink ID 413484.1 </strong></strong>给出了异构平台下的dataguard组合列表，只有在10g以后，Oracle才支持linux 64bit与 Linux 32bit之间做dataguard.
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;但实际测试说明，这种dataguard组合模式在9iR2下依然成立.
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Dataguard failover后，利用9iR2 64bit的软件，执行utlirp脚本将32bit 9iR2转换成64bit .接下来利用10g R2 64bit的软件，做常规的9i-&gt;10g数据库升级(手工升级数据字典或者使用dbua).
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;两种方案在测试中皆可行，个人倾向于后者。
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;实际测试中按照Dataguard+升级数据字典和转换位数的方法测试，整个升级过程没有任何问题,检查数据库各组件状态，均正常(注意OLAP组件，如果库使用了该组件，32bit-&gt;64bit的转换会造成该组件的不可用，需要单独处理。另外，升级到10204需要注意Time Zone Definitions的问题)。升级过程在3小时之内可以完成.回顾整个迁移方案，唯一没有文档有力支撑的方便是Dataguard的组合模式,实际standby端也无非是做了block级别的recover，既然dataguard能启用且日志能够被Recover，那就不存在由于该步骤引发其他的bug的可能。</p>
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/maa_migrate_database_1.html" title="Oracle高可用迁移升级场景与实战(一)">Oracle高可用迁移升级场景与实战(一)</a></li>
<li><a href="http://www.easyora.net/blog/hugepages_on_linux.html" title="Hugepages On Linux">Hugepages On Linux</a></li>
<li><a href="http://www.easyora.net/blog/push_predicate_sql_tuning.html" title="一次改变PUSHED PREDICATE方式进行SQL调优的案例">一次改变PUSHED PREDICATE方式进行SQL调优的案例</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_performance.html" title="Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化">Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_daily_maintenance.html" title="Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除">Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</a></li>
<li><a href="http://www.easyora.net/blog/sql_server_high_available.html" title="构建SQL Server高可用">构建SQL Server高可用</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html&title=%E8%AE%B0%E4%B8%80%E6%AC%A1%E9%AB%98%E5%8F%AF%E7%94%A8%E8%BF%81%E7%A7%BB%E6%96%B9%E6%A1%88%E7%9A%84%E8%A7%84%E5%88%92%26%238212%3B+Oracle+9i+32+bit%E5%8D%87%E7%BA%A7%E8%87%B3Oracle+10g+64+bit&tags=32bit 64bit, oracle, upgrade, 升级, 高可用, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</title>
		<link>http://www.easyora.net/blog/logical_standby_performance.html</link>
		<comments>http://www.easyora.net/blog/logical_standby_performance.html#comments</comments>
		<pubDate>Sun, 01 Nov 2009 00:30:54 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[logical standby]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[性能调整]]></category>

		<guid isPermaLink="false">http://www.easyora.net/?p=418</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;本篇主要讲述10gR2 logical standby的性能优化方法.一些日常维护和故障处理要点,请参考
Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除
&#160;&#160;&#160;&#160;Logical Standby较physical standby容易出现性能上的问题。对于一个DML繁重，尤其是大事务比较多的库，SQL APPLY往往会出现性能上的瓶颈。因此导致备库‘hang’住或者无法跟上主库同步速度的情况也并不少见。
&#160;&#160;&#160;&#160;下面描述一下逻辑备库在性能排查和诊断方面的一些切入点和方法：
 
  1.诊断并调整LCR Cache
&#160;&#160;&#160;&#160;LCR Cache由shared pool 中的一部分来分配，用于缓存LCRs。过小的cache会引起page out，严重减缓LCR BUILDER过程。如果时常存在大量而且频繁的page out,意味着当前设置的LCR cache过小或者数据库中存在较大的事务。
&#160;&#160;&#160;&#160;查询v$v$logstdby_process视图，如果BUILDER进程经常出现ORA-16243: paging out *** bytes of memory to disk 之类的事件，说明LCR cache可能存在问题。
&#160;&#160;&#160;&#160;同样，通过计算某段时间的pageout activity(%)，可了解LCR Cache的设置是否合适，通常该指标被认为低于5%
&#160;&#160;&#160;&#160;A时间点：
SQL> SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE &#8216;%page%&#8217; or NAME LIKE &#8216;%uptime&#8217; or name like &#8216;%idle%&#8217;;
NAME								 VALUE
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
coordinator uptime in secs     [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;本篇主要讲述10gR2 logical standby的性能优化方法.一些日常维护和故障处理要点,请参考</p>
<blockquote><p><a href="http://www.easyora.net/blog/logical_standby_daily_maintenance.html">Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</a></p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Logical Standby较physical standby容易出现性能上的问题。对于一个DML繁重，尤其是大事务比较多的库，SQL APPLY往往会出现性能上的瓶颈。因此导致备库‘hang’住或者无法跟上主库同步速度的情况也并不少见。<br />
&nbsp;&nbsp;&nbsp;&nbsp;下面描述一下逻辑备库在性能排查和诊断方面的一些切入点和方法：<br />
 <span id="more-418"></span></p>
<blockquote><p>  1.诊断并调整LCR Cache</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;LCR Cache由shared pool 中的一部分来分配，用于缓存LCRs。过小的cache会引起page out，严重减缓LCR BUILDER过程。如果时常存在大量而且频繁的page out,意味着当前设置的LCR cache过小或者数据库中存在较大的事务。<br />
&nbsp;&nbsp;&nbsp;&nbsp;查询v$v$logstdby_process视图，如果BUILDER进程经常出现ORA-16243: paging out *** bytes of memory to disk 之类的事件，说明LCR cache可能存在问题。<br />
&nbsp;&nbsp;&nbsp;&nbsp;同样，通过计算某段时间的pageout activity(%)，可了解LCR Cache的设置是否合适，通常该指标被认为低于5%<br />
&nbsp;&nbsp;&nbsp;&nbsp;A时间点：</p>
<blockquote><p>SQL> SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE &#8216;%page%&#8217; or NAME LIKE &#8216;%uptime&#8217; or name like &#8216;%idle%&#8217;;<br />
NAME								 VALUE<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
coordinator uptime in secs                 68752<br />
bytes paged out                            12521<br />
secs spent in pageout                         21<br />
system idle time in secs                    1301 </p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;B时间点：</p>
<blockquote><p>SQL> SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE &#8216;%page%&#8217; or NAME LIKE &#8216;%uptime&#8217; or name like &#8216;%idle%&#8217;;<br />
NAME								 VALUE<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
coordinator uptime in secs                 69058<br />
bytes paged out                           225872<br />
secs spent in pageout                         56<br />
system idle time in secs                    1309</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Pageout activity计算如下：</p>
<blockquote><p>Change in coordinator uptime (C)     = (69058 – 68752) = 298 secs<br />
Amount of additional idle time (I)   = (1309 – 1301) = 8 secs<br />
Change in time spent in pageout (P)  = (56 – 21) = 35 secs<br />
<strong>Pageout activity(%)                  = P/(C-I) = 35/(298-8) ~ 12.06%</strong></p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;如果诊断LCR cache设置不合理，使用dbms_logstdby.appply_set包进行设置。</p>
<blockquote><p>SQL> exec dbms_logstdby.appply_set(&#8217;MAX_SGA&#8217;, 2048);</p></blockquote>
<blockquote><p>2.诊断并调整SQL apply process</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;在SQL Apply各进程中，可以调整的进程为PREPARER和APPLIER进程。所有的进程数目之和受MAX_SERVERS控制,而MAX_SERVERS最大值受初始化参数PARALLEL_MAX_SERVERS控制。<br />
&nbsp;&nbsp;&nbsp;&nbsp;Oracle推荐MAX_SERVERS数目设置为 (3*CPU) + 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;Oracle会根据MAX_SERVERS的设置自动调整PREPARER和APPLIER的进程数目,手工指定PREPARER和APPLIER进程数目在10gR2版本上不是必须的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;查询如下视图</p>
<blockquote><p> SQL> select available_committed_txn from v$logmnr_session;<br />
AVAILABLE_COMMITTED_TXN<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
                    50</p></blockquote>
<p>或者                  </p>
<blockquote><p>select a.value-b.value from v$logstdby_stats a ,v$logstdby_stats b  where a.name=&#8217;transactions ready&#8217; and b.name=&#8217;transactions applied&#8217;;<br />
a.value-b.value<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
                52
</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;如果得到的结果经常远大于appler进程的数目,则意味着需要调整appler的进程数量。</p>
<blockquote><p>SQL> execute dbms_logstdby.apply_set(&#8217;MAX_SERVERS&#8217;,30);  </p></blockquote>
<blockquote><p>3.诊断并调整long transaction</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;实际环境中往往存在一些异常缓慢的apply事务，例如Apllier进程出现如下状态：ORA-16124: transaction * ** *** is waiting on another transaction<br />
&nbsp;&nbsp;&nbsp;&nbsp;这类情况会成为备库无法跟上主库同步进度的罪魁祸首。在apply进程数目和lcr cache设置得当的情况下，如果存在这类情况，需要根据情况逐步考虑。</p>
<blockquote><p>(1).缺失高效索引造成的sql apply效率低下</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;如果一次事务只是操纵了少量行数据，依旧造成了备库SQL Apply的异常运行缓慢，往往是由于索引缺失或者低效的问题。因为主库上的一个DML语句，到备库上会根据操纵的行数解析成多个语句执行。假设primary端一次事务对A表删除了10条数据，进行了一次table scan，而在logical standby，如果依旧没有可用索引,会进行10次table scan来应用此事务<br />
&nbsp;&nbsp;&nbsp;&nbsp;可以根据v$logstdby_process得到活动的applier进程的当前sid，关联v$session,v$sql,v$sql_plan,v$session_wait等一系列视图，根据得到的SQL执行计划或者session等待情况进行判断。<br />
&nbsp;&nbsp;&nbsp;&nbsp;如必要,可以在备库上适当增加索引。</p>
<blockquote><p> (2).Eager Transaction</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Eager Transaction是指那些操纵了大量行数据或能产生大量LCRs的事务,引入Eager Transaction的目的是为了提高对大事务的apply速度和减少对LCR cache的压力。在在10gR2里,区分Eager Transaction的默认临界点是201 LCRs,该参数可以通过隐含参数_eager_size来控制，在大部分情况下,并不推荐更改该参数的设置。而且,鉴于SQL Apply的原理和特点,增加该参数的设置对提升一些大批量操作的事务应用的性能提升非常有限。而且，过大的_eager_size会造成LCRs Cache的过度使用。<br />
&nbsp;&nbsp;&nbsp;&nbsp;对于一些大批量操作的事务,可以通过skip的方式跳过被操纵的表上的这段大事务处理后,恢复unskip。然后通过dbms_logstdby.instantiate_table或者手工方式初始化数据。</p>
<blockquote><p>(3).其他争用</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;同一般的库一样，高并发的环境同样在logical standby上出现一些资源上的争用,比如itl上,buffer上的争用等.具体可以关联v$session_wait/v$segment_statistics等查询判断并做处理。</p>
<blockquote><p> 4.调整TRANSACTION CONSISTENCY </p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;logical standby端,10gR2下有2种事务一致性模式:事务的提交顺序可以和主库上完全一致,也可以不一致。后者可以提高SQL APPLY的性能,只保证相关事务的一致性,但会得到不一致的数据版本。某些情况下，为了提高应用的进度,可以临时设置成后者，然后待需要时恢复。</p>
<blockquote><p>SQL>exec dbms_logstdby.apply_set(&#8217;PRESERVE_COMMIT_ORDER&#8217;,'FALSE&#8217;);<br />
SQL>exec dbms_logstdby.apply_set(&#8217;PRESERVE_COMMIT_ORDER&#8217;,'TRUE&#8217;);  </p></blockquote>
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/logical_standby_daily_maintenance.html" title="Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除">Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</a></li>
<li><a href="http://www.easyora.net/blog/maa_migrate_database_1.html" title="Oracle高可用迁移升级场景与实战(一)">Oracle高可用迁移升级场景与实战(一)</a></li>
<li><a href="http://www.easyora.net/blog/hugepages_on_linux.html" title="Hugepages On Linux">Hugepages On Linux</a></li>
<li><a href="http://www.easyora.net/blog/push_predicate_sql_tuning.html" title="一次改变PUSHED PREDICATE方式进行SQL调优的案例">一次改变PUSHED PREDICATE方式进行SQL调优的案例</a></li>
<li><a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html" title="记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit">记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></li>
<li><a href="http://www.easyora.net/blog/oracle_time_model.html" title="Oracle性能优化下的时间模型">Oracle性能优化下的时间模型</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/logical_standby_performance.html&title=Logical+Standby%E6%97%A5%E5%B8%B8%E7%BB%B4%E6%8A%A4%E4%B8%8E%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%28%E4%BA%8C%29%26%238212%3B%E6%80%A7%E8%83%BD%E8%AF%8A%E6%96%AD%E4%B8%8E%E4%BC%98%E5%8C%96&tags=logical standby, oracle, 性能调整, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/logical_standby_performance.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</title>
		<link>http://www.easyora.net/blog/logical_standby_daily_maintenance.html</link>
		<comments>http://www.easyora.net/blog/logical_standby_daily_maintenance.html#comments</comments>
		<pubDate>Fri, 23 Oct 2009 09:16:49 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[logical standby]]></category>

		<category><![CDATA[maintenance]]></category>

		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://www.easyora.net/?p=407</guid>
		<description><![CDATA[Logical Standby日常维护与性能优化(一)--日常维护与故障排除]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; 本篇主要讲述logical standby日常管理维护中的检查和故障排除要点，不涉及性能问题。性能问题和相关调整将在下篇中单独阐述。</p>
<blockquote><p><a href="http://www.easyora.net/blog/logical_standby_performance.html">Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</a></p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 10gR2大大简化了logical standby的创建步骤，从physical到logical的转换步骤异常简单，不再对搭建过程过多描述。<br />
<span id="more-407"></span><br />
&nbsp;&nbsp;&nbsp;&nbsp; 因为Logical standby是SQL语句的逻辑运用，而standby是block级别的recover，从故障角度上将，Logical standby比standby standby有更多的故障机会出现。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 常用的用于维护和排查logical standby的视图几乎都是已”dba_logstdby_*”和“v$logstdby_*”开头，常用的包以”dbms_logstdby.*”开头，具体含义根据字面意思也不难理解,不赘述(下文有部分提及)。当然，用于physical standby的部分视图，对排查逻辑备库也同样适用。</p>
<blockquote><p>1.	APPLY状态的检查和诊断</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Apply进程是逻辑SQL运用的核心。Apply进程遇到错误会自动终止，需要处理后手工重新启动。因此，监控apply进度和状态是监控逻辑备库同步与否的关键，如同物理DG监控日志同步。</p>
<blockquote><p>(1)	监控备库上各个进程的状态</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 可以查询v$logstdby_process视图，用于得到与SQL APPLY相关的各进程的状态情况.<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果没有返回值，表示APPLY进程没有启动或者已停止。如果是后者，可以从alert.log文件或者dba_logstdby_events中得到更多的错误信息用于后续处理。</p>
<blockquote><p>(2)	Apply 进度</p></blockquote>
<p> &nbsp;&nbsp;&nbsp;&nbsp; 监控Apply进度可以得到备库的恢复进展以及同步状态。关联查询v$logstdby_progress 和dba_logstdby_log，得出目前SQL APPLY的apply scn/time以及log sequence。如果apply进程正常而主备之间同步有很大差异，需要做进一步排查。</p>
<blockquote><p>2.	SQL Apply的异常事务处理</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; SQL 　Apply的异常事务会记录到dba_logstdby_events视图中，对于能够进行手工fix的异常，可以处理后重新运行apply进程。对于某些无法处理或者修复后需要忽略的异常，通过dbms_logstdby.skip*一系列包做标记以便让apply进程跳过。比如，我们可以对特定的错误事务进行标记，通过dbms_logstdby.skip_transaction标记指定的事务而忽略该事务的运用。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在10G中，oracle提供了带skip failed transaction子句的 SQL apply启动语句，可以方便的对当前记录的错误事务全部跳过。</p>
<blockquote><p>SQL>alter database start logical standby apply skip failed transaction;</p></blockquote>
<blockquote><p>3.SKIP策略</p></blockquote>
<p>Logical standby提供skip的策略，可根据实际情况跳过不想被apply的对象或者跳过特定对象上的所有错误事务。<br />
dbms_logstdby.skip:  用于指定对象的DML DDL skip<br />
dbms_logstdby.skip_error:  用于指定对象上的错误事务 skip<br />
dbms_logstdby.skip_transaction:  用于指定事务 skip </p>
<blockquote><p>4.	UNSKIP与初始化</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Unskip是与skip相反的操作，用于已skip操作的撤销。对于unskip的对象，需要进行手工构造或者初始化。<br />
&nbsp;&nbsp;&nbsp;&nbsp; Oracle提供dbms_logstdby.instantiate_table包来对指定的table初始化。我们也可以手工来构造一个当前apply scn时刻的闪回查询版本来初始化数据。</p>
<blockquote><p>5.	DDL handle</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Logical standby中提供DDL handle的功能，用于自定义的一些DDL语句处理，比如一些表对象的重命名。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 需要注意的是,在逻辑备库中，db_file_name_convert/ log_file_name_convert参数并不生效。对于路径不同的主备体系，添加数据文件和表空间会引起逻辑备库的apply错误,可以通过DDL handle可以实现文件路径的重命名。<br />
&nbsp;&nbsp;&nbsp;&nbsp; ORACLE联机文档上的一个例子：</p>
<blockquote><p>CREATE OR REPLACE PROCEDURE SYS.HANDLE_TBS_DDL (<br />
  OLD_STMT  IN  VARCHAR2,<br />
  STMT_TYP  IN  VARCHAR2,<br />
  SCHEMA    IN  VARCHAR2,<br />
  NAME      IN  VARCHAR2,<br />
  XIDUSN    IN  NUMBER,<br />
  XIDSLT    IN  NUMBER,<br />
  XIDSQN    IN  NUMBER,<br />
  ACTION    OUT NUMBER,<br />
  NEW_STMT  OUT VARCHAR2<br />
) AS<br />
BEGIN<br />
&#8211; All primary file specification that contains a directory<br />
&#8211; /usr/orcl/primary/dbs<br />
&#8211; should go to /usr/orcl/stdby directory specification<br />
  NEW_STMT := REPLACE(OLD_STMT,<br />
                     &#8216;/usr/orcl/primary/dbs&#8217;,<br />
                     &#8216;/usr/orcl/stdby&#8217;);<br />
  ACTION := DBMS_LOGSTDBY.SKIP_ACTION_REPLACE;<br />
EXCEPTION<br />
  WHEN OTHERS THEN<br />
    ACTION := DBMS_LOGSTDBY.SKIP_ACTION_ERROR;<br />
    NEW_STMT := NULL;<br />
END HANDLE_TBS_DDL;
</p></blockquote>
<p>然后指向这个ddl handle</p>
<blockquote><p>SQL>exec dbms_logstdby.skip(stmt => &#8216;TABLESPACE&#8217;, proc_name => &#8216;SYS.HANDLE_TBS_DDL&#8217;); </p></blockquote>
<blockquote><p>6.参数设置</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 通过查看v$logstdby_stats观察现有的一些参数设置和状态。设置/恢复参数使用dbms_logstdby.apply_set/dbms_logstdby. apply_unset包进行。</p>
<blockquote><p>7. Role Transitions</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 逻辑switchover的过程要比physical standby复杂一些，需要有一步prepare的过程，注意留意期间主备库角色的当值状态。</p>
<blockquote><p>8.Flashback database</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 如果开启了flashback database，对于一个做过failover的原主库，可以通过flashback database的功能将数据库闪回到某个scn上，然后转换成备库，从而无需重新重新搭建环境。<br />
&nbsp;&nbsp;&nbsp;&nbsp; (1). 在新主库上，执行如下查询获得这个转换时刻的SCN</p>
<blockquote><p>SQL>SELECT VALUE FROM DBA_LOGSTDBY_PARAMETERS WHERE NAME = &#8216;STANDBY_BECAME_PRIMARY_SCN&#8217;;</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (2). 旧库上，执行flashback，并resetlogs</p>
<blockquote><p>SQL>FLASHBACK DATABASE TO SCN became_primary_scn;</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; (3).角色切换</p>
<blockquote><p>SQL>ALTER DATABASE START LOGICAL STANDBY APPLY NEW PRIMARY mylink;</p></blockquote>
<blockquote><p>9.Guard 模式</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;默认状态下的逻辑备库提供查询功能和sys用户下的DDL/DML操作,即standby模式.<br />
&nbsp;&nbsp;&nbsp;&nbsp;Oracle提供database级别的3种模式,即none/standby/all模式,通过查询v$database.guard_status列获得当前状态，可以通过以下SQL在备库上重新定义:</p>
<blockquote><p>SQL>alter databsae guard none(standby/all); </p></blockquote>
<blockquote><p>
  NONE模式:</p></blockquote>
<p>  逻辑备库可以以任意数据库用户进行任意数据库动作(查询/DML/DDL/DCL等).置于该模式下的逻辑备库,除了还需要运用SQL APPLY外,可读写,同一般的实例无区别.</p>
<blockquote><p>STANDBY模式:</p></blockquote>
<p>阻止除SYS用户外的所有用户对受SQL apply保护的所有对象的DDL和DDL操作.比如:通过SQL APPLY生成的表,普通用户不允许对其进行DML/DDL操作,但普通用户可以创建/操作主库上不存在的表(对象).</p>
<blockquote><p>ALL模式:</p></blockquote>
<p> 阻止除SYS用户外的所有数据库用户进行任意更改操作,数据库只读.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;同时逻辑备库还支持session级别的guard保护开关,有时候需要进行维护操作,可以临时将guard关闭掉以支持该session下的DDL/DML操作.</p>
<blockquote><p>SQL>alter session disable/enable guard;  </p></blockquote>
<p>etc,ect,ect&#8230;
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/logical_standby_performance.html" title="Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化">Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</a></li>
<li><a href="http://www.easyora.net/blog/maa_migrate_database_1.html" title="Oracle高可用迁移升级场景与实战(一)">Oracle高可用迁移升级场景与实战(一)</a></li>
<li><a href="http://www.easyora.net/blog/hugepages_on_linux.html" title="Hugepages On Linux">Hugepages On Linux</a></li>
<li><a href="http://www.easyora.net/blog/push_predicate_sql_tuning.html" title="一次改变PUSHED PREDICATE方式进行SQL调优的案例">一次改变PUSHED PREDICATE方式进行SQL调优的案例</a></li>
<li><a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html" title="记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit">记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></li>
<li><a href="http://www.easyora.net/blog/oracle_time_model.html" title="Oracle性能优化下的时间模型">Oracle性能优化下的时间模型</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/logical_standby_daily_maintenance.html&title=Logical+Standby%E6%97%A5%E5%B8%B8%E7%BB%B4%E6%8A%A4%E4%B8%8E%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%28%E4%B8%80%29%26%238212%3B%E6%97%A5%E5%B8%B8%E7%BB%B4%E6%8A%A4%E4%B8%8E%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4&tags=logical standby, maintenance, oracle, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/logical_standby_daily_maintenance.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>构建SQL Server高可用</title>
		<link>http://www.easyora.net/blog/sql_server_high_available.html</link>
		<comments>http://www.easyora.net/blog/sql_server_high_available.html#comments</comments>
		<pubDate>Tue, 08 Sep 2009 05:19:18 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[ha]]></category>

		<category><![CDATA[SQLserver]]></category>

		<category><![CDATA[镜像]]></category>

		<category><![CDATA[高可用]]></category>

		<guid isPermaLink="false">http://www.easyora.net/?p=390</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;高可用是当前IT信息系统架构中的热点方向，越多越多的系统追求更高的数据保护和更低的停机时间。作为支撑后台业务运行的数据库系统，不同的数据库厂家也提供了不同的高可用保护方案。结合自身的维护经验和认知，简单谈谈SQL Server在高可用方面的一些选型举措。
1.Failover Cluster(HA集群)
&#160;&#160;&#160;&#160;Failover Cluster是依赖于集群软件的一种故障转移方案，物理架构上需要2台以上的主机+一套共享存储。几乎所有的主流数据库都有相应成熟的集群HA解决方案，可以避免因单台服务器硬件以及操作系统环境的故障而带来的单点隐患。HA方案的核心在于，通过集群软件判断集群中资源的状态，故障时刻能够将服务资源自动切换。在Sql Server中，借助于Windows平台上的MSCS，SQL server也提供了一套failover解决方案。该方案成本较高，但有较高的故障转移能力和较低的停机时间，能提供非存储故障引起的故障保护。

2.Database mirroring(数据库镜像)
&#160;&#160;&#160;&#160;镜像技术是SQL Server 2005引入的一套软件层的高可用方案。直观的讲，它能够实现类似Oracle Standby的功能。SQL server 镜像提供database级别的保护，需要数据库运行在FULL恢复模式下，最小化的物理架构只需要2台主机即可。它通过同步或异步提交主库上的事务更改到备库，来实现主备库的数据同步，支持快速的平滑角色切换和故障切换。个人认为，镜像功能在企业高可用运用中是有极高的可用度。投入低，维护也相对简单。需要注意的是，由于SQL server架构上的特点，镜像功能并不能提供用户和作业等数据库角色和对象的转移，需要做一定的预处理。对于使用发布/订阅等复制的环境，也需要做一些单独的处理。
3.Log shipping(日志传送)
&#160;&#160;&#160;&#160;日志传送能够提供异步的数据保护功能，它通过主库日志的定时传送，然后在辅助库自动进行日志还原。因此，根据企业数据库的应用性质和负载程度，合理的规划日志备份和传送的时间跨度，如何在性能与数据保护中间寻找一个平衡点，是运用日志传送的一个重点所在。个人认为，日志传送已不适合做高可用的数据同步保护，但是可以利用日志传送主库和辅助库有时间差的这个特性，作为数据保护的一种补充，比如：用于快速的处理数据的误操作和基于时间点的不完全恢复。
4.发布与订阅
&#160;&#160;&#160;&#160;发布与订阅作为一种复制技术，严格说并不能算是一种高可用的解决方案。发布与订阅的强项在于多源数据的互交与共享，并支持一定的事务处理。但我们依然利用发布与订阅做一些数据的同步和保护。

记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit
[HA]利于heartbeat构建Oracle高可用

 ]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;高可用是当前IT信息系统架构中的热点方向，越多越多的系统追求更高的数据保护和更低的停机时间。作为支撑后台业务运行的数据库系统，不同的数据库厂家也提供了不同的高可用保护方案。结合自身的维护经验和认知，简单谈谈SQL Server在高可用方面的一些选型举措。</p>
<blockquote><p><b>1.Failover Cluster(HA集群)</b></p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;Failover Cluster是依赖于集群软件的一种故障转移方案，物理架构上需要2台以上的主机+一套共享存储。几乎所有的主流数据库都有相应成熟的集群HA解决方案，可以避免因单台服务器硬件以及操作系统环境的故障而带来的单点隐患。HA方案的核心在于，通过集群软件判断集群中资源的状态，故障时刻能够将服务资源自动切换。在Sql Server中，借助于Windows平台上的MSCS，SQL server也提供了一套failover解决方案。该方案成本较高，但有较高的故障转移能力和较低的停机时间，能提供非存储故障引起的故障保护。<br />
<span id="more-390"></span></p>
<blockquote><p><b>2.Database mirroring(数据库镜像)</b></p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;镜像技术是SQL Server 2005引入的一套软件层的高可用方案。直观的讲，它能够实现类似Oracle Standby的功能。SQL server 镜像提供database级别的保护，需要数据库运行在FULL恢复模式下，最小化的物理架构只需要2台主机即可。它通过同步或异步提交主库上的事务更改到备库，来实现主备库的数据同步，支持快速的平滑角色切换和故障切换。个人认为，镜像功能在企业高可用运用中是有极高的可用度。投入低，维护也相对简单。需要注意的是，由于SQL server架构上的特点，镜像功能并不能提供用户和作业等数据库角色和对象的转移，需要做一定的预处理。对于使用发布/订阅等复制的环境，也需要做一些单独的处理。</p>
<blockquote><p><b>3.Log shipping(日志传送)</b></p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;日志传送能够提供异步的数据保护功能，它通过主库日志的定时传送，然后在辅助库自动进行日志还原。因此，根据企业数据库的应用性质和负载程度，合理的规划日志备份和传送的时间跨度，如何在性能与数据保护中间寻找一个平衡点，是运用日志传送的一个重点所在。个人认为，日志传送已不适合做高可用的数据同步保护，但是可以利用日志传送主库和辅助库有时间差的这个特性，作为数据保护的一种补充，比如：用于快速的处理数据的误操作和基于时间点的不完全恢复。</p>
<blockquote><p><b>4.发布与订阅</b></p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp;发布与订阅作为一种复制技术，严格说并不能算是一种高可用的解决方案。发布与订阅的强项在于多源数据的互交与共享，并支持一定的事务处理。但我们依然利用发布与订阅做一些数据的同步和保护。</p>
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html" title="记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit">记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></li>
<li><a href="http://www.easyora.net/blog/heartbeat_oracle_ha.html" title="[HA]利于heartbeat构建Oracle高可用">[HA]利于heartbeat构建Oracle高可用</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/sql_server_high_available.html&title=%E6%9E%84%E5%BB%BASQL+Server%E9%AB%98%E5%8F%AF%E7%94%A8&tags=ha, SQLserver, 镜像, 高可用, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/sql_server_high_available.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>表空间搬移后引起的Dataguard不同步</title>
		<link>http://www.easyora.net/blog/transport_ts_cause_dg_async.html</link>
		<comments>http://www.easyora.net/blog/transport_ts_cause_dg_async.html#comments</comments>
		<pubDate>Thu, 20 Aug 2009 10:09:13 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[Dataguard]]></category>

		<category><![CDATA[transport tablespace]]></category>

		<guid isPermaLink="false">http://www.easyora.net/?p=370</guid>
		<description><![CDATA[关键词: 谨慎，周全的考虑. 
&#160;&#160;&#160;&#160; 昨晚系统调整，将一套CRM数据库的几个用户迁移到另外一台性能较强的服务器数据库上去。
源库： oracle 9208
目标库： oracle 9206
字符集相同. 操作系统都是linux

&#160;&#160;&#160;&#160; 这样的环境太好了，几乎一下子就想到了传输表空间，不用忍受exp/imp大量数据带来的痛苦的煎熬与等待。由于之前使用传输表空间做了一些迁移案例，所以驾轻就熟，也没多想，简单列了checklist，然后待停机时间开始做这次迁移。

&#160;&#160;&#160;&#160; 迁移过程比较顺利，出现的问题都在想象中(dblink和job无法用imp进新环境，对于dblink，使用dbms_metadata.get_ddl提取对应脚本/对于job,使用自己写的一个procedure从旧库提取生成).表空间传输从技术角度讲比较简单，但实施中一定要细心，对存储过程/序列/授权/JOB/DBLINK等一系列object要有一个合理的迁移方法和后续检查。
&#160;&#160;&#160;&#160; 善后，配置/重启应用，发现应用能正常登陆，于是收工回家。
&#160;&#160;&#160;&#160; 早上醒来，数据库巡检告警短信不期而至，表空间搬移到新库的standby报警，提示主备不同步。这下才想到昨晚马虎了一下，忘记了这是个DG环境。因为表空间搬移后，元信息被导入数据字典中，但数据文件是追加进来的，standby端通过apply归档日志只能得到表空间的相关信息，数据文件在备库端并不存在，所以无法继续做日志恢复。
&#160;&#160;&#160;&#160; 查看备库alert.log，确有这样的报警:
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
Thu Aug 19 02:59:02 2009
Errors in file /opt/oracle/admin/orc1/bdump/orc1_dbw0_25859.trc:
ORA-01157: cannot identify/lock data file 27 - see DBWR trace file
ORA-01110: data file 27: &#8216;/data/orc1/crm04.dbf&#8217;
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
&#160;&#160;&#160;&#160; 利用空闲时间，在primary端将搬移过来的表空间做了一次RMAN热备并生成一个standby controlfile，将备份传输到standby端，在备库上restore这个standby cf，然后restore tablespace，做recover后，DG再次同步，运行正常。
&#160;&#160;&#160;&#160; 看来做事还是马虎不得，还好这次只是个dg问题，即使有问题也不至于对生产产生大的影响。O(∩_∩)O

闲扯Dataguard的维护与运用
下午部署DG,顺手写了几个DG维护脚本
10G Dataguard影响日志传输服务参数
Data Guard 之表误操作恢复
Data [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>关键词</strong>: 谨慎，周全的考虑. </p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 昨晚系统调整，将一套CRM数据库的几个用户迁移到另外一台性能较强的服务器数据库上去。</p>
<blockquote><p><strong>源库</strong>： oracle 9208<br />
<strong>目标库</strong>： oracle 9206<br />
字符集相同. 操作系统都是linux
</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 这样的环境太好了，几乎一下子就想到了传输表空间，不用忍受exp/imp大量数据带来的痛苦的煎熬与等待。由于之前使用传输表空间做了一些迁移案例，所以驾轻就熟，也没多想，简单列了checklist，然后待停机时间开始做这次迁移。<br />
<span id="more-370"></span><br />
&nbsp;&nbsp;&nbsp;&nbsp; 迁移过程比较顺利，出现的问题都在想象中(dblink和job无法用imp进新环境，对于dblink，使用dbms_metadata.get_ddl提取对应脚本/对于job,使用自己写的一个procedure从旧库提取生成).表空间传输从技术角度讲比较简单，但实施中一定要细心，对存储过程/序列/授权/JOB/DBLINK等一系列object要有一个合理的迁移方法和后续检查。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 善后，配置/重启应用，发现应用能正常登陆，于是收工回家。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 早上醒来，数据库巡检告警短信不期而至，表空间搬移到新库的standby报警，提示主备不同步。这下才想到昨晚马虎了一下，忘记了这是个DG环境。因为表空间搬移后，元信息被导入数据字典中，但数据文件是追加进来的，standby端通过apply归档日志只能得到表空间的相关信息，数据文件在备库端并不存在，所以无法继续做日志恢复。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 查看备库alert.log，确有这样的报警:</p>
<blockquote><p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
Thu Aug 19 02:59:02 2009<br />
Errors in file /opt/oracle/admin/orc1/bdump/orc1_dbw0_25859.trc:<br />
ORA-01157: cannot identify/lock data file 27 - see DBWR trace file<br />
ORA-01110: data file 27: &#8216;/data/orc1/crm04.dbf&#8217;<br />
ORA-27037: unable to obtain file status<br />
Linux Error: 2: No such file or directory<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 利用空闲时间，在primary端将搬移过来的表空间做了一次RMAN热备并生成一个standby controlfile，将备份传输到standby端，在备库上restore这个standby cf，然后restore tablespace，做recover后，DG再次同步，运行正常。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 看来做事还是马虎不得，还好这次只是个dg问题，即使有问题也不至于对生产产生大的影响。O(∩_∩)O
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/dataguard_chitchat.html" title="闲扯Dataguard的维护与运用">闲扯Dataguard的维护与运用</a></li>
<li><a href="http://www.easyora.net/blog/dg_scripts_list.html" title="下午部署DG,顺手写了几个DG维护脚本">下午部署DG,顺手写了几个DG维护脚本</a></li>
<li><a href="http://www.easyora.net/blog/10g_dg_log_trans_parameter.html" title="10G Dataguard影响日志传输服务参数">10G Dataguard影响日志传输服务参数</a></li>
<li><a href="http://www.easyora.net/blog/data_guard_recover_table.html" title="Data Guard 之表误操作恢复">Data Guard 之表误操作恢复</a></li>
<li><a href="http://www.easyora.net/blog/data_guard_maximize_protection.html" title="Data Guard 之 MAXIMIZE PROTECTION">Data Guard 之 MAXIMIZE PROTECTION</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/transport_ts_cause_dg_async.html&title=%E8%A1%A8%E7%A9%BA%E9%97%B4%E6%90%AC%E7%A7%BB%E5%90%8E%E5%BC%95%E8%B5%B7%E7%9A%84Dataguard%E4%B8%8D%E5%90%8C%E6%AD%A5&tags=Dataguard, transport tablespace, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/transport_ts_cause_dg_async.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Oracle性能优化下的时间模型</title>
		<link>http://www.easyora.net/blog/oracle_time_model.html</link>
		<comments>http://www.easyora.net/blog/oracle_time_model.html#comments</comments>
		<pubDate>Mon, 10 Aug 2009 15:05:04 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[awr]]></category>

		<category><![CDATA[cpu time]]></category>

		<category><![CDATA[db time]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[响应时间]]></category>

		<category><![CDATA[时间模型]]></category>

		<guid isPermaLink="false">http://www.easyora.net/?p=361</guid>
		<description><![CDATA[oracle,时间模型,cpu time,db_time,response time]]></description>
			<content:encoded><![CDATA[<p>    oracle在10g版本明确引入time model,直观的作为一种量度指标反映给用户。时间作为一种性能上的量度和反映，一直贯穿在oracle的各个版本中，可以说时间模型并不是10g特有的东西。只不过，这种模型和概念在10g之前并没有明确和加以细化，而且，在oracle各个版本的升级和演化中，也在不断进行调整。<br />
    时间作为我们性能优化的一个重要参考，虽然有时候并不能给诊断带来直接的切入点，比如我们常常提到的cpu time、db time甚至是response time，这些指标孤立起来因为负载和系统环境的不同可能并没有横向比较的意义，却可以作为某个系统的状态数据和优化前后的成果参考，有很高的纵比意义。<br />
    结合awr/statspack，看一下数据库层面上对优化有指导意义的几个重要的时间概念。<br />
<span id="more-361"></span><br />
    以下是一个10g版本的awk采样片段：</p>
<table class="MsoNormalTable" style="width: 375pt; mso-cellspacing: 1.5pt;" border="1" cellpadding="0" width="500">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">DB Name</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">DB Id</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Instance</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Inst num</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Release</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">RAC</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Host</span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 4pt; mso-char-indent-count: .5;"><a name="OLE_LINK4"><span style="font-size: 8pt; color: #000000; font-family: Arial;">ODSDB</span></a></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">487655850</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">ODSDB</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">1</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">10.2.0.3.0</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">NO</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">ODSDB</span></p>
</td>
</tr>
</tbody>
</table>
<p style="margin: 0cm 0cm 0pt;"><strong></strong></p>
<table class="MsoNormalTable" style="width: 375pt; mso-cellspacing: 1.5pt;" border="1" cellpadding="0" width="500">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 3pt; padding-left: 3pt; background: white; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Snap Id</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Snap Time</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Sessions</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Cursors/Session</span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Begin Snap:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">13248</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="font-size: 8pt; color: #000000; font-family: Arial;">03-Jul-09 03:00:58</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">160</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">3.6</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">End Snap:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">13249</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="font-size: 8pt; color: #000000; font-family: Arial;">03-Jul-09 04:00:15</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">182</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">3.6</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Elapsed:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> </p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><a name="OLE_LINK2"><span style="font-size: 8pt; color: #000000; font-family: Arial;">59.28</span></a><span style="font-size: 8pt; color: #000000; font-family: Arial;"> (mins)</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> </p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> </p>
</td>
</tr>
<tr style="mso-yfti-irow: 4; mso-yfti-lastrow: yes;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">DB Time:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> </p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="font-size: 8pt; color: #000000; font-family: Arial;">513.50 (mins)</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> </p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> </p>
</td>
</tr>
</tbody>
</table>
<h3 style="background: white; margin: 0cm 0cm 0pt;"><a name="99999"></a><span style="font-size: 16pt; color: #336699; font-family: Arial;">Report Summary</span></h3>
<p><strong><span style="font-size: 10pt; color: #000000; font-family: Arial;">Cache Sizes </span></strong></p>
<table class="MsoNormalTable" style="width: 375pt; mso-cellspacing: 1.5pt;" border="1" cellpadding="0" width="500">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 3pt; padding-left: 3pt; background: white; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Begin</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">End</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: white; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: white; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Buffer Cache:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">9,488M</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">9,488M</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Std Block Size:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">32K</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Shared Pool Size:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">368M</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">368M</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Log Buffer:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">14,356K</span></p>
</td>
</tr>
</tbody>
</table>
<p><strong><span style="font-size: 10pt; color: #000000; font-family: Arial;">Load Profile</span></strong></p>
<table class="MsoNormalTable" style="width: 375pt; mso-cellspacing: 1.5pt;" border="1" cellpadding="0" width="500">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 3pt; padding-left: 3pt; background: white; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Per Second</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Per Transaction</span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Redo size:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">7,145,508.24</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">3,102,517.40</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Logical reads:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">23,515.06</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">10,210.03</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Block changes:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">11,143.67</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">4,838.48</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Physical reads:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">1,385.75</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">601.68</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 5;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Physical writes:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">761.58</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">330.67</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 6;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">User calls:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">278.86</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">121.08</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 7;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Parses:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">127.85</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">55.51</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 8;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Hard parses:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">2.76</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">1.20</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 9;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Sorts:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">16.79</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">7.29</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 10;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Logons:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">0.78</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">0.34</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 11;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Executes:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">258.80</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">112.37</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 12; mso-yfti-lastrow: yes;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Transactions:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><a name="OLE_LINK3"><span style="font-size: 8pt; color: #000000; font-family: Arial;">2.30</span></a></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> </p>
</td>
</tr>
</tbody>
</table>
<p style="margin: 0cm 0cm 0pt;"><strong></strong></p>
<table class="MsoNormalTable" style="width: 375pt; mso-cellspacing: 1.5pt;" border="1" cellpadding="0" width="500">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">% Blocks changed per Read:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">47.39</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Recursive Call %:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">86.38</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Rollback per transaction %:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">5.52</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Rows per Sort:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">905.77</span></p>
</td>
</tr>
</tbody>
</table>
<p><strong><span style="font-size: 10pt; color: #000000; font-family: Arial;">Instance Efficiency Percentages (Target 100%) </span></strong></p>
<table class="MsoNormalTable" style="width: 375pt; mso-cellspacing: 1.5pt;" border="1" cellpadding="0" width="500">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Buffer Nowait %:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">99.93</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Redo NoWait %:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">99.97</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Buffer Hit %:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">94.79</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">In-memory Sort %:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">100.00</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Library Hit %:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">97.14</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Soft Parse %:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">97.84</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Execute to Parse %:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">50.60</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Latch Hit %:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">99.77</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 4; mso-yfti-lastrow: yes;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Parse CPU to Parse Elapsd %:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">65.49</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">% Non-Parse CPU:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">98.44</span></p>
</td>
</tr>
</tbody>
</table>
<p><strong><span style="font-size: 10pt; color: #000000; font-family: Arial;">Shared Pool Statistics </span></strong></p>
<table class="MsoNormalTable" style="width: 375pt; mso-cellspacing: 1.5pt;" border="1" cellpadding="0" width="500">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 3pt; padding-left: 3pt; background: white; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Begin</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">End</span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Memory Usage %:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">62.79</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">59.10</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">% SQL with executions&gt;1:</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">76.21</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">80.59</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">% Memory for SQL w/exec&gt;1:</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">73.92</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">81.61</span></p>
</td>
</tr>
</tbody>
</table>
<p><strong><span style="font-size: 10pt; color: #000000; font-family: Arial;">Top 5 Timed Events </span></strong></p>
<table class="MsoNormalTable" style="width: 375pt; mso-cellspacing: 1.5pt;" border="1" cellpadding="0" width="500">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;">
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Event</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Waits</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Time(s)</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Avg Wait(ms)</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">% Total Call Time</span></strong></p>
</td>
<td style="padding-right: 3pt; padding-left: 3pt; background: #0066cc; padding-bottom: 1.5pt; padding-top: 0.75pt; border: #d4d0c8;">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><strong><span style="font-size: 8pt; color: #ffffff; font-family: Arial;">Wait Class</span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">db file sequential read</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">1,485,021</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">15,958</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">11</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">51.8</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">User I/O</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">CPU time</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"> </p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><a name="OLE_LINK1"><span style="font-size: 8pt; color: #000000; font-family: Arial;">7,157</span></a></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"> </p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">23.2</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"> </p>
</td>
</tr>
<tr style="mso-yfti-irow: 3;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">db file scattered read</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">175,351</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">3,423</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">20</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">11.1</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">User I/O</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 4;">
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">db file parallel read</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">20,612</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">1,505</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">73</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">4.9</span></p>
</td>
<td style="background: #ffffcc; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">User I/O</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes;">
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">Log archive I/O</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">27,111</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">1,116</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">41</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: right;" align="right"><span style="font-size: 8pt; color: #000000; font-family: Arial;">3.6</span></p>
</td>
<td style="background: white; border: #d4d0c8; padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 8pt; color: #000000; font-family: Arial;">System I/O</span></p>
</td>
</tr>
</tbody>
</table>
<blockquote><p>1.cpu time</p></blockquote>
<p>    Oracle引入CPU time是在9iR2版本，cpu time是衡量一个数据库负载的重要指标，可以将它看成是“CPU used by this session”的收集汇总。<br />
    9iR2之前，top 5部分称之为“<strong>Top 5 Wait Events</strong>”，其中cpu time并不包含在top 5内，该部分是纯粹的等待事件的汇总。而在9iR2之后，Top 5称之为“<strong>top 5 timed events</strong>”，从字面上也可以发现二者的区别。oracle将cpu time作为一个事件纳入top 5中，新的top 5包含cpu time和waited time 2部分，也就是db time。<br />
    我们可以通过cpu time与waited time的比值，来了解库的负载和运行情况，通常较高的比例代表较好的性能；而通过平均每颗CPU耗费的cpu time和Elapsed time的比例，可以评估整个系统在CPU方面是否存在瓶颈.</p>
<blockquote><p>2.db time</p></blockquote>
<p>    db time是指oracle花费在cpu上和等待事件上的时间,上面已经说过，db_time=cpu_time+waited time。<br />
    db time已经做为10g awr的一个采样指标，在9iR2上，我们同样可以通过top 5部分计算出来。在本例中，<br />
db time=15958【db file sequential read】/51.8【%】/60=513.5min。这与awr db time一栏的采样数值是一致的.</p>
<blockquote><p>3.response time</p></blockquote>
<p>    基于transaction或者user call的平均响应时间，可以看做是我们做性能优化效果的一个交付和证据.个人觉得没必要太注重这个数值。<br />
    response time=service time(cpu time) + waited time。放到我们前面的这个awr中，平均事务响应时间也就可以近似这样计算：<br />
    avg trans response time =15958【db file sequential read】/51.8【%】/60/59.28【Elapsed】/2.30【transactions per second】=3.77s<br />
    对于9iR2之前，需要通过”CPU used by this session“来计算cpu时间，通过“Top 5 Wait Events”计算等待事件时间，同样可以得出DB time和response time.</p>
<blockquote><p>4.elapsed time</p></blockquote>
<p>    elapsed time是指物理的流逝时间，这是一个采样的时间跨度基数。
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/maa_migrate_database_1.html" title="Oracle高可用迁移升级场景与实战(一)">Oracle高可用迁移升级场景与实战(一)</a></li>
<li><a href="http://www.easyora.net/blog/hugepages_on_linux.html" title="Hugepages On Linux">Hugepages On Linux</a></li>
<li><a href="http://www.easyora.net/blog/push_predicate_sql_tuning.html" title="一次改变PUSHED PREDICATE方式进行SQL调优的案例">一次改变PUSHED PREDICATE方式进行SQL调优的案例</a></li>
<li><a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html" title="记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit">记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_performance.html" title="Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化">Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_daily_maintenance.html" title="Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除">Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/oracle_time_model.html&title=Oracle%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E4%B8%8B%E7%9A%84%E6%97%B6%E9%97%B4%E6%A8%A1%E5%9E%8B&tags=awr, cpu time, db time, oracle, 响应时间, 时间模型, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/oracle_time_model.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>ASM下的存储更换迁移方案</title>
		<link>http://www.easyora.net/blog/asm_migrate.html</link>
		<comments>http://www.easyora.net/blog/asm_migrate.html#comments</comments>
		<pubDate>Tue, 04 Aug 2009 10:33:26 +0000</pubDate>
		<dc:creator>Kevin.yuan</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[asm]]></category>

		<category><![CDATA[MAA]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[更换存储]]></category>

		<guid isPermaLink="false">http://www.easyora.net/?p=337</guid>
		<description><![CDATA[&#160;&#160;&#160;ASM是10g版本后oracle大力推荐的一种数据文件存储方式,也是以后的一个重点方向.尽管现在asm在稳定性和一些操作上还存在不少问题，但已经有越来越多的企业把核心系统部署架构到上面.
&#160;&#160;&#160;本文重点不在于探讨ASM的优劣问题，爱青菜与爱白菜的人总有自己的理由支持自己的喜好.
&#160;&#160;&#160;朋友有套系统需要更换存储，数据库文件部署在asm上，需要尽量短的停机时间完成此次存储更换。由于不涉及异构的迁移转换，迁移起来也不难，无需借助三方的工具来完成这次高可用切换.当然，ASM下的一些特性也为我们做迁移提供了更多的选择方案.
&#160;&#160;&#160;针对该环境，列几种选择方案(以下操作都在新存储已挂载在主机上的情况下).

1.利用ASM的热添加和删除磁盘的方式完成存储迁移.
&#160;&#160;&#160;该方案充分发挥了asm管理磁盘数据的能力.
&#160;&#160;&#160;简要步骤:
         (1).划分raw或者asm disk，并检查或更改asm参数,例如asm_disktring，使得新存储的asm disk对ASM实例可识别
         (2).将新存储disk添加到现有的asm diskgroup中.
SQL&#62;alter diskgroup &#60; asm_group_name &#62; add disk '&#60; asm_disk_path &#62;';
         (3).删除旧存储对应的asm disk
SQL&#62;alter diskgroup &#60; asm_group_name &#62; drop disk &#60; asm_disk_name &#62;;
&#160;&#160;&#160;注意:以上2步，通过观察v$asm_operation视图来判断数据重组的进度，注意删除disk的时候，确保整个diskgroup有足够的空间。如果asm disk比较多，可以一个一个的分步执行减缓系统压力.有点可惜的是，在10g版本中，oracle不支持asm diskgroup冗余类型的转换, 也没有直接提供删除failgroup的方法，否则以添加镜像failgroup的方式来完成这次数据迁移，个人觉得有更强的可控性和更低的风险.
&#160;&#160;&#160;优缺点:
&#160;&#160;&#160;该方案可以实现迁移过程中系统的零停机，但整个操作进度不可控，数据重组过程中我们无法把握进度和风险，如果你对ASM产品足够信任，该方案不失一用
   [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;ASM是10g版本后oracle大力推荐的一种数据文件存储方式,也是以后的一个重点方向.尽管现在asm在稳定性和一些操作上还存在不少问题，但已经有越来越多的企业把核心系统部署架构到上面.<br />
&nbsp;&nbsp;&nbsp;本文重点不在于探讨ASM的优劣问题，爱青菜与爱白菜的人总有自己的理由支持自己的喜好.<br />
&nbsp;&nbsp;&nbsp;朋友有套系统需要更换存储，数据库文件部署在asm上，需要尽量短的停机时间完成此次存储更换。由于不涉及异构的迁移转换，迁移起来也不难，无需借助三方的工具来完成这次高可用切换.当然，ASM下的一些特性也为我们做迁移提供了更多的选择方案.<br />
&nbsp;&nbsp;&nbsp;针对该环境，列几种选择方案(以下操作都在新存储已挂载在主机上的情况下).<br />
<span id="more-337"></span></p>
<blockquote><p>1.利用ASM的热添加和删除磁盘的方式完成存储迁移.</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;该方案充分发挥了asm管理磁盘数据的能力.<br />
&nbsp;&nbsp;&nbsp;<b>简要步骤:</b><br />
         (1).划分raw或者asm disk，并检查或更改asm参数,例如asm_disktring，使得新存储的asm disk对ASM实例可识别<br />
         (2).将新存储disk添加到现有的asm diskgroup中.</p>
<div class="hl-surround"><div class="hl-main">SQL&gt;alter diskgroup &lt; asm_group_name &gt; add disk '&lt; asm_disk_path &gt;';</div></div>
<p>         (3).删除旧存储对应的asm disk</p>
<div class="hl-surround"><div class="hl-main">SQL&gt;alter diskgroup &lt; asm_group_name &gt; drop disk &lt; asm_disk_name &gt;;</div></div>
<p>&nbsp;&nbsp;&nbsp;注意:以上2步，通过观察v$asm_operation视图来判断数据重组的进度，注意删除disk的时候，确保整个diskgroup有足够的空间。如果asm disk比较多，可以一个一个的分步执行减缓系统压力.有点可惜的是，在10g版本中，oracle不支持asm diskgroup冗余类型的转换, 也没有直接提供删除failgroup的方法，否则以添加镜像failgroup的方式来完成这次数据迁移，个人觉得有更强的可控性和更低的风险.<br />
&nbsp;&nbsp;&nbsp;<b>优缺点:</b><br />
&nbsp;&nbsp;&nbsp;该方案可以实现迁移过程中系统的零停机，但整个操作进度不可控，数据重组过程中我们无法把握进度和风险，如果你对ASM产品足够信任，该方案不失一用</p>
<blockquote><p>   2.利用Switch copy的方式完成存储迁移</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;Switch copy并不是只能在ASM下才能用，但asm对数据文件的管理使得switch copy变得异常简单，免去了手工输入大量脚本的工作。</p>
<p>&nbsp;&nbsp;&nbsp;<b>简要步骤:</b><br />
      (1).在新存储上创建新的diskgroup</p>
<div class="hl-surround"><div class="hl-main">SQL&gt;create diskgroup &lt; asm_group_name &gt; external redundancy disk '&lt; asm_disk_path &gt;';</div></div>
<p>      (2).整库在线backup copy到新diskgroup上</p>
<div class="hl-surround"><div class="hl-main">RMAN&gt; backup as copy database format '+&lt; asm_group_name &gt;';</div></div>
<p>      (3).修改参数文件control_files,停db并启动到nomount状态,迁移controlfile到新diskgroup,mount做switch copy</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline">RMAN&gt;restore controlfile from '+&lt; old_asm_diskgroup_name &gt;/...';</li>
<li>RMAN&gt;alter database mount;</li>
<li>RMAN&gt; switch database to copy;</li>
<li>RMAN&gt; recover database;</li>
<li>RMAN&gt;alter database open;</li></ol></div>
<p>      (4).迁移temp和logfile<br />
&nbsp;&nbsp;&nbsp;在新diskgoup上创建新的temp表空间;添加新logfile到新diskgroup,删除旧的temp、logfile.<br />
    (5).其他善后<br />
&nbsp;&nbsp;&nbsp;修改db_create_file_dest、db_create_online_log_dest_*、archive_log_dest_*等参数/卸载旧diskgroup等<br />
&nbsp;&nbsp;&nbsp;注意:需要注意保留日志的完整性，从backup copy开始到switch copy这段时间的归档日志/在线日志不能丢失，recover需要这部分日志，recover的时间决定了整个迁移的停机时间.<br />
&nbsp;&nbsp;&nbsp;<b>优缺点:</b><br />
&nbsp;&nbsp;&nbsp;该方案风险可控，但需要评估从backup copy开始到switch copy这段时间的日志生成量，如果这段时间窗产生了大量的日志(有可能backup过程比较久而且db一直很忙,有很多事务和日志产生，或者backup之后并不是马上做switch，这期间也产生了很多日志)，那势必会增加迁移过程的停机时间.如果这段时间日志生成量有限，整个停机时间也会相当短.</p>
<blockquote><p>3.一般方法：</p></blockquote>
<p>&nbsp;&nbsp;&nbsp;利用物理datagurd等.<br />
&nbsp;&nbsp;&nbsp;该方案风险最小，失败最容易回退.操作上整个停机时间一般不会超过10分钟.
<ul class="related_post">
<li><a href="http://www.easyora.net/blog/maa_migrate_database_1.html" title="Oracle高可用迁移升级场景与实战(一)">Oracle高可用迁移升级场景与实战(一)</a></li>
<li><a href="http://www.easyora.net/blog/hugepages_on_linux.html" title="Hugepages On Linux">Hugepages On Linux</a></li>
<li><a href="http://www.easyora.net/blog/push_predicate_sql_tuning.html" title="一次改变PUSHED PREDICATE方式进行SQL调优的案例">一次改变PUSHED PREDICATE方式进行SQL调优的案例</a></li>
<li><a href="http://www.easyora.net/blog/9ir2_32bit_upgrade_10gr2_64bit.html" title="记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit">记一次高可用迁移方案的规划&#8212; Oracle 9i 32 bit升级至Oracle 10g 64 bit</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_performance.html" title="Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化">Logical Standby日常维护与性能优化(二)&#8212;性能诊断与优化</a></li>
<li><a href="http://www.easyora.net/blog/logical_standby_daily_maintenance.html" title="Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除">Logical Standby日常维护与性能优化(一)&#8212;日常维护与故障排除</a></li>
</ul>
 <p><a href="http://fairyfish.net/bookmark/?url=http://www.easyora.net/blog/asm_migrate.html&title=+ASM%E4%B8%8B%E7%9A%84%E5%AD%98%E5%82%A8%E6%9B%B4%E6%8D%A2%E8%BF%81%E7%A7%BB%E6%96%B9%E6%A1%88&tags=asm, MAA, oracle, 更换存储, "><img src="/bookmark.gif" alt="bookmark" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.easyora.net/blog/asm_migrate.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
