ORA-04061: existing state of package/procedure has been invalidated
OracleNe demek?
Çağrılan bir PL/SQL nesnesinin (paket, prosedür, fonksiyon) mevcut durumu (state), bağımlı olduğu bir nesne değiştiği için geçersiz kılındı. ORA-04068'in eşlik ettiği durum bilgisi kaybının bir varyantıdır; oturumun tuttuğu paket durumu artık geçerli değildir.
Neden olur?
Bir oturum bir paketi kullanırken, o pakete ya da bağımlılıklarına (tablo yapısı değişimi, yeniden derleme, grant değişikliği) DDL uygulandı. Böylece oturumdaki mevcut paket durumu geçersizleşti. Sık deploy yapılan ortamlarda uygulama çalışırken şema değişikliği yapılınca görülür.
Nasıl çözülür?
Genellikle aynı çağrı ikinci kez yeniden denendiğinde (durum sıfırlandığı için) başarılı olur; uygulama tarafında bu hatayı yakalayıp güvenli biçimde yeniden deneyin. Şema değişikliklerini uygulama trafiği düşükken/bakım penceresinde yapın. Geçersiz nesneleri toplu derleyin: EXEC DBMS_UTILITY.COMPILE_SCHEMA('SEMA'); Paket durumunu (global değişkenler) minimize eden tasarımlar bu etkiyi azaltır.
Aynı motorda diğer kayıtlar
- ORA-19804cannot reclaim N bytes disk space from M bytes limit
- ORA-00494enqueue held for too long by 'inst N, osid M'
- ORA-04021timeout occurred while waiting to lock object
- ORA-01466unable to read data - table definition has changed
- ORA-08176consistent read failure; rollback data not available
- ORA-00020maximum number of processes (N) exceeded
- ORA-01113file N needs media recovery