بررسی قابلیت 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 sysdbaalter pluggable database freepdb1 close immediate;alter pluggable database freepdb1 open hybrid read only;حال برای اینکه در حالت فقط خواندنی و یا خواندن و نوشتن قرار بگیریم به این وابسته می باشد که با چه کاربری متصل شویم.برای بررسی کاربران مربوطه را می سازیم، کاربر در سطح CDB با دسترسی به PDB (c##soltani) و کاربر در سطح (soltani)PDB.conn / as sysdbacreate 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/freepdb1column name format a10select name, open_mode from v$pdbs;NAME OPEN_MODE———- ———-FREEPDB1 READ WRITESQL>column con_name format a10column is_hybrid_read_only format a20select con_name,open_mode,is_hybrid_read_onlyfrom v$container_topology;CON_NAME OPEN_MODE IS_HYBRID_READ_ONLY———- ———- ——————–FREEPDB1 READ WRITE YESSQL>همانطور که انتظار داشتیم، PDB در حالت Read Write قراردارد.حال با کاربر Soltani متصل می شویم.conn soltani/ ab123456@//localhost:1521/freepdb1column name format a10select name, open_mode from v$pdbs;NAME OPEN_MODE———- ———-FREEPDB1 READ ONLYSQL>column con_name format a10column is_hybrid_read_only format a20select con_name,open_mode,is_hybrid_read_onlyfrom v$container_topology;CON_NAME OPEN_MODE IS_HYBRID_READ_ONLY———- ———- ——————–FREEPDB1 READ WRITE YESSQL>در این حالت viewبه نام v$pdbs پایگاه داده را به صورت Read Only نمایش میدهد.در ادامه دستوراتی را با هر دوکاربر اجرا می کنیم تا خروجی ها را مشاهده کنیم.SQL> conn c##soltani/ab123456@//localhost:1521/freepdb1Connected.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/freepdb1Connected.SQL> drop user if exists rad cascade;*ERROR at line 1:ORA-16000: Attempting to modify database or pluggable database that is open forread-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 forread-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 forread-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 forread-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 forread-only access.SQL> select * from rad.tabletest;ID———-۱SQL>چگونه از حالت Hybrid Read-Only خارج شویم:conn / as sysdbaalter pluggable database freepdb1 close immediate;alter pluggable database freepdb1 open read write;جهت دریافت خدمات پایگاه داده اوراکل با ما در ارتباط باشید.