پرسش: چه تفاوتی بین مجوز سیستمی 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
Comment (1)