Oracle hataları

ORA-01031: insufficient privileges

Yetersiz yetki

ORA-01031: insufficient privileges

Kullanıcınızda ifade için gereken bir sistem ya da nesne yetkisi yok — örneğin CREATE TABLE, ALTER SYSTEM ya da bir paket üzerinde EXECUTE. Definer’s rights PL/SQL içinde roller üzerinden gelen yetkiler sayılmaz.

Ne anlama gelir?

Oracle her ifade için yetkileri denetler. ORA-01031, ifadenin anlaşıldığı ve nesnenin bulunduğu, ama kullanıcınızın bu işlemi yapmaya izni olmadığı anlamına gelir. Worksheet’te çalışan bir kodun saklı prosedür içinde patlamasının en yaygın nedenidir; çünkü definer’s rights birimlerde roller devre dışıdır.

Yaygın nedenler

Nasıl çözülür?

  1. Sahip olduklarınızı listeleyin: SESSION_PRIVS (sistem yetkileri) ve SESSION_ROLES.
  2. Nesne sahibinden ya da bir DBA’dan tam olarak eksik yetkiyi isteyin.
  3. Saklı prosedürlerde yetkiyi doğrudan prosedür sahibine verin ya da uygunsa invoker’s rights (AUTHID CURRENT_USER) kullanın.
  4. Tek bir hatayı gidermek için geniş kapsamlı ANY yetkileri vermekten kaçının.

Örnek

Şu anda neleri yapabiliyorum?

SELECT privilege FROM session_privs ORDER BY privilege;
SELECT role      FROM session_roles ORDER BY role;

Prosedür sahibine doğrudan yetki:

GRANT CREATE TABLE TO app_owner;
GRANT UPDATE ON hr.employees TO app_owner;

SQLlightspeed’de

Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.

İlgili hatalar

ORA-00942ORA-01017ORA-00054 Tüm Oracle hataları →

Oracle dokümantasyonu: ORA-01031. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.