نکاتی در مورد مجوز پکیج در اوراکل

زمانی که user1 مجوز اجرای پروسیجرش را به user2 اهدا می کند، user2 علاوه بر امکان اجرای این پروسیجر، می تواند محتویات پروسیجر را هم مشاهده کند:

SQL> show user

User is “user1”

SQL> create user user2 identified by u;

User created

SQL> grant create session to user2;

Grant succeeded

SQL> grant execute on user1.myproc1 to user2;

Grant succeeded

SQL> conn user2/u

Connected.

SQL> exec user1.myproc1;

PL/SQL procedure successfully completed.

SQL> select line,text from all_source p where p.NAME=’MYPROC1′;

البته این دسترسی صرفا به مشاهده و اجرا محدود می شود و کاربر user2 امکان تغییر و یا کامپایل کردن این پروسیجر را ندارد:

SQL> alter PROCEDURE USER1.MYPROC1 compile;

ERROR at line 1:

ORA-01031: insufficient privileges

حال اگر کاربر user1 مجوز اجرای یکی از پکیجها را به user2 اهدا کند، این کاربر(user2) می تواند تمامی فانکشنها و پروسیجرهای این پکیج را هم اجرا کند ولی امکان مشاهده محتویات این پکیجها را نخواهد داشت و صرفا می تواند قسمت spec پکیج را ببیند:

SQL> show user;

User is “user1”

SQL>

SQL> create or replace package pkg1 is

  2  procedure proc1;

  3  end pkg1;

  4  /

Package created

SQL> create or replace package body pkg1 is

  2  procedure proc1 is

  3  begin

  4  dbms_output.put_line(‘my name usef!’) ;

  5  end proc1;

  6  end pkg1;

  7  /

Package body created

SQL> grant execute on pkg1 to user2;

Grant succeeded

SQL> conn user2/u

Connected.

SQL> exec USER1.PKG1.PROC1;

PL/SQL procedure successfully completed.

SQL> select p.OWNER,line,text from all_source p where p.OWNER=’USER1′

برای مشاهده Package Body توسط کاربر user2، می توان دستور زیر را اجرا کرد:

SQL> conn user1/u

Connected.

SQL> grant debug on PKG1 to user2;

Grant succeeded.

SQL> conn user2/u

Connected.

SQL> select p.OWNER,line,text from all_source p where p.OWNER=’USER1′;

البته با اهدای این مجوز، کاربر user2 امکان تغییر و یا کامپایل این پکیج را نخواهد داشت:

SQL> conn user2/u

Connected.

SQL> alter PACKAGE USER1.PKG1 compile;

ERROR at line 1:

ORA-01031: insufficient privileges

SQL> alter PACKAGE USER1.PKG1 compile BODY

ERROR at line 1:

ORA-01031: insufficient privileges

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

Comments (4)

  1. Failure – Test failed: The Network Adapter could not establish the connection
    سلام این error چگونه حل میشه؟ راهی بغیر از تعویض ویندوز وجود داره. ویندوزم 10 هست و اوراکلم 12 .لطفا
    کمکم کنبد.

    1. سلام وقتتون بخیر
      مشخصات رو موقع اتصال درست وارد می کنید(ip، port و …)؟
      احیانا محتویات دیفالت فایل etc / hosts رو توی ویندوز تغییر ندادین؟
      چک کنید سرویس listener در چه وضعیتی قرار داره؟

  2. سلام مهندس عزیر. میخواستم بدونم ایا راهی هست که مجوز اجرای فقط یک یا تعداد مشخصی از توابع یا پروسیجر ها یک پکیج رو به یک user داد به نحوی که مجوز اجرای بقیه رو نداشته باشه؟

    1. سلام مهندس عزیز ارادتمندیم.
      روش مستقیمی برای این کار وجود نداره ولی میشه یه پروسیجر ساخت و توی اون پروسیجر هر کدوم از توابع و یا پروسیجرهای اون پکیج رو صدا زد و نهایتا مجوز اجرای پروسیجر جدیدی که ایجاد میشه را به کاربران دلخواه داد.
      ارادت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *