Prosedürler sahibi olan kullanıcının hakları ile çalışır.
Bazı limitasyonlar gereği veya başka bir amaçla genel olarak aşağıdaki bir sp kullanılabilir.
CREATE OR REPLACE PROCEDURE app_user.vty_run_command (cmd varchar2) IS BEGIN EXECUTE IMMEDIATE cmd; END; /
Bu durumda bu spyi çağıran herhangi bir user app_user hakları ile istediği işi yaptırabilir.
Örnek olarak şöyle :
--Çalıştıracağımız Prosedür
CREATE OR REPLACE PROCEDURE app_user.vty_ramazan IS a number :=0 ; BEGIN for c in (select job from user_jobs) loop a := c.job; dbms_output.put_line(a); end loop; END; /
--Prosedürü çağırmak için
set serveroutput on
Begin app_user.vty_run_command('begin vty_ramazan; end;'); End; /
--Sonuç
Normalde select * from user_jobs ile kullanıcı kendi joblarını görebilir.
Bu prosedüre ile o kullanıcı altında tanımlı jobları da görebiliriz.
Bu bize ne kazandırır: DBA veya select any table veya select_catalog_role hakkı olmayan biri de başka bir kullanıcı altındaki nesne tanımlarına erişebilir.
Hiç yorum yok:
Yorum Gönder