首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

大对象blob门类的拷贝——分析和记录oracle触发器

2012-12-26 
大对象blob类型的拷贝——分析和记录oracle触发器有了这个流程图和上面的编号,会家子应该可以看明白些了,但

大对象blob类型的拷贝——分析和记录oracle触发器

有了这个流程图和上面的编号,会家子应该可以看明白些了,但我想大部分人还是都不明白。这就要联系到java中流的实现了,这里原理与之极其相似,只是那里的API很多,只需寥寥数行代码即可完成,这里却要什么都得自己来写。比如源的总长度,每次读写的长度,读写的次数,偏移量,最后一次读写的长度。都要考虑到位才行,否则会出现无法读写,读写不完整这些异常。

这里的核心点有以下若干个:

1,第一步,先给目标字段插入一个空数据,empty_blob(),这里无论是insert还是update都要如此。

2,第二步,使用for update锁住该字段,以免其他操作介入,导致出错,这是一个同步机制。

3,第三步,dbms_lob.open(directions, dbms_lob.lob_readwrite);相当于使用directions建立一个读写流。

4,将数据分段读出DBMS_LOB.read()和写入dbms_lob.writeappend()注意两个函数的参数配置。

5,偏移量的手动设置,在进行了循环读写之后,还有最后一段数据没有读写,这时候需要谨慎对待,不要把偏移量弄错。

6,每次读写的最大长度,经过反复试验,似乎不能超过2000,但也不是2000以下都可以,这一点笔者暂时还无法理解,本文中采用1000,效率比较低,如果字段较长,会耽误数秒钟。

该方式必定是最笨一种,只是要出结果,急于求成,就暂时采用了,希望各位网友多多赐教,给予知道。

热点排行