مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۳ دقیقه·۱ سال پیش

بررسی قابلیت Hybrid Read-Only در Oracle Database 23c


پایگاه داده اوراکل در نسخه ۲۳C به ما امکان می دهد PDB ها را در حالت Hybrid Read-Only قراردهیم. این به کاربران در سطح CDB اجازه می دهد تا در حالت خواندن و نوشتن کار کنند، در حالی که کاربران PDB و کاربران معمولی برنامه به حالت فقط خواندن محدود می شوند.
حالا این امکان چه مزیتی به ما می دهد؟ در مواقعی لازم هست که شما یکسری فعالیت ادمینی انجام دهید که در این حالت نباید تغییراتی در سطح پایگاه داده انجام شودُ با این امکان می توان این تغییرات را انجام داد و در همین حال به جای اینکه دسترسی کاربران را کامل قطع کنیم به آنها اجازه مشاهده داده را می دهیم.

آموزش نصب و راه اندازی Oracle Database 23c

فعال کردن حالت Hybrid Read-Only:

با کاربر sys به CDB وصل می شویم و PDB را که نام آن freepdb1 می باشد را در این حالت قرار می دهیم.

conn / as sysdba

alter pluggable database freepdb1 close immediate;

alter pluggable database freepdb1 open hybrid read only;

حال برای اینکه در حالت فقط خواندنی و یا خواندن و نوشتن قرار بگیریم به این وابسته می باشد که با چه کاربری متصل شویم.
برای بررسی کاربران مربوطه را می سازیم، کاربر در سطح CDB با دسترسی به PDB (c##soltani) و کاربر در سطح (soltani)PDB.

conn / as sysdba

create user c##soltani identified by ab123456 container=all;

grant dba to c## soltani container=all;

alter session set container=freepdb1;

create user soltani identified by ab123456;

grant dba to soltani;

ابتدا با کاربر c##soltani متصل می شویم:

conn c##soltani/ab123456@//localhost:1521/freepdb1

column name format a10

select name, open_mode from v$pdbs;

NAME OPEN_MODE

———- ———-

FREEPDB1 READ WRITE

SQL>

column con_name format a10

column is_hybrid_read_only format a20

select con_name,

open_mode,

is_hybrid_read_only

from v$container_topology;

CON_NAME OPEN_MODE IS_HYBRID_READ_ONLY

———- ———- ——————–

FREEPDB1 READ WRITE YES

SQL>

همانطور که انتظار داشتیم، PDB در حالت Read Write قراردارد.
حال با کاربر Soltani متصل می شویم.

conn soltani/ ab123456@//localhost:1521/freepdb1

column name format a10

select name, open_mode from v$pdbs;

NAME OPEN_MODE

———- ———-

FREEPDB1 READ ONLY

SQL>

column con_name format a10

column is_hybrid_read_only format a20

select con_name,

open_mode,

is_hybrid_read_only

from v$container_topology;

CON_NAME OPEN_MODE IS_HYBRID_READ_ONLY

———- ———- ——————–

FREEPDB1 READ WRITE YES

SQL>

در این حالت viewبه نام v$pdbs پایگاه داده را به صورت Read Only نمایش میدهد.

در ادامه دستوراتی را با هر دوکاربر اجرا می کنیم تا خروجی ها را مشاهده کنیم.

SQL> conn c##soltani/ab123456@//localhost:1521/freepdb1

Connected.

SQL> drop user if exists rad cascade;

User dropped.

SQL> create user rad identified by rad quota unlimited on users;

User created.

SQL> grant db_developer_role to rad;

Grant succeeded.

SQL>create table rad.tabletest (id number);

Table created.

SQL> insert into rad. tabletest values (1);

۱ row created.

SQL> commit;

Commit complete.

SQL>

همانطور که مشاهده کردید هنگامی که با کاربر c##soltani متصل شدیم، توانستیم تمامی دستورات DDL و DML را اجرا کنیم. در صورتی که این دستورات را نمی توانیم با کاربر soltani اجرا کنیم و با خطا مواجه می شویم.

SQL> conn soltani/ab123456@//localhost:1521/freepdb1

Connected.

SQL> drop user if exists rad cascade;

*

ERROR at line 1:

ORA-16000: Attempting to modify database or pluggable database that is open for

read-only access.

SQL> create user rad identified by rad quota unlimited on users;

*

ERROR at line 1:

ORA-16000: Attempting to modify database or pluggable database that is open for

read-only access.

SQL> grant db_developer_role to rad;

*

ERROR at line 1:

ORA-16000: Attempting to modify database or pluggable database that is open for

read-only access.

SQL> create table rad.tabletest (id number);

*

ERROR at line 1:

ORA-16000: Attempting to modify database or pluggable database that is open for

read-only access.

SQL> insert into rad.tabletest values (1);

*

ERROR at line 1:

ORA-16000: Attempting to modify database or pluggable database that is open for

read-only access.

SQL> select * from rad.tabletest;

ID

———-

۱

SQL>

چگونه از حالت Hybrid Read-Only خارج شویم:

conn / as sysdba

alter pluggable database freepdb1 close immediate;

alter pluggable database freepdb1 open read write;

جهت دریافت خدمات پایگاه داده اوراکل با ما در ارتباط باشید.

مشاوره اوراکلخدمات اوراکلoracle database 23coracle databaseمسعود سلطانی راد
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید