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


تاریخ انتشار: 1398/تیر/13
نویسنده:مهندس امیر مکرم
گروه دانش : Oracle Datebase
تعداد بازدید: 24 مرتبه
اشتراک گذاری:

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

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

System altered.

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

SQL>  create schema synonym new_name for amir;

Schema synonym created.

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

 

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

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

389999

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

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

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

SQL> conn new_name/a

ERROR:

ORA-01017: invalid username/password; logon denied

SQL> conn amir/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 amir.mytbl as select * from v$datafile;

Table created.

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

  COUNT(*)

———-

         6

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

  COUNT(*)