اوراکل 19c – دو بهبود جزیی در TDE

بهبود اول: از اوراکل 12cR2 می توان tablespaceهای سیستمی نظیر SYSTEM، SYSAUX، UNDO و حتی TEMP را در حالت encrypt قرار داد:

SQL> alter system set db_create_file_dest=’/oracle/mydata/’;

System altered.

SQL> alter tablespace system encryption online encrypt;

Tablespace altered.

پس از قرار دادن system tbs در حالت encrypt، اگر بخواهیم فایل wallet را در حالت close قرار دهیم، دستور با خطای زیر متوقف خواهد شد:

Version 18.3.0.0.0

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY  p;

ORA-28439: cannot close wallet when SYSTEM, SYSAUX, UNDO, or TEMP tablespaces are encrypted

اما در اوراکل 19c، امکان اجرای دستور فوق وجود دارد:

SQL>  alter tablespace system encryption online encrypt;

Tablespace altered.

SQL> ADMINISTER KEY MANAGEMENT SET KEYSTORE CLOSE IDENTIFIED BY  p;

keystore altered.

همانطور که می بینید، tablespace سیستم در حالت encrypt و فایل wallet در وضعیت close قرار دارد!

سوال: آیا در این شراط(با بسته شدن فایل wallet)، امکان دسترسی به اطلاعات موجود در tablespace سیستم وجود خواهد داشت؟

پاسخ مثبت است:

SQL> select count(*) from dba_objects ;

  COUNT(*)

———-

     73254

SQL> exec dbms_stats.gather_table_stats(ownname => user,tabname => ‘TAB$’);

PL/SQL procedure successfully completed.

SQL> select tablespace_name from dba_segments where segment_name=’TBL1′;

TABLESPACE_NAME

——————————

TBS01

البته با توجه به بسته بودن فایل wallet، دسترسی به اطلاعاتی که در tablespaceهای غیرسیستمی(و encrypt شده) قرار دارند، امکان پذیر نخواهد بود:

SQL> select count(*) from tbl1;

ORA-28365: wallet is not open

 

بهبود دوم: عدم الزام به استفاده از عبارت file_name_convert در زمان اجرای دستور alter tablespace … encryption online

از نسخه 12cR2 می توان به صورت انلاین و با اجرای دستور alter tablespace … encryption onlineء، tablespace ای را در حالت encrypt قرار داد:

SQL> alter tablespace tbs01 encryption online encrypt file_name_convert=(‘/oracle/mydata/DUP/datafile/tbs01.dbf’,’/oracle/tde/DUP/datafile/tbs01_tde.dbf’,’/oracle/mydata/DUP/datafile/tbs02.dbf’,’/oracle/tde/DUP/datafile/tbs02_tde.dbf’,’/oracle/mydata/DUP/datafile/tbs03.dbf’,’/oracle/tde/DUP/datafile/tbs03_tde.dbf’);

Tablespace altered.

فرمت تنظیم عبارت file_name_convert به صورت زیر می باشد:

file_name_convert=(‘existing datafile 1’,’new datafile 1’,’existing datafile 2’, ‘new datafile 2’ ..etc)

عدم استفاده از این عبارت، منجر به خطای زیر خواهد شد(اگر OMF تنظیم نشده باشد):

ORA-28425: missing a valid FILE_NAME_CONVERT clause

البته در صورتی که Oracle Managed File تنظیم شده باشد، استفاده  از عبارت file_name_convert با خطای زیر متوقف خواهد شد:

ORA-28437: unexpected FILE_NAME_CONVERT clause with Oracle Managed Files

در این شرایط باید از تعیین مسیرها صرف نظر کرد تا اوراکل به صورت OMFای دیتافایلهای encrypt شده را ایجاد کند:

SQL> alter tablespace tbs01 encryption online encrypt ;

Tablespace altered.

در اوراکل 19c، در صورت عدم تنظیم OMF هم می توان دستور alter tablespace … encryption online را بدون استفاده از عبارت FILE_NAME_CONVERT اجرا کرد:

SQL> alter system set db_create_file_dest=”;

System altered.

SQL> select file_name from dba_data_files where tablespace_name=’TBS01′;

FILE_NAME

——————————————————————————–

/oracle19c/mydata/DUP/datafile/tbs01.dbf

/oracle19c/mydata/DUP/datafile/tbs02.dbf

/oracle19c/mydata/DUP/datafile/tbs03.dbf

SQL> alter tablespace tbs01 encryption online encrypt ;

Tablespace altered.

SQL> select file_name from dba_data_files where tablespace_name=’TBS01′;

FILE_NAME

——————————————————————————–

/oracle19c/mydata/DUP/datafile/tbs01.dbf

/oracle19c/mydata/DUP/datafile/tbs02.dbf

/oracle19c/mydata/DUP/datafile/tbs03.dbf

همانطور که می بینید، دستور فوق، دیتافایلهای متعلق به tbs01 را با همان نام و در همان مسیر ایجاد کرده است. البته در حین اجرای دستور alter tablespace … encryption online، به صورت موقت، نام دیتافایل را به فرمت datafile_name_new تغییر خواهد داد.

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

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

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