اوراکل 23c – قابلیت Read Only User

Read Only User یکی از قابلیتهای جدید اوراکل در نسخه 23c است که اوراکل در مستندات مربوط به نسخه 23c حرفی در مورد آن نزده و ظاهرا اولین مستند آن مربوط به آقای Pete Finnigan است.

از طریق این قابلیت می توانیم امکان هرگونه تغییر داده را از یک کاربر بگیریم به طوری که کاربر با داشتن مجوز لازم برای insert، delete و update نتواند این دستورات را اجرا کند و یا با داشتن مجوز ساخت جدول، ویو، پروسیجر و … قابلیت ایجاد این اشیا را نداشته باشد چرا که ایجاد یک شی نیازمند تغییر داده در جداول Data Dictionary است.

بنابرین در صورتی که کاربر در حالت read only قرار بگیرد صرفا می تواند به دیتابیس وصل شده و اطلاعات جداول را ببیند و یا پروسیجر، فانکشن و پکیجی که تغییری را ایجاد نمی کنند اجرا کند.

در زمان ساخت یک user می توان آن را در حالت read only قرار داد:

SQL> create user USEF identified by abc read only;
User created.

با اهدای مجوز create session امکان اتصال به دیتابیس را به کاربر USEF می دهیم:

SQL> grant create session to usef;
Grant succeeded.
SQL> conn USEF/abc@target:1521/TEHRANPDB
Connected.

همچنین دسترسی لازم برای ساخت جدول و درج اطلاعات را به این کاربر اهدا می کنیم:

SQL> show user
USER is "SYS"
SQL> grant create table,unlimited tablespace,insert any table to USEF;
Grant succeeded.

کاربر USEF با وجود داشتن مجوزهای فوق نمی تواند جدولی را ایجاد کند چرا که در حالت read only قرار دارد:

SQL> conn USEF/abc@target:1521/TEHRANPDB
Connected.
SQL> create table tbl1(id number);
'ORA-28194: Can perform read operations only'
SQL> insert into reza.tb values(1);
'ORA-28194: Can perform read operations only'

با دستور زیر این کاربر را در حالت read write قرار می دهیم:

SQL> show user
USER is "SYS"
SQL> alter user USEF read write;
User altered.

با این تغییر کاربر USEF می تواند جدول tbl1 را ایجاد کند و یا امکان درج اطلاعات در آن را خواهد داشت:

SQL> conn USEF/abc@target:1521/TEHRANPDB
Connected.
SQL> create table tbl1(id number);
Table created.
SQL> insert into tbl1 values(1);
1 row created.

تغییر حالت از read write به read only هم امکان پذیر است:

SQL> alter user USEF read only;
User altered.

کاربر usef در حالت read only می تواند(در صورت داشتن مجوز select) اطلاعات جداول را مشاهده کند:

SQL> grant select any table to USEF;
Grant succeeded.
SQL> conn USEF/abc@target:1521/TEHRANPDB
Connected.
SQL> select * from reza.tb;
        ID
----------
         1

و یا پروسیجری که تغییری ایجاد نمی کند را اجرا کند:

SQL> grant execute any procedure to USEF;
Grant succeeded.
SQL> conn USEF/abc@target:1521/TEHRANPDB
Connected.
SQL> set SERVEROUT on
SQL> exec REZA.prc1(10);
20
'PL/SQL procedure successfully completed'.

برای مشاهده لیست کاربرانی که در حالت read only قرار دارند، می توان از پرس و جوی زیر استفاده کرد:

SQL> select username from dba_users where read_only='YES';
USERNAME
-----------
USEF

*این قابلیت برای common userها قابل استفاده نیست!

 

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *