li
  当前位置:主页 > 备份恢复 > 文章内容
li
流同步机制优化(二)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:6  

流同步机制建立已经快要一年半了,原本执行五、六个小时的过程,目前执行时间已经需要十多个小时左右。如果不对其进行优化,将会影响正常业务。

流同步机制优化(一):http://yangtingkun.itpub.net/post/468/309034


上一篇文章以前确定了几个优化方向,其中方法三的风险相对较小,也比较易于执行。

但是事情并非如此简单,通过查询METALINK发现,清除信息还要面临两个问题:

首先是一个bug:Bug 3953131 - Altering first_scn of Streams capture results in ORA-30036 / ORA-1562。

本来问题已经够复杂的了,就不希望bug再来捣乱,不过根据bug的描述似乎是由于清除的数据量太大造成的。那么分多次执行,每次清除部分数据,应该可以避免这个问题。

第二个问题是,似乎直接使用DBMS_CAPTURE_ADM包的ALTER_CAPTURE过程对9i不适应。在METALINK文章里面谈到,这个方法可以在10g中使用,而在9i中必须使用Oracle提供的另外一个包。这个包单独提供下载,而且是加密的。在SYS用户下执行这个包,给人一种很没有底的感觉。虽然这个包是METALINK提供的。

观察脚本中的注释信息,发现如果需要提高过程的执行速度,那么仍然需要在LOGMNR_RESTART_CKPT$表中增加索引。

既然横竖要添加索引,不如先按照方案二尝试优化SQL。如果优化效果明显,就可以避免执行那个加密的包了。

SQL> CONN SYSTEM
Enter password:
Connected.
SQL> CREATE INDEX IND_LOGM_LOG ON LOGMNR_LOG$(FIRST_CHANGE#, NEXT_CHANGE#);

Index created.

SQL> CREATE INDEX IND_LOGM_REST_CKPT_CKPTVALID ON LOGMNR_RESTART_CKPT$(CKPT_SCN, VALID);

Index created.

SQL> CONN STRMADMIN
Enter password:
Connected.
SQL> EXPLAIN PLAN FOR
2 SELECT DISTINCT (A.CKPT_SCN)
3 FROM SYSTEM.LOGMNR_RESTART_CKPT$ A
4 WHERE A.CKPT_SCN <= :1
5 AND A.VALID = 1
6 AND EXISTS
7 (
8 SELECT *
9 FROM SYSTEM.LOGMNR_LOG$ L
10 WHERE A.CKPT_SCN BETWEEN L.FIRST_CHANGE# AND L.NEXT_CHANGE#
11 )
12 ORDER BY A.CKPT_SCN DESC
13 ;

Explained.

SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());

PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------

------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes| Cost |
------------------------------------------------------------------------------
| 0| SELECT STATEMENT | | | | |
IXDBA.NET技术社区
| 1| SORT UNIQUE | | | | |
| 2| NESTED LOOPS | | | | |
| 3| INDEX RANGE SCAN| IND_LOGM_REST_CKPT_CKPTVALID | | | |
| 4| INDEX RANGE SCAN| IND_LOGM_LOG | | | |
-------------------------------------------------------------------------------

Note: rule based optimization, PLAN_TABLE' is old version

12 rows selected.

至此优化目的已经到达,再次运行时执行时间已经不到半个小时。




  上一篇: 流配置异常(ORA-01403)的完整解决...   下一篇: 流配置异常(ORA-01403)的完整解决...
li
 §相关评论  
 热点文章

·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 编辑推荐
·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 相关篇章
·流配置异常(ORA-01403)的完整解决...
·Oracle9i流环境清除(一)
·流故障解决(数据类型冲突)
·流同步机制优化(一)
·ORA-24170错误
·Oracle9i流环境清除(二)
·Oracle9i流环境清除(三)
·RMAN备份恢复——RAC环境数据库的...
·RMAN备份恢复——RAC环境数据库的...
·oracle检查点系列:checkpoint小...
·流配置异常(ORA-01403)的完整解决...
·流配置异常(ORA-01403)的完整解决...
·流配置异常(ORA-01403)的完整解决...
·流配置异常(ORA-01403)的完整解决...
·ORA-600(kolaslGetLength-1)错误
·srvctl添加数据库信息报错
·利用TAR恢复ORACLE RAC环境的软件...
·RAC环境一个实例删除已被另一个实...
·RAC环境中修改系统时间可能导致S...
·RAC环境的恢复策略
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接