Yoğun bir çalışma dönemi geçirdik. Yaptığımız çalışmanın en önemli adımlarından biri eski veri yapısının yeni kurduğumuz altyapıya dönüşümüydü. Oracle da bulunan 200 milyon kadar kaydı (yaklaşık 4 gb veri), birkaç katına çıkaracak bir başka yapıya döünüştürme, yeni tablolara değıtma işini 3 saatten az bir sürede yaptık, sonuçta 30 gb yeni veri ortaya çıktı. Bu çalışmadan alınabilecek dersleri paylaşmaya aşağıda paylaşmaya çalıştım. En önemli sorun performans idi, yüksek hız için baz önemli noktaları aşağıda bulacaksınız..
Veri Dönüşümü ve Proje Geçişinden
Yazilim Için Notlar
/*Veri aktarımı taşımaları için*/
--SP listesi ve içeriğini almak için
select
dbms_metadata.get_ddl('PROCEDURE', 'KRD_INS_BELGE_SP') || '/'||
dbms_metadata.get_ddl('PROCEDURE', 'KRD_INS_ADRES_SP') || '/'||
dbms_metadata.get_ddl('PROCEDURE', 'KRD_INS_AKIM_SP') || '/'
from dual;
--FN listesi ve içeriğini almak için
select
dbms_metadata.get_ddl('FUNCTION', 'KRD_AKTIFNO_UDF') || '/'||
dbms_metadata.get_ddl('FUNCTION', 'KRD_KODBUL_UDF') || '/'||
dbms_metadata.get_ddl('FUNCTION', 'KRD_DOVIZ_UDF') || '/'||
dbms_metadata.get_ddl('FUNCTION', 'KRD_ONAYCIBUL_UDF') || '/'
from dual;
/*Hızlı veri aktarımı için*/
--1. adım : Select yapılan tablolara indexleri oluştur
--2. adım : Select yapılmayan tablolardan indexleri ve constraintleri kaldır
--3. Adım : Aktarım yapılacak boş tabloların tablo istatistiklerini tahmini kayıt sayısına göre oluştur
--3. Adım : Tablolara INITRANS parametrelerini arttırarak eşzamalı oluşan insert,update ve delete sorgularının seri çalışmak üzere sıralanıp gecikmesini engelle.
/*Veri aktarımı sonrası*/
--1. adım : Select yapılmayan tablolardan kaldırılan indexleri ve constraintleri yeniden tanımla
--1. adım : Tablo istatistiklerinin oracle tarafından oluşturulmasını sağla
Ek Notlar:
1. Unique auto increment id kullanılan tablolarda, Sequence’e tanımlanan “cache size” büyük olursa insert performansı artar, ancak üretilen id’nin artan sıralı olması gerekiyorsa bu durum kayıtların yanlış sırada oluşmasına neden olabilir.
2. Indexleri oluşturma zamanını “parallel” parametresi ile azaltabiliriz: create unique index KRD_LIMIT_IDX01 on KRD_LIMIT (ID) parallel 20;