ORA-12899: value too large for column Hatası ve Çözümü

Veri Ambarında (DWH) bazen kaynak tablolardaki sütunların hassasiyeti (precision, duyarlık) artıyor. Örneğin VARCHAR2(20 BYTE)’den, VARCHAR2(30 BYTE)’ye çıkabiliyor. Bu durumda kaynaktan alınan data veri ambarındaki tablolara yazılmak istendiğinde ORA-12899 hatası ile karşılaşılıyor. Bu durumu simüle ettiğim kod aşağıdaki gibidir:

CREATE TABLE tbl_test AS
SELECT CAST(NULL AS VARCHAR2(20 BYTE)) AS clmn
  FROM sys.dual;

INSERT INTO tbl_test
SELECT '30 karakterlik string ifademiz' AS clmn
  FROM sys.dual; 
--ORA-12899: value too large for column "TBL_TEST"."CLMN" (actual: 30, maximum: 20)

2 farklı çözüm yöntemi var. 1 tanesi substr ile insert edilecek tablodaki sütunun maksimum değeri kadar değer alınıp insert edilebilir. Numerik için bu yöntemi önermiyorum. 2. yöntemi yani hedef tablonun ilgili sütununu modify etme yöntemi uygulanmalı.

Continue reading

Exchange Partition Hatası ORA-14097 ve Çözümü

Veri Ambarı (DWH) işlerinde son tablolar genelde Exchange Partition ile dolar. Eğer kod Exchange Partition adımında hata alıyorsa, genelde sorun data’dadır veya metadata’da farklılık vardır. Data kaynaklı sorunu daha önce BURADA paylaşmıştım. Bu başlıkta Metadata kaynaklı sorunu paylaşacağım. Hatta burada birden fazla olasılık var. Ben önce sütun veri tipi kaynaklı olanı, sonra drop column kaynaklı olan durumu paylaşacağım.

Öncelikle hatayı simüle etmek için kendim BU LINK‘teki kodları çalıştırıp, tbl_customer_hist ve tbl_customer_hist_exc tablolarını dummy data ile ürettim. Exchange olacak ara tabloya Sütun Tabloyu elimden geldiğince kapsamlı yaptım çünkü farklı konuları aktarmak için de bu tabloları kullanacağım.

BU LINK‘teki test kodlarını sırayla çalıştırınca en alttaki kodda şu hata ile karşılaşacaksınız:

ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITION
Continue reading

Exchange Partition Hatası ORA-14099 ve Çözümü

Veri Ambarı (DWH) işlerinde son tablolar genelde Exchange Partition ile dolar. Eğer kod Exchange Partition adımında hata alıyorsa, genelde sorun data’dadır veya metadata’da farklılık vardır. Bu başlık altında Data kaynaklı sorunu paylaşacağım. Metadata kaynaklı sorun için başka başlık açmayı planlıyorum.

Öncelikle hatayı simüle etmek için kendim BU LINK‘teki kodları çalıştırıp, tbl_customer_hist ve tbl_customer_hist_exc tablolarını dummy data ile ürettim. Tabloyu elimden geldiğince kapsamlı yaptım çünkü farklı konuları aktarmak için de bu tabloları kullanacağım.

BU LINK‘teki test kodlarını sırayla çalıştırınca en alttaki kodda şu hata ile karşılaşacaksınız:

ORA-14099: all rows in table do not qualify for specified partition
Continue reading