زمانی که 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
Failure – Test failed: The Network Adapter could not establish the connection
سلام این error چگونه حل میشه؟ راهی بغیر از تعویض ویندوز وجود داره. ویندوزم 10 هست و اوراکلم 12 .لطفا
کمکم کنبد.
سلام وقتتون بخیر
مشخصات رو موقع اتصال درست وارد می کنید(ip، port و …)؟
احیانا محتویات دیفالت فایل etc / hosts رو توی ویندوز تغییر ندادین؟
چک کنید سرویس listener در چه وضعیتی قرار داره؟
سلام مهندس عزیر. میخواستم بدونم ایا راهی هست که مجوز اجرای فقط یک یا تعداد مشخصی از توابع یا پروسیجر ها یک پکیج رو به یک user داد به نحوی که مجوز اجرای بقیه رو نداشته باشه؟
سلام مهندس عزیز ارادتمندیم.
روش مستقیمی برای این کار وجود نداره ولی میشه یه پروسیجر ساخت و توی اون پروسیجر هر کدوم از توابع و یا پروسیجرهای اون پکیج رو صدا زد و نهایتا مجوز اجرای پروسیجر جدیدی که ایجاد میشه را به کاربران دلخواه داد.
ارادت