مقدمه
در نسخه‌های قبلی پایگاه‌داده اوراکل، توانایی ایجاد یک دیسک‌ گروه‌ ASM را داشتیم که به شیوه‌ای کارآمد، data files های تعدادی از پایگاه‌داده‌ها در آن قرار داشت. اما مشکل آن‌جا بود که نمی‌توانستیم هیچ مدیریت ذخیره‌سازی‌ای را در سطح پایگاه‌داده انجام دهیم.
اگر درجه‌ی افزونگی دیسک‌ گروه‌ روی High تنظیم شود (که همسان‌سازی ۳ مرحله‌ای است)، آنگاه این تنظیمات به هر پایگاه‌داده‌ای که در آن دیسک‌ گروه‌ خاص از ASM، فایل داشته‌ باشد، اعمال می‌شود. شاید یک پایگاه‌داده با کاربری آزمایش و توسعه محصول را در کنار یک پایگاه‌داده عملیاتی داشته‌باشیم که از یک دیسک‌ گروه‌ ASM به صورت مشترک استفاده می‌کنند و نمی‌خواهیم این سطح از افزونگی دیسک گروه برای پایگاه‌داده غیر عملیاتی نیز صدق کند.

دیسک‌ گروه‌های ASM FLEX، گروه‌های QUOTA و شبیه‌سازی ASM SPLIT
همچنین اگر چند پایگاه‌داده در گروه دیسک ASM به صورت اشتراکی وجود داشته‌ باشند، هیچ راهی برای جلوگیری از مصرف بیش از اندازه‌ی یک پایگاه‌ داده‌ از تمام فضای ذخیره سازی موجود در آن دیسک‌ گروه‌ خاص وجود ندارد.

همچنین مواردی مانند محدوده‌ی ASM rebalance power تنها می‌تواند در سطح دیسک‌ گروه‌ ASM تنظیم شود و ممکن است یک پایگاه‌داده‌ی حیاتی و عملیاتی، نیازمند محدوده‌ی ASM rebalance power بالاتری نسبت به پایگاه‌داده‌ی کم اهمیت‌تر باشد.

artarad_flex_1

artarad_flex_1

از اوراکل نسخه‌ی 12cR2، ابزار ASM قابلیت مدیریت ذخیره‌سازی بر مبنای پایگاه‌داده را با معرفی ASM flex groups و file groups و quota groups فراهم می‌کند.
ویژگی جدیدی که در اوراکل نسخه‌ی 18c معرفی شد، روشی بسیار سریع برای شبیه‌سازی پایگاه‌ داده‌های pluggable به نام ASM Split Mirror Cloning است که بر اساس ویژگی ASM Flex Disk Group می‌باشد.

اکنون افزونگی فایل‌ها در یک flex disk group، انعطاف‌پذیر بوده و قادر به مدیریت ذخیره‌سازی در سطح پایگاه‌داده خواهد بود. هر پایگاه‌داده file group مخصوص به خود را دارد و مدیریت ذخیره‌سازی می‌تواند در سطح file group، علاوه بر سطح دیسک‌ گروه‌ (که تنها سطح ممکن قبلی بود) انجام شود.
یک flex disk group، نیاز به حداقل سه گروه failure دارد و تنظیمات افزونگی یک flex disk group روی FLEX REDUNDANCY تنظیم می‌شود. flex disk group می‌تواند دو failure را تحمل کند که همانند دیسک‌ گروه‌ با افزونگی High است.
از اوراکل نسخه‌ی 18c می‌توانیم دیسک‌ گروه‌های دارای تنظیمات افزونگی NORMAL یا HIGH (نه EXTERNAL) را به flex disk groups تبدیل کنیم.

artarad_flex_2

artarad_flex_2

نصب و راه اندازی
در این مثال از ابزار ASMCA برای ساخت Flex ASM Disk Group و سپس File Groups و Quota Groups استفاده می‌کنیم. توجه داشته‌باشید که Flex Disk Group، به حداقل ۳ دیسک نیاز دارد. همچنین اکنون از طریق ASMCA می‌توانیم ویژگی‌های دیسک‌ گروه‌ ASM را به خوبی ببینیم.

artarad_flex_3

artarad_flex_4

artarad_flex_5

artarad_flex_6

artarad_flex_7

artarad_flex_8

artarad_flex_9

artarad_flex_10

شبیه‌سازی ASM SPLIT (ویژگی جدید اوراکل نسخه‌ی 18c)

ما یک پایگاه‌داده‌ی pluggable به نام PDB1 در یک CDB با نام SALES ایجاد کرده‌ایم. توجه کنید که هر CDB و PDB به filegroup های مختص به خود، تخصیص داده می‌شوند.

SQL> select FILEGROUP_NUMBER, NAME, CLIENT_NAME, USED_QUOTA_MB, QUOTAGROUP_NUMBER from v$asm_filegroup;
FILEGROUP_NUMBER NAME CLIENT_NAM USED_QUOTA_MB QUOTAGROUP_NUMBER

0 DEFAULT_FILEGROUP 0 1
1 SALES_CDB$ROOT SALES_CDB$ROOT 5328 1
2 SALES_PDB$SEED SALES_PDB$SEED 1496 1

3 SALES_PDB1 SALES_PDB1 1744 1
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED

2 PDB$SEED READ ONLY NO

3 PDB1 READ WRITE NO

آماده‌سازی شبیه‌سازی
به پایگاه‌داده PDB1 متصل شده و فرمان PREPARE MIRROR COPY را اجرا کنید.

SQL> alter session set container=pdb1;
Session altered.
SQL> ALTER PLUGGABLE DATABASE PREPARE MIRROR COPY pdb1_mirror;
ALTER PLUGGABLE DATABASE PREPARE MIRROR COPY pdb1_mirror
*
ERROR at line 1:
ORA-15283: ASM operation requires compatible.rdbms of 18.0.0.0.0 or higher
SQL> ALTER PLUGGABLE DATABASE PREPARE MIRROR COPY pdb1_mirror;
Pluggable database altered.

با اتصال به ASM instance و اجرای درخواست (query) روی v$asm_dbclone_info می‌توانیم فرآیند آماده‌سازی شبیه‌سازی را پایش کنیم.

SQL> select mirrorcopy_name, dbclone_status from v$asm_dbclone_info;

MIRRORCOPY_NAME

DBCLONE_STATUS

PDB1_MIRROR
PREPARING
SQL> /

MIRRORCOPY_NAME

DBCLONE_STATUS

PDB1_MIRROR
PREPARED

جداسازی شبیه‌سازی و تهیه clone از پایگاه‌داده
توجه کنید که مرحله آماده‌سازی و شبیه‌سازی باید قبل از شروع این مرحله، تکمیل شود. به پایگاه‌داده CDB متصل شده و فرمان CREATE PLUGGABLE DATABASE را با قید عبارت USING MIRROR COPY اجرا کنید.

SQL> conn / as sysdba
Connected.
SQL> CREATE PLUGGABLE DATABASE pdb2 FROM pdb1 USING MIRROR COPY pdb1_mirror;
Pluggable database created.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED

2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB2 MOUNTED
SQL> alter pluggable database pdb2 open ;
Pluggable database altered.

پس از ساخته شدن پایگاه‌داده pluggable، می‌توانیم عبارت SPLIT COMPLETED را در ستون DBCLONE_STATUS مشاهده کنیم.

SQL> select mirrorcopy_name, dbclone_status from v$asm_dbclone_info;

MIRRORCOPY_NAME

DBCLONE_STATUS

PDB1_MIRROR
SPLIT COMPLETED
SQL> alter session set container=pdb2;
Session altered.

Name * Email * Website

SQL> select name from v$datafile;

NAME

+FLEX_DATA/SALES/8AB11EBA6B714BE3E0536438A8C0CE87/DATAFILE/system.279.1010302271
+FLEX_DATA/SALES/8AB11EBA6B714BE3E0536438A8C0CE87/DATAFILE/sysaux.280.1010302271
+FLEX_DATA/SALES/8AB11EBA6B714BE3E0536438A8C0CE87/DATAFILE/undotbs1.281.1010302271
+FLEX_DATA/SALES/8AB11EBA6B714BE3E0536438A8C0CE87/DATAFILE/undo_2.284.1010302271
+FLEX_DATA/SALES/8AB11EBA6B714BE3E0536438A8C0CE87/DATAFILE/users.282.1010302271

استفاده از Quota Groups
ما یک Quota Groups جدید ایجاد کرده و یک محدوده ۲ گیگابایتی برای آن تنظیم می‌کنیم. سپس می‌توانیم file group را اصلاح کرده و Quota Groups دارای حد 2 گیگابایتی را به file group اختصاص دهیم.
پس از آن، تلاش می‌کنیم تا data files های پایگاه‌داده PDB1 را گسترش دهیم و در این حین، یک خطا دریافت می‌کنیم، این خطا ناشی از آن است که PDB خواستار استفاده از فضای بیش‌تری نسبت به فضای تخصیص‌یافته به quota group، در دیسک‌ گروه‌ ASM است.

SQL> ALTER DISKGROUP flex_data MODIFY FILEGROUP sales_pdb1
SET ‘quota_group’ = ‘Q_GRP_SALES_PDB1’;
Diskgroup altered.
SQL> select FILEGROUP_NUMBER, NAME, CLIENT_NAME, USED_QUOTA_MB, QUOTAGROUP_NUMBER from v$asm_filegroup;
FILEGROUP_NUMBER NAME CLIENT_NAME USED_QUOTA_MB QUOTAGROUP_NUMBER

0 DEFAULT_FILEGROUP 0 1
1 SALES_CDB$ROOT SALES_CDB$ROOT 7120 3
2 SALES_PDB$SEED SALES_PDB$SEED 1496 1
3 SALES_PDB1 SALES_PDB1 1936 4
SQL> select quotagroup_number,name,used_quota_mb, quota_limit_mb
from v$asm_quotagroup;
QUOTAGROUP_NUMBER NAME USED_QUOTA_MB QUOTA_LIMIT_MB

1 GENERIC 1496 0
2 SALES_Q_GRP 0 12288
3 HR_Q_GRP 4120 5120
4 Q_GRP_SALES_PDB1 1936 2048
SQL> alter database datafile 10 resize 5G;
alter database datafile 10 resize 5G
*
ERROR at line 1:
ORA-01237: cannot extend datafile 10
ORA-01110: data file 10:
‘+FLEX_DATA/SALES/8AAAFEAC96597F17E0536438A8C0AD2C/DATAFILE/system.274.101027602
3’
ORA-17505: ksfdrsz:1 Failed to resize file to size 655360 blocks
ORA-15437: Not enough quota available in quota group Q_GRP_SALES_PDB1.