تفاوت مجوز سیستمی SELECT ANY DICTIONARY و نقش SELECT_CATALOG_ROLE

پرسش: چه تفاوتی بین مجوز سیستمی SELECT ANY DICTIONARY و نقش SELECT_CATALOG_ROLE وجود دارد؟

پاسخ: با دو مثال زیر، تفاوت بین این دو مجوز را نشان خواهیم داد.

مثال 1: کاربر user_a با داشتن مجوز select any dictionary می تواند به ویوها و جداول data dictionary دسترسی داشته باشد:

SQL> create user user_a identified by a;

User created.

SQL> grant select any dictionary,connect to user_a;

Grant succeeded.

SQL> conn user_a/a@pdb1

—views
SQL> select count(*) from v$datafile;
COUNT(*)
————
4

—tables
SQL> select count(*) from sys.file$;
COUNT(*)
————
4
مثال 2: کاربر user_b با داشتن نقش SELECT_CATALOG_ROLE این قابلیت را ندارد که به جداول data dictionary دسترسی داشته باشد و صرفا خواهد توانست ویوهای data dictionary را ببیند.

SQL> create user user_b identified by a;

User created.

SQL> grant SELECT_CATALOG_ROLE ,connect to user_b;

Grant succeeded.

SQL> conn user_b/a@pdb1

—views
SQL> select count(*) from v$datafile;
COUNT(*)
————
4

—tables
SQL> select count(*) from sys.file$;

ORA-00942: table or view does not exist

تفاوتهای دیگری هم بین این دو مجوز وجود دارد که در اینجا صرفا به یکی از انها اشاره شد.

پ.ن: از اوراکل 12c، دسترسی به بعضی از جداول data dictionary حتی با داشتن مجوز select any dictionary هم ممکن نمی باشد. لیست بعضی از این جداول را در زیر می بینید:

USER$, ENC$ , DEFAULT_PWD$, LINK$, USER_HISTORY$, CDB_LOCAL_ADMINAUTH$, XS$VERIFIERS

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

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

نشانی ایمیل شما منتشر نخواهد شد.