SYNONYM در دیتابیس اوراکل

یکی از OBJECTهای دیتابیس اوراکل SYNONYM است که به عنوان یک نام جایگزین برای OBJECTهای دیگر دیتابیس ( جدول ها ، VIEW و …)  عمل می کند. در این متن SYNONYM و روش استفاده از آن را توضیح می دهیم.

 

استفاده از SYNONYM

همانطور که گفته شد SYNONYM مانند ALIAS عمل می کند و سبب راحتی در نوشتن دستورات SQL می شود.همچنین استفاده از SYNONYM می تواند از لحاظ امنیتی هم سودمند باشد زیرا می تواند نام و محل اصلی(در کدام SCHEMA قرار دارد) یک OBJECT را مخفی کند.

برای OBJECTهای زیر می توان SYNONYM تعریف کرد:

table – view – sequence – stored procedure – function – package – materialized view – java class schema object – user-defined object – synonym

SYNONYM نیاز به فضای ذخیره سازی ندارد و فقط تعاریف مربوط به آنها در دیتادیکشنری دیتابیس اوراکل ثبت می شود.

 

ایجاد و حذف SYNONYM

در شکل زیر سینتکس ایجاد یک SYNONYM را می بینید

در دستور ایجاد یک SYNONYM اگر از کلمه PUBLIC استفاده شود آن SYNONYM می تواند توسط تمام کاربران دیتابیس مورد دسترسی قرار گیرد. البته به شرطی که یک کاربر مجوز لازم برای OBJECT آن SYNONYM را داشته باشد.

برای ساختن SYNONYM نیاز به مجوز CREATE SYNONYYM داریم.  

SQL> grant create synonym to milad;

Grant Succeeded.

نکته: ممکن است یک SYNONYM برای یک OBJECT که وجود ندارد ایجاد شود یا آن OBJECT حذف شده یا تغییر نام داده باشد در این صورت در زمان استفاده از SYNONYM با خطای اوراکل مواجه می شویم.

مثال: جدول TableTableWrongTable وجود ندارد ولی یک SYNONYM برای آن ایجاد می شود. در زمان دسترسی به آن SYNONYM متوجه خطای اوراکل می شویم.

+برای ساخت SYNONYM از نوع PUBLIC نیاز به مجوز CREATE PUBLIC SYNONYM داریم.

+ زمانی که یک SYNONYM که PUBLIC نیست می سازیم(PRIVATE است) باید نام آن متفاوت از نام تمام  OBJECTهای آن کاربر باشد.

+ برای یک OBJECT که داخل یک PACKAGE قرار دارد نمی توان از SYNONYM استفاده کرد.

مثال: برای VIEW با نام DEPT_SUM_VU یک SYNONYM بسازید.

مثال: SYNONYM مثال قبل را از دیتابیس حذف کنید.

 

مثال: یک SYNONYM از نوع PUBLIC به نام DEPT برای جدول DEPARTMENTS که مالک آن کاربر ALICE است بسازید. مجوز لازم برای ساخت PUBLIC SYNONYM را داریم.

CREATE PUBLIC SYNONYM dept FOR alice.departments;

مثال: SYNONYM مثال قبل را حذف کنید.

DROP PUBLIC SYNONYM dept;

مثال:

مجوز لازم جهت ساختن و DROP کردن PUBLIC SYNONYM را به کاربر ALI می دهیم.

SQL> grant create public synonym to ali;

Grant Succeeded.

SQL> grant drop public synonym to ali;

Grant Succeeded.

توسط کاربر ALI یک PUBLIC SYNONYM به نام t برای جدول ali.table1 می سازیم و سپس آن را DROP می کنیم.

 

CREATE PUBLIC SYNONYM t FOR ali.table1;

DROP PUBLIC SYNONYM t;

دوباره آن SYNONYM را ایجاد می کنیم. اگر دیتادیکشنری USER_SYNONYMS را در کاربر ALI نمایش دهیم اطلاعات این SYNONYM که از نوع PUBLIC است را نمی توانیم ببینیم.

در ادامه مجوز لازم برای SELECT این PUBLIC SYNONYM را به کاربر MILAD می دهیم. یکی از این دو مجوز کافیست.

SQL> grant  select on  t to milad;

Grant Succeeded.

یا

SQL> grant  select on  ali.table1 to milad;

Grant Succeeded.

 

در نهایت با کاربر milad متصل می شویم و مقدارهای این SYNONYM را مشاهده می کنیم.

Select * from t;

نکته: اگر یک OBJECT دارای DATABASE LINK  است از سینتکس زیر می توان استفاده کرد.

CREATE [PUBLIC] SYNONYM [schema .] synonym_name

 FOR [schema .] object_name [@ dblink];

نکته: برای تغییر یک SYNONYM می توان از سینتکس زیر استفاده کرد.

CREATE OR REPLACE [PUBLIC] SYNONYM [schema .] synonym_name

  FOR [schema .] object_name [@ dblink];

مثال: جدول SYNONYM را عوض کنید.

CREATE OR REPLACE PUBLIC SYNONYM t FOR ali.table22222;

 

اطلاعاتی در مورد SYNONYMهای تعریف شده

مشخصات تمام SYNONYMهای تعریف شده در دیتابیس اوراکل را  می توانیم در ویوی دیتادیکشنری DBA_SYNONYMS ببینیم. اگر مجوز کافی نداریم با ویوی USER_SYNONYMS فقط آنهایی که مربوط به یوزر خودمان هستند را می بینیم.

مثال: مشخصات تمام SYNONYMهای کاربر جاری را نمایش دهید.

.

 

Comments (2)

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

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