|
dx6340老兄,我不是在宣传产品,我再澄清一次。如果有人对我现在做的产品感兴趣,可以给我写邮件,但是我们只谈技术,不谈市场,但是在itpub上或者任何其它场合,我不会说我的产品是如何的好,虽然我的和shareplex做的对比测试很多。他们各有各的优缺点。
shareplex确实不使用direct path装载,这个我也说过“其实shareplex也曾经使用过direct path的装载方式”,我是说曾经,从研发上讲。你可以用shareplex或者oracle的data guard等做实验,当大数据量的时候,你可以看看他是否能分析过来和装载过来,延迟时间多少。一秒钟能支持的update有多少,insert有多少,如果做ddl是否需要先停止复制。这些还只是很基本的处理。logminer尚且对日志的分析很慢(不过可以用多进程来弥补,如果你有很多的系统资源)。
wbo兄弟的“Oracle 9i把一台服务器上的表空间复制到另一台服务器后数据库不用能。”,我的理解是,如果你使用基于存储级的复制产品,你同步的应该是整个设置的卷或者卷组,他没有什么oracle的逻辑结构复制方法吧,要么就是把这个表空间创建在一个卷组上,然后设定复制这个卷组。如果你硬是要复制一个表空间过去,我觉得你应该先通过oracle的TRANSPORT_TABLESPACE来,但是好像很没有必要。使用存储级的复制不能实时打开,打开必须断开。
对于基于复制中的特殊方式处理,主要有这些:
1.采用何种装载方式
2.如何准确快速执行delete和update,因为这两个操作需要rowid,有人采用在数据库本身创建很多的表来维护rowid。
3.对chain row的处理
4.对各种ddl的处理(truncate,create,drop,alter)
5.对于未提交的事务的处理
等等,因为我确实还没有来总结这些资料,这里先列各提纲,我一个一个来总结.
1.装载方式:
在oracle中装载数据库不外乎两种方式:direct path和conventinal path装载,其中类似direct path装载就是例如sqlload等工具使用的装载方式,因为它省去了sql语句的编译\绑定(kk/kx),直接转换成绑定后的格式对extent进行操作.而conventinal path装载方式确实普通的装载方式,即类似于标准的sql语句的装载.后者比前者在同等条件下要慢5倍.当然两种方式的装载速度还和表本身的结构和大小有关.我测试的速度最大有12倍的差距.
在装载上,你还要考虑更多内容,你不能单单调用oracle sqlloader,因为在oracle中有很多的oracle特殊处理的东西,例如:qmi,qmd.oracle在这里对于这些操作有在redo中有特殊的标志,如果你采用create table as select来创建表,你会觉得它比现创建然后用sql语句插入要快的多,在日志中他也只有很少的记录.因此,在处理这些的时候,你要采用特殊的算法,所以调用oracle的现成工具是不理想的,曾经在oracle7之前oracle并没有将upi (好像是这个名字)封掉,但是在oracle8i后,oracle不再开放该接口,因此很多的程序员对于这个层面了解很少.当然现在你很难找到.oci只是封装后更高级的接口而已.
因此装载程序的设计,对于基于oracle精确分析方式的复制有很大的决定作用,这里面还有更多的处理,我也不能一一列出了. |
|