Hybrid Partition Table در اوراکل 19c

 Hybrid Partition قابلیت جدیدی است که در اوراکل 19c ارائه شد با کمک این ویژگی می توان برای یک جدول، تلفیقی از پارتیشنهای external و internal را ایجاد نمود.

یادآوری: برای جدول یا پارتیشن از نوع external، صرفا متادیتا و شکل تعریف آن در بانک ذخیره خواهد شد و دیتای مرتبط با آن، در خارج از دیتابیس و در سطح سیستم عامل قرار می گیرد.

مثال: قصد داریم اطلاعاتی نظیر کدملی، نام، نام خانوادگی و کد سازمانی افراد را در جدولی به نام mytbl درج کنیم با دستور زیر، این جدول را بر اساس کد سازمانی پارتیشن بندی می کنیم:

CREATE TABLE mytbl(national_id NUMBER, name VARCHAR2(20),last_name VARCHAR2(20),org_id number)

PARTITION BY LIST (org_id)

    (

        PARTITION p1 VALUES (1),

        PARTITION p2 VALUES (2)

    );

قرار است اطلاعات افرادی که کد سازمانی آنها برابر با یک یا دو می باشند، به صورت internal در بانک ذخیره شوند:

insert into mytbl values(100,’ali’,’rezai’,1);

insert into mytbl values(101,’hadi’,’alavi’,1);

insert into mytbl values(102,’reza’,’karimi’,2);

insert into mytbl values(103,’hossein’,’akbari’,2);

commit;

بنا به دلایلی قصد داریم اطلاعات افرادی که کد سازمانی آنها برابر با سه یا چهار است را در خارج از دیتابیس و بصورت external نگهداری کنیم. اطلاعات در دو فایل part3.txt و part4.txt قرار دارند:

 [oracle@ol7 ~]$ cat /part3/part3.txt

104,javad,akbarian,3

105,mina,karimi,3

106,sima,kabiri,3

107,nima,kasiri,3

[oracle@ol7 ~]$ vi /part4/part4.txt

108,kimya,hasani,4

109,kobra,armani,4

110,kazem,kalvandi,4

111,usef,kalvani,4

برای دسترسی به این اطلاعات در محیط دیتابیس، دو directory با نامهای part3dir و part4dir را در این محیط ایجاد می کنیم:

SQL> create directory part3dir as ‘/part3’;

Directory created.

SQL> create directory part4dir as ‘/part4’;

Directory created.

با کمک قابلیت Hybrid Partition، دو پارتیشن از نوع external را به جدول mytbl اضافه می کنیم:

–فعال کردن خصیصه EXTERNAL PARTITION برای جدول mytbl:

ALTER TABLE mytbl

 ADD EXTERNAL PARTITION ATTRIBUTES

 (TYPE ORACLE_LOADER

  DEFAULT DIRECTORY part3dir

  ACCESS PARAMETERS (

  FIELDS TERMINATED BY ‘,’ (national_id,name,last_name,org_id)

  )

  );

–افزودن پارتیشنهای مورد نیاز:

ALTER TABLE mytbl ADD PARTITION p3 VALUES (3) EXTERNAL LOCATION (part3dir:’part3.txt’);

ALTER TABLE mytbl ADD PARTITION p4 VALUES (4) EXTERNAL LOCATION (part4dir:’part4.txt’);

با افزودن این دو پارتیشن، ساختار جدول به صورت زیر درخواهد آمد:

create table MYTBL

(

  national_id NUMBER,

  name        VARCHAR2(20),

  last_name   VARCHAR2(20),

  org_id      NUMBER

)

organization external

(

  type ORACLE_LOADER

  default directory PART3DIR

  access parameters

  (

    FIELDS TERMINATED BY ‘,’ (national_id,name,last_name,org_id)

  )

)

reject limit 0

partition by list (ORG_ID)

(

partition P1 values (1),

partition P2 values (2),

partition P3 values (3),

partition P4 values (4)

);

همچنین امکان دسترسی به اطلاعات ذخیره شده در محیط سیستم عامل هم فراهم خواهد شد به طور مثال، با دستور زیر، صرفا اطلاعات افرادی که کد سازمانی آنها برابر با 3 است را مشاهده خواهیم کرد:

select * from mytbl where org_id=3;

execution plan مربوط به کدسازمانی دو و سه را در ادامه می بینید:

select * from mytbl where org_id=2;

select * from mytbl where org_id=3;

در پایان تعدادی از ویژگی ها و محدودیتهای قابلیت Hybrid Partition را بر می شماریم.

1.برای این نوع از جداول، صرفا می توان از partial index استفاده کرد:

SQL> create index ind1 on mytbl(name);

 ORA-14354: operation not supported for a hybrid-partitioned table

SQL> create index ind1 on mytbl(name) local;

 ORA-14354: operation not supported for a hybrid-partitioned table

SQL> create index ind1 on mytbl(name) indexing partial;

 Index created

SQL> create index ind1 on mytbl(name) local indexing partial;

 Index created

2.دستورات DMLای صرفا بر روی پارتیشنهای از نوع internal قابل اجرا خواهند بود:

SQL> insert into mytbl values(130,’hossein’,’zaker’,4);

 ORA-14466: Data in a read-only partition or subpartition cannot be modified.

SQL> insert into mytbl values(130,’hossein’,’zaker’,1);

 1 row inserted

3.امکان اضافه کردن انواع داده LOB و LONG در این نوع از جداول وجود ندارد:

SQL> alter table MYTBL add pic blob;

ORA-03001: unimplemented feature

SQL> alter table MYTBL add id number;

 Table altered

4.برای مشاهده اسامی جداولی که از این قابلیت استفاده می کنند، می توان از پرس و جوی زیر بهره گرفت:

select TABLE_NAME,HYBRID from user_tables  where HYBRID=’YES’;

Comment (1)

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

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