goldengate對oracle臨時表的同步

msdnchina發表於2011-11-10

先補充一下oracle臨時表的知識:

建立oracle臨時表,可以有兩種型別的臨時表:會話級的臨時表和事務級的臨時表。

1)會話級的臨時表因為這這個臨時表中的資料和你的當前會話有關係,當你當前session不退出的情況下,臨時表中的資料就還存在,而當你退出當前session的時候,臨時表中的資料就全部沒有了,當然這個時候你如果以另外一個session登陸的時候是看不到另外一個session中插入到臨時表中的資料的。即兩個不同的session所插入的資料是互不相干的。當某一個session退出之後臨時表中的資料就被截斷(truncate table,即資料清空)了。會話級的臨時表建立方法:
CREATE GLOBAL TEMPORARY TABLE
TABLE_NAME(COL1 TYPE1,COL2 TYPE2...)
ON COMMIT PRESERVE ROWS;

2)事務級臨時表是指該臨時表與事務相關,當進行事務提交或者事務回滾的時候,臨時表中的資料將自行被截斷,其他的內容和會話級的臨時表的一致(包括退出session的時候,事務級的臨時表也會被自動截斷)。事務級臨時表的建立方法:

CREATE GLOBAL TEMPORARY TABLE
TABLE_NAME(COL1 TYPE1,COL2 TYPE2...)
ON COMMIT DELETE ROWS;

3)兩種不通型別的臨時表的區別:
語法上,會話級臨時表採用“ON COMMIT PRESERVE ROWS”而事務級則採用“ON COMMIT DELETE ROWS”。
用法上,會話級別只有當會話結束臨時表中的資料才會被截斷,而且事務級臨時表則不管是commit、rollback或者是會話結束,臨時表中的資料都將被截斷。

經過我測試,goldengate 軟體是不捕捉臨時表的ddl和dml的,即使按照一般goldengate 配置ddl的方法配置好了ddl。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/161195/viewspace-1056242/,如需轉載,請註明出處,否則將追究法律責任。

相關文章