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’;

سون لرن • آموزش...
ما را در سایت سون لرن • آموزش دنبال می کنید

برچسب : نویسنده : استخدام کار 7learn بازدید : 335 تاريخ : سه شنبه 4 تير 1398 ساعت: 14:00

خبرنامه