اوراکل 12cR2 – پارتیشن بندی external table

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

اوراکل در نسخه 12c قابلیت پارتیشن بندی external table را ارائه کرده است که میتواند در سرعت دستیابی به اطلاعات این نوع از جداول بهبودی را ایجاد کند. در ادامه این متن، به بررسی این قابلیت خواهیم پرداخت.

(بیشتر…)

معتبر ماندن وضعیت ایندکسهای Global در حین انجام عملیات Drop و Truncate پارتیشنها

می دانیم که در اوراکل 11g با حذف و یا truncate کردن پارتیشنهای یک جدول، ایندکسهای GLOBAL مربوط به آن جدول هم در وضعیت unusable قرار می گیرند مگر انکه در حین اجرای دستور alter table .. drop partition از عبارت  update indexes استفاده شود در این صورت، ایندکسهای از نوع global این جدول در صورت وجود، بصورت فوری بازسازی خواهند شد و دستور تا بازسازی کامل این ایندکسها، به کارش خاتمه نخواهد داد.

(بیشتر…)

اوراکل 12c – بهبودی در جمع آوری آمار به صورت Incremental برای جداول پارتیشن شده

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

در این صورت با هر بار اجرای بسته dbms_stat، از همه پارتیشنهای این جدول، مجددا امار جمع اوری خواهد شد حتی پارتیشنهایی که اطلاعات ان بروزرسانی نشده است.

(بیشتر…)

اعمال فیلترینگ در حین انجام عملیات بر روی جداول پارتیشن شده

در اوراکل 12cR2، می توان حین انجام عملیاتی چون alter table .. modify partition، move partition، split partition، بعضی از رکوردها را فیلتر کرد و یا به بیانی دقیق تر، کنار گذاشت. این کار با اضافه کردن عبارت INCLUDING ROWS WHERE در انتهای دستور alter table قابل انجام است.

(بیشتر…)

ویژگی auto-list partitioning در اوراکل 12cR2

در اوراکل 11g، زمانی که یک جدول با متد list  پارتیشن بندی می شود، تعداد پارتیشنها ثابت خواهد بود و در صورتی که قصد درج مقداری خارج از مقادیر تعریف شده برای partition key را داشته باشیم، با خطا مواجه خواهیم شد(در صورت عدم تعریف default partition):

SQL> CREATE TABLE person( id NUMBER, name VARCHAR2(30),EYE_COLOR VARCHAR2(10) )

  2  PARTITION BY LIST (EYE_COLOR)

  3  (PARTITION p1 VALUES (‘BL’),

  4   PARTITION p2 VALUES (‘GR’)

  5  );

Table created

SQL> insert into person values(1,’hadi’,’BC’);

ORA-14400: inserted partition key does not map to any partition

(بیشتر…)

اوراکل 12c – جابجایی آنلاین پارتیشن ها

در اوراکل 11g، جابجا کردن پارتیشنهای یک جدول، سبب ایجاد کندی در دستورات DMLای که بر روی ان پارتیشن اجرا می شوند، خواهد شد. در قسمت زیر، این مسئله را مشاهده می کنید:

–session 1:

SQL> select sid,serial# from v$session where sid=sys_context(‘USERENV’, ‘SID’) ;

       SID    SERIAL#

———- ———-

       303      46939

SQL> alter table usef.mytbl move partition p_2010;

Runing…

–session 2:

SQL> insert into usef.mytbl values(1,TO_date(‘1-1-2009’, ‘DD-MM-YYYY’));

Waiting…

–session 3:

SQL> SELECT DECODE(request, 0, ‘Blocker: ‘, ‘Waiter: ‘) || sid sid, lmode,request,type  FROM V$LOCK

 WHERE (id1, id2, type) IN

       (SELECT id1, id2, type FROM V$LOCK WHERE request > 0)

 ORDER BY id1, request;

SID                  LMODE    REQUEST TYPE

————— ———- ———- ——

Blocker: 303             6          0 TM

Waiter: 68               0          3 TM

(بیشتر…)

اوراکل 12cR2 – بهبودی در انجام عملیات EXCHANGE PARTITION

در صورتی که قصد داریم جدولی را برای انجام عملیات EXCHANGE PARTITION ایجاد کنیم، باید ساختار این جدول مشابه با ساختار جدول پارتیشن شده باشد تا امکان انجام عملیات EXCHANGE بین جدول جدید و پارتیشن مورد نظر فراهم شود:

SQL> create table EXCHTBL as select * from SALTBL where 1=2;

Table created

SQL> ALTER TABLE SALTBL EXCHANGE PARTITION P2020 WITH TABLE EXCHTBL;

Table altered

SQL> select count(*) from EXCHTBL;

  COUNT(*)

———-

70000

(بیشتر…)

read only کردن پارتیشنهای یک جدول

از اوراکل 11g می توان یک جدول را در حالت read only قرار داد:

SQL> alter table usef.mytbl read only;

Table altered.

SQL>  alter table usef.mytbl read write;

Table altered.

اما در این نسخه و همچنین نسخه 12cR1، قابلیت قرار دادن پارتیشنی از جدول در حالت read only  وجود ندارد:

SQL*Plus: Release 12.1.0.2.0 Production on Sat Dec 14 17:10:54 2019

SQL> alter session set container=PDB12R1;

Session altered.

SQL> alter table usef.mytbl modify partition p_2000 read only;

ORA-14049: invalid ALTER TABLE MODIFY PARTITION option

(بیشتر…)

ویژگی Multi-column list partitioning در اوراکل 12cR2

تا قبل از اوراکل 12cR2، پارتیشن بندی به روش list، صرفا بر اساس یک ستون قابل انجام بود به عبارت دیگر، تنها می توان یک ستون را به عنوان partition key مشخص کرد در غیر این صورت، با خطای ORA-14304 مواجه خواهیم شد:

SQL*Plus: Release 12.1.0.2.0 Production on Sat Dec 14 17:10:54 2019

SQL> CREATE TABLE person( id NUMBER, name VARCHAR2(30),EYE_COLOR VARCHAR2(10),blood_group VARCHAR2(10))

    PARTITION BY LIST (EYE_COLOR,blood_group)

    (PARTITION p1 VALUES (‘BL’,’B+’),

      PARTITION p2 VALUES (‘BL’,’O-‘),

      PARTITION p3 VALUES (‘GR’,’A+’),

      PARTITION p4 VALUES (‘GR’,’B+’),

      PARTITION p5 VALUES(default)

    );

ORA-14304: List partitioning method expects a single partitioning column

(بیشتر…)

امکان اجرای عملیات بر روی چند پارتیشن

در اوراکل 12c می توان با اجرای صرفا یک دستور، چندین پارتیشن را حذف نمود(DROP PARTITION) و یا چندین پارتیشن را به جدول اضافه کرد(ADD PARTITION).

SQL> alter table mytbl drop partition P_2000,SYS_P900;

Table altered

SQL> alter table mytbl add partition P_2000  VALUES LESS THAN (TO_DATE(‘ 2000-01-01 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’)),partition SYS_P900  VALUES LESS THAN (TO_DATE(‘ 2040-01-01 00:00:00’, ‘SYYYY-MM-DD HH24:MI:SS’));

Table altered