15 Mart 2023

Oracle Database ORA-14402 Updating Partition Key Column Would Cause A Partition Change Hatası ve Çözümü

Oracle Database ORA-14402 Updating Partition Key Column Would Cause A Partition Change

Oracle Database sistemlerinde Data manipüle işlemleri yaparken özellikle Test Database ortamlarında karşınıza Update ve Edit işlemi yaparken ORA-14402 Updating Partition Key Column Would Cause A Partition Change hatası ile karşılaşabilirsiniz. Bu hata genelde ilgili tabloda Grant yetkinizin olmadığını göstermektedir. Tam yetki her zaman Database Admin’leri tarafında olup testçi ve analizciler için bu yetkiler her tablo ve şemalarda olmayabilir. En temel çözüm ise Database üzerinde işlem yaptığınız kullanıcı (User) için DML yetkisi yani Grant vermekten geçer. Bazı durumlarda Grant yetkisini tablo için alsanız bile bir kolonu Update ederken yine Partition hatası alabilirsiniz. Bunun ise iki çözümü vardır. İlk olanı TOAD üzerinden Data sekmesi yanındaki Partitions kısmına gelip o tabloya bağlı diğer kolonları DISABLED konumdan ENABLED konuma getirmeniz gerekmektedir. Tabii bir testçi olarak buna yetkiniz olmayabilir bunun için üzerinde çalışma yaptığınız Database Admin yetkilisi ile görüşmeniz gerekebilir. Eğer Data manipüle etmek istediğiniz kolonun başka bir tablonun kolonu ile bağlantısı yoksa bu Partition hatasını almazsınız ve direkt Update işlemi yapabilirsiniz. İkinci çözüm olarak ise bunu daha çok testçi arkadaşlar tercih edecektir; ilgili tablonun Insert SQL cümleciğini komple alıp sonra tablodan o Data blokunu komple silmeniz (DELETE) etmenizdir. Sonrasında Insert SQL kodu üzerinde manipüle edeceğiniz yeri değiştirip tekrardan SQL Script’i TOAD üzerinden çalıştırmanız yeterli olacaktır. Bu sayede Partition hatası almaz ve direkt kendi işinizi kendiniz halletmiş olursunuz.

Aşağıda GRANT yetkisi alabileceğiniz DML (Data Manipulation Language) yani tablo üzerinde  DELETE, INSERT, SELECT, UPDATE yetkilerine sahip SQL cümleciğini paylaşıyorum. GRANT verdikten sonra Commit etmenize gerek yoktur. Özetle GRANT cümlelerinin altına COMMIT; ifadesi eklenmez.

GRANT DELETE, INSERT, SELECT, UPDATE ON SCHEMA_NAME.TABLE_NAME TO ROLE_USER;

Yukarıdaki SQL cümlesinde SCHEMA_NAME Şemasındaki TABLE_NAME tablosuna ROLE_USER kullanıcısına DML yetkisi ver demektir. Bu şekilde yetki alabilir ve Data manipülasyon yapabilirsiniz. Bu kısa ve öz bilgi umarım testçi arkadaşların işlerine yarayacaktır. Bazı durumlarda tamamen sıfırdan Data üretmek maliyetli olduğu için veya uzun sürebildiği için Test Database içerisinde bulunan var olan eski bir Data üzerine  manipülasyon işlemi daha pratik olabilir. Bu sayede Test Data işlemlerinizi rahatlıkla yapabilirsiniz.

Burak AVCI

Hiç yorum yok:

Yorum Gönder

Makaleye Yorum ve Sorularınızı Bırakabilirsiniz.