ایجاد synonym برای کاربران

ایجاد synonym برای کاربران در اوراکل 12c امکان پذیر است. این کار با کمک پارامتر مخفی enable_schema_synonyms_ قابل انجام می باشد:

SQL> alter system set “_enable_schema_synonyms” = true scope=spfile;

System altered.

برای مثال، بعد از تنظیم این پارامتر، می توانیم با کمک دستور زیر، برای کاربر usef، نام دیگری هم تعیین می کنیم:

SQL>  create schema synonym new_name for usef;

Schema synonym created.

SQL> select p.user#,p.name,p.type#,p.password,p.ctime,p.exptime from sys.user$ p where p.name in(‘NEW_NAME’,’USEF’);

با ایجاد این synonym، می توان به ابجکتهای کاربر usef، از طریق new_name دسترسی داشت:

SQL>select count(*) from NEW_NAME.MYTBL;

389999

یا برای کاربر usef، شی جدیدی ایجاد کرد:

SQL>create view NEW_NAME.myview as select * from NEW_NAME.MYTBL;

اما امکان لاگین به کاربر usef از طریق synonym آن وجود ندارد:

SQL> conn new_name/a

ERROR:

ORA-01017: invalid username/password; logon denied

SQL> conn usef/a

Connected.

همچنین اجرای دستور alter user برای این synonym، کابردی نخواهد داشت:

SQL> alter user new_name identified by aa;

ORA-01918: user ‘NEW_NAME’ does not exist

استفاده از synonym برای کاربران، خالی از اشکال نمی باشد برای مثال، با سناریوی زیر، به خطا برخواهیم خورد:

SQL> drop table  new_name.mytbl;

Table dropped.

SQL> create table usef.mytbl as select * from v$datafile;

Table created.

SQL> select count(*) from usef.mytbl;

  COUNT(*)

———-

         6

SQL>  select count(*) from new_name.mytbl;

  COUNT(*)

———-

         0

البته با خالی شدن shared pool، این مشکل برطرف خواهد شد:

SQL> alter system flush shared_pool;

System altered.

SQL> select count(*) from new_name.mytbl;

  COUNT(*)

———-

         6

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