CDC senaryoları için daha önceden kurgulanmış bir tablo yapınız yoksa işiniz açıkçası işiniz biraz zor.
CDC için kullanabileceğimiz tabloların özellikleri:
Yığın Tablolar
Bu tablolar yalnızca artan bir yığın (heap) kümesini üst üste bindirerek data biriktirir. (Örn. Log tabloları)
(INDEX ORGANIZED table lar için farklı bir yöntem kullanılır.)
http://www.dba-oracle.com/t_index_organized_tables.htm
Unique numeric bir sequence ile data bulunduranlar.
Veya NOROWDEPENDENCIES option ile create edilmiş tablolar:
Pseudocolumn olarak ORA_ROWSCN (System Change Number) kullanılabilir. Eğer tablo NOROWDEPENDENCIES option ile create edilmiş ise SCN_TO_TIMESTAMP(ORA_ROWSCN) fonksiyonu ile ilgili satırın en son güncellenmiş hali kullanılabilir. Bu sayede chane data capture için bu alandan istifade edip, source - target arasındaki deltayı bulabilir, heap için sıradaki dataset i capture edebiliriz.
Yığın + Güncellenen Tablolar
Bu tip tablolarda bir yandan yığın birikirken bir yandan da daha önce eklenmiş satırlar güncellenebilir.
Unique numeric bir sequence ile data bulunduranlar.
Ve Amend_Date field'ı bulanan Veya NOROWDEPENDENCIES option ile create edilmiş tablolar:
Pseudocolumn olarak ORA_ROWSCN (System Change Number) kullanılabilir. Eğer tablo NOROWDEPENDENCIES option ile create edilmiş ise SCN_TO_TIMESTAMP(ORA_ROWSCN) fonksiyonu ile ilgili rowun en son update edilmiş hale kullanılabilir. Bu sayede chane data capture için bu alandan istifade edip, iki DB arasındaki deltayı bulabilir, heap + updated data için sıradaki dataset i capture edebiliriz..
NOROWDEPENDENCIES option'ı nı sıradaki yaratılacak tablolar için AMEND_DATE , LAST_UPDATE vb. alanlarının yerine geliştiricinin dikkatine sunuyorum.
İlerideki modifikasyonlar için dikkat edilmesi gerekenler:
- CDC için asla ROWID pseudocolumn kullanmayınız.
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:53140678334596
- Bu geliştirme için bir sonraki aşamanın ORACLE log scanning olduğunu unutmayınız.
http://en.wikipedia.org/wiki/Change_data_capture#Log_scanners_on_databases
- Capturing için triggering yöntemini kullanmanızı önermem (istisnalar kuralı burada da geçerli elbette). Bu OLTP sisteminiz ve sizin aranızdaki bir challenge...
Yığın Tablolar
Bu tablolar yalnızca artan bir yığın (heap) kümesini üst üste bindirerek data biriktirir. (Örn. Log tabloları)
(INDEX ORGANIZED table lar için farklı bir yöntem kullanılır.)
http://www.dba-oracle.com/t_index_organized_tables.htm
Unique numeric bir sequence ile data bulunduranlar.
Veya NOROWDEPENDENCIES option ile create edilmiş tablolar:
Pseudocolumn olarak ORA_ROWSCN (System Change Number) kullanılabilir. Eğer tablo NOROWDEPENDENCIES option ile create edilmiş ise SCN_TO_TIMESTAMP(ORA_ROWSCN) fonksiyonu ile ilgili satırın en son güncellenmiş hali kullanılabilir. Bu sayede chane data capture için bu alandan istifade edip, source - target arasındaki deltayı bulabilir, heap için sıradaki dataset i capture edebiliriz.
Yığın + Güncellenen Tablolar
Bu tip tablolarda bir yandan yığın birikirken bir yandan da daha önce eklenmiş satırlar güncellenebilir.
Unique numeric bir sequence ile data bulunduranlar.
Ve Amend_Date field'ı bulanan Veya NOROWDEPENDENCIES option ile create edilmiş tablolar:
Pseudocolumn olarak ORA_ROWSCN (System Change Number) kullanılabilir. Eğer tablo NOROWDEPENDENCIES option ile create edilmiş ise SCN_TO_TIMESTAMP(ORA_ROWSCN) fonksiyonu ile ilgili rowun en son update edilmiş hale kullanılabilir. Bu sayede chane data capture için bu alandan istifade edip, iki DB arasındaki deltayı bulabilir, heap + updated data için sıradaki dataset i capture edebiliriz..
NOROWDEPENDENCIES option'ı nı sıradaki yaratılacak tablolar için AMEND_DATE , LAST_UPDATE vb. alanlarının yerine geliştiricinin dikkatine sunuyorum.
İlerideki modifikasyonlar için dikkat edilmesi gerekenler:
- CDC için asla ROWID pseudocolumn kullanmayınız.
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:53140678334596
- Bu geliştirme için bir sonraki aşamanın ORACLE log scanning olduğunu unutmayınız.
http://en.wikipedia.org/wiki/Change_data_capture#Log_scanners_on_databases
- Capturing için triggering yöntemini kullanmanızı önermem (istisnalar kuralı burada da geçerli elbette). Bu OLTP sisteminiz ve sizin aranızdaki bir challenge...
Hiç yorum yok:
Yorum Gönder