اوراکل 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

فیکس کردن plan بعضی از دستورات بعد از ارتقای دیتابیس

بعد از ارتقای دیتابیس به نسخه ای بالاتر، ممکن است زمان اجرای بعضی از پرس و جوها افزایش پیدا کند. این کندی می تواند به تغییراتی که در رفتار optimizer در هر نسخه از اوراکل ایجاد می شود، برگردد.

در جدول زیر اسامی تعدادی از قابلیتهایی که توسط optimizer در نسخه 11g و 12c قابل استفاده است را مشاهده می کنید:

در این متن به دنبال روشی هستیم که تغییر رفتار optimizer، در دو نسخه مختلف اوراکل را برای یک پرس و جوی مشخص نمایش داده و سپس با کمک قابلیت SQL Plan Management، پلن اجرایی ایجاد شده توسط optimizer، در یکی از این نسخه ها را برای پرس و جوی مورد نظر، فیکس کنیم.

(بیشتر…)

بررسی تغییرات dbms_job در اوراکل 19c

تا قبل از اوراکل نسخه 10g، برای ایجاد جاب در محیط دیتابیس، از بسته dbms_job استفاده می شد در نسخه 10g بهبودی در این زمینه ایجاد شد و اوراکل با ارائه بسته dbms_scheduler، بسیاری از نقاط ضعف dbms_job را پوشش داد و عملا استفاده از این بسته را به حداقل رساند.

اما با این حال، کاربران می توانند کماکان از این بسته(dbms_job) برای تعریف جاب جدید و یا مدیریت جابهای قبلی(جابهای ایجاد شده در نسخه های قدیمی تر) استفاده کنند و حتی اوراکل هم برای زمانبندی بعضی از کارها، از همین بسته استفاده می کند.

(بیشتر…)

بهبودهای EZconnect در اوراکل 19c

زمانی که از پروتکل tcp/ip برای برقراری ارتباط با یک دیتابیس اوراکل استفاده می کنیم، اتصال به روش Easy Connect در مواردی می تواند جایگزین مناسبی برای فایل tnsnames.ora باشد. ساختار کلی Easy Connect تا قبل از اوراکل نسخه 19c، به صورت زیر می باشد:

host[:port][/service_name]

(بیشتر…)

اوراکل 12cR2- مروری بر دو بهبود ساده در دیتاپامپ

اوراکل 12c قابلیتهای را در زمینه Data Pump ارائه کرد که قبلا بعضی از آنها را مورد بررسی قرار داده ایم. در این متن به دو بهبود ساده اوراکل 12cR2 در این زمینه خواهیم پرداخت.

(بیشتر…)

بهبودی در جمع آوری خودکار آمار در اوراکل 19c

در محیطهای که نرخ تغییر داده نسبتا زیاد است، شاید استفاده از آمارهای بروز شده از طریق automated maintenance taskهای شبانه، چندان کارا نباشد با این نگاه، اوراکل در نسخه 19c، قابلیتهای جدیدی را در زمینه جمع آوری و بروزرسانی خودکار Statistic ارائه کرده که قبلا در مقاله ای یکی از این قابلیتها را که Real-time Statistic نام داشت، مورد بررسی قرار دادیم.

در این مقاله قصد داریم به یکی دیگر از این قابلیتها که High-frequency Optimizer Statistics Collection نام دارد، بپردازیم.

(بیشتر…)