اوراکل 12c-بهبودهایی در زمینه جمع آوری آمار Global Temporary Table

تا قبل از اوراکل 12c، رفتار اوراکل در زمان جمع آوری آمار برای جداول از نوع (global temporary table(GTT تفاوتی با جداول معمولی نداشت و این مسئله می توانست در مواردی چالش برانگیز باشد.

در اوراکل 12c بهبودهایی در این زمینه حاصل شد که در ادامه دو مورد از این بهبودها را مشاهده می کنید.

(بیشتر…)

بررسی enq: TX – allocate ITL entry به همراه یک سناریو

دیتابیس اوراکل برای پیاده سازی مفاهیمی چون Data Concurrency و Read Consistency، مشخصات تراکنشها را در قسمتی از هدر بلاک ثبت می کند. این قسمت از هدر بلاک که به آن (Interested Transaction List(ITL هم گفته می شود، می تواند شامل تعدادی slot باشد.

تراکنشها برای تصاحب یک رکورد، باید slotای را در هدر بلاکی که رکورد در آن قرار دارد، در اختیار بگیرند و اطلاعاتی نظیر (transaction ID(XID و (undo block address(UBA و همچنین تعداد رکوردهایی که تراکنش در این بلاک قفل کرده را در این قسمت ثبت کنند البته هر slot صرفا به یک transaction تعلق دارد و هر transaction در هر بلاک، تنها می تواند یک slot را اشغال کند.

با انجام commit و rollback و متعاقب آن، پایان یافتن تراکنش، itl slot می تواند توسط تراکنش دیگری استفاده شود.

(بیشتر…)

rollback کردن عملیات REDEFINITION(اوراکل 12c)

زمانی را تصور کنید که ساختار جدول حجیمی را با کمک بسته DBMS_REDEFINITION تغییر داده ایم. بعد از اتمام عملیات redefinition، به این نتیجه رسیده ایم که تغییر انجام شده، سبب کندی در عملیاتی که بر روی این جدول انجام می شوند، شده است. قصد داریم جدول را به ساختار پارتشن نشده قبل برگردانیم، راهکار چیست؟

یکی از بهبودهایی که در نسخه 12c به بسته DBMS_REDEFINITION اضافه شد، قابلیت rollback کردن عملیات انجام شده می باشد این کار به کمک پارامتر enable_rollback از بسته DBMS_REDEFINITION قابل انجام است.

(بیشتر…)

انجام عملیات redefinition در یک مرحله با کمک پروسیجر REDEF_TABLE (اوراکل 12c)

همانطور که می دانید در اوراکل 11g، برای هرگونه استفاده از بسته DBMS_REDEFINITION باید مراحلی را طی نمود و انجام عملیات در یک گام امکان پذیر نمی باشد.

در اوراکل نسخه 12c، پروسیجر جدیدی به نام REDEF_TABLE به بسته DBMS_REDEFINITION اضافه شده است که از طریق ان می توان عملیاتی نظیر جابجایی انلاین و تغییر tablespace جداول و همچنین تغییر نوع فشرده سازی جداول و ایندکسها را صرفا در یک مرحله انجام داد.

(بیشتر…)

پارامتر dml_lock_timeout در بسته DBMS_REDEFINITION(اوراکل 12c)

همانطور که می دانید، در زمان  اجرای پروسیجر FINISH_REDEF_TABLE، باید برای مدت زمان کوتاهی جدول به صورت exclusive قفل شود تا اجرای پروسیجر با موفقیت خاتمه یابد در غیر این صورت، اجرای این پروسیجر تا اتمام تراکنشهایی دیگری که بر روی جدول در حال اجرا هستند، متوقف و در حالت انتطار باقی خواهد ماند:

(بیشتر…)

مشاهده پیشرفت عملیات REDEFINITION با کمک ویوی V$ONLINE_REDEF

در اوراکل نسخه 12c، با کمک ویوی V$ONLINE_REDEF می توان روند پیشرفت عملیات REDEFINITION را به صورت انلاین دنبال کرد:

SQL> exec DBMS_REDEFINITION.REDEF_TABLE(‘USEF’,’MYTBL’,’ROW STORE COMPRESS ADVANCED’);

SQL> select ORIGINAL_TABLE_NAME,INTERIM_TABLE_NAME,OPERATION,SUBOPERATION,PROGRESS from V$ONLINE_REDEF ;

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

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

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

(بیشتر…)

ویژگی 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

(بیشتر…)

اهدای مجوز insert و update در سطح ستون

مجوزهای insert و update را می توان در سطح ستونهای یک جدول به کاربران اهدا نمود.

دستور grant در مثال زیر، مجوز اجرای دستور update بر روی ستونهای name و last_name از جدول sys.mytbl را به کاربر usef اهدا می کند:

SQL> create table sys.mytbl(id number,name varchar2(9),last_name varchar2(9));

Table created

SQL> insert into sys.mytbl values(1,’vahid’,’usefzadeh’);

1 row inserted

SQL> commit;

Commit complete

SQL> grant update(name,last_name) on mytbl to usef;

Grant succeeded

(بیشتر…)

آشنایی با مفهوم Editioning و پارامترهای آن در دیتاپامپ

احتمالا تاکنون هنگام ایجاد یک آبجکت مانند ویو، با این خطا مواجه شده اید:

ORA-00955: name is already used by an existing object

همانطور که می دانید این خطا زمانی رخ می دهد که آبجکتی با نام مورد نظر قبلا در بانک موجود باشد.

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

مسلما ایجاد این آبجکتها با ساختار و نام جدید، نیاز به تغییرات در برنامه کاربردی دارد، که البته این موضوع خوشایند و مطلوب برنامه نویسان وکاربران نمی باشد.

اوراکل از نسخه ی 11g به بعد، قابلیت جدیدی با عنوان editioning را به پایگاه داده خود افزوده است.

(بیشتر…)