در این قسمت از آموزش اوراکل بعد از آشنایی با System Privileges قصد داریم آموزش کار با مجوزهای آبجکت (Object Privileges) را یاد بگیریم.

یک مجوز آیجکت object privilege به کاربر اجازه را می دهد که یک سری عملیات های خاصی روی آبجکت های دیتابیس مانند اجرای دستورات DML روی جدول می باشد. به عنوان مثال مجوز INSERT روی جدول store.products به کاربر این اجازه را می دهد که بتوانید رکوردهایی در جدول products در اسکیما store درج کنید.

لیست تعدادی از مجوزهای آبجکت object privileges به شرح ذیل می باشد :

آموزش اوراکل

دادن دسترسی و مجوزهای آبجکت Object Privileges به کاربر

شما می توانید با استفاده از دستور GRANT می توانید مجوز و دسترسی های آبجکت را به کاربر اعطا کنید. مثال زیر کاربری به نام store به دیتابیس متصل شده و مجوزهای آبجکت Object Privileges از نوع INSERT,UPDATE,SELECT را روی جدول products به کاربری به نام steve اعطا شده شده و همچنین مجوز SELECT روی جدول employees به همان کاربر داده شده است.

آموزش اوراکل

در مثال بعد فقط دسترسی و مجوز آبجکتی Object Privileges از نوع UPDATE را فقط روی ستون های جدول last_name و salary به کاربری به نام steve داده شده است.

آموزش اوراکل

شما همچنین با استفاده از WITH GRANT OPTION می توانید مجوزآبجکتی Object Privileges به کاربری داده اید همان کاربر با این option مجوزهای اعطا شده به خودش را به کاربر دیگری اعطا کند.

آموزش اوراکل

بررسی مجوزهای آبجکت Object Privileges دریافت شده

شما می توانید مجوزهای آبجکت Object Privileges را روی جداول که به کاربران داده می شود را از طریق جدول user_tab_privs_recd مشاهده کنید. لیست زیر نمایش ستون های جدول user_tab_privs_recd می باشد.

آموزش اوراکل

در مثال بعد کاربری به نام steve به دیتابیس متصل شده و از جدول user_tab_privs_recd کوئری می زند.

آموزش اوراکل

همچنین شما میتوانید مجوزهای آبجکت Object Privileges که به ستون های جدول داده شده است به کاربران دریافت شده را در جدولی به نام user_col_privs_recd می باشد.

آموزش اوراکل

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

آموزش اوراکل

ایجاد Synonyms

در مثال قبلی همانطور که مشاهده شد دیدید که به چه صورتی شما می توانید به جداولی که در اسکیما دیگری هستند دسترسی داشته باشد و با وارد کردن نام اسکیما و هم نام جدول ب همراه هم به جداول مربوط دسترسی داشته و داده ها را نمایش دهید.

به عنوان مثال کاربری به نام steve می خواهد رکورد های جدول customers را از اسکیما store نمایش دهد و برای انجام اینکار بایستی کوئری بصورت store.customers باشد اما شما میتوانید با ایجاد synonym از نوشتن نام اسکیما در کوئری جلوگیری کنید و فقط نام جدول را بنویسید که باید از دستور CREATE SYNONYM استفاده کنید.

اجازه دهید با یک مثال شروع کنیم و با کاربری به نام system به دیتابیس متصل شده و مجوز CREATE SYNONYM را به کاربری نام steve می دهید.

آموزش اوراکل

پس از آن باید با کاربری به نام steve به دیتابیس اتصال برقرار کرده با استفاده از دستور CREATE SYNONYM به ایجاد synonym به عنوان آبجکت store.customers می باشد .

آموزش اوراکل

و از این به بعد با توجه به دستور بالا به جای وارد کردن store.customers با وارد کردن customers synonym در شرط FROM می توانید رکورد های جدول را نمایش دهید.

آموزش اوراکل

ایجاد Public Synonyms

همچنین شما می توانید برای جداول public synonym ایجاد کنید. پس از ایجاد public synonym تمامی کاربران دیتابیس می تواندد public synonym را ببینند و به آن دسترسی داشته باشند. برای انجام این وظایف ابتدا :

  • با کاربر system به دیتابیس متصل شوید.
  • دادن دسترسی و مجوز سیستمی CREATE PUBLIC SYNONYM به کاربر کاربری به نام store
  • با نام کاربری به نام store به دیتابیس متصل شوید.
  • ساخت public synonym به نام products برای آبجکت store.products
آموزش اوراکل

اگر شما با کاربری به نام steve به دیتابیس متصل شوید و مجوز SELECT روی جدول store.products داشته باشید، بعد از اجرای دستور بالا به جای وارد کردن store.products می توانید برای نمایش رکورد های جدول از public synonym به نام products استفاده کنید.

آموزش اوراکل

حتی اگر برای آبجکت store.products یک public synonym ایجاد شده باشد اما اگر کاربری دسترسی و مجوز SELECT به جدول products نداشته باشد جتی با وجود public synonym در زمان نمایش synonym به نام synonym برای تمایش رکورد ها به کاربر خطا به عنوان ora-00942: table or view does not exist می دهد.

آموزش اوراکل

گرفتن مجوزهای آبجکت Object Privileges از کاربر

شما میتوانید یک یا چند مجوز آبجکت object privilege را از کاربر با استفاده از دستور REVOKE بگیرید و حذف کنید. در مثال زیر شما با کاربری به نام store به دیتابیس متصل شده مجوز INSERT را از جدول products بر روی کاربری به نام steve حذف و اصطلاحا revokes می کنید.

آموزش اوراکل

اطلاعات بیشتر در مورد Object Privileges