همانطور که می دانید، در زمان اجرای پروسیجر 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 ;

نکاتی در مورد نامگذاری اشیا در اوراکل
در این متن به مرور نکاتی در زمینه نامگذاری اشیا در دیتابیس اوراکل می پردازیم.
نکته 1: اشیاهای زیر namespace مختص به خود را دارند و امکان تکرار اسامی در بین این objectها وجود دارد:
Indexe – Constraint – Cluster – Database trigger – Private database link – Dimension
مثال: با اجرای دستورات زیر، constraint و database link همنامی را ایجاد می کنیم:
SQL> alter table TBL1 add constraint name1 primary key (FILE#);
Table altered
SQL> create database link name1 connect to usef identified by pa using ‘mydb’;
Database link created
همچنین objectهای زیر namespace مشترکی دارند و تکرار اسامی در بین آنها، امکان پذیر نمی باشد:
Table – View – Sequence – Private synonym – Stand-alone procedure – Stand-alone stored function – Package – Materialized view – User-defined type
مثال: در این مثال می بینید که امکان استفاده از نام مشترک برای view و table وجود ندارد:
SQL> create table v1 as select * from v$datafile;
Table created
SQL> create view v1 as select * from dual;
ORA-00955: name is already used by an existing object
مخاطرات اهدای مجوز create any job به کاربران
با اهدای مجوز سیستمی create any job به یک کاربر، آن کاربر می تواند بدون اطلاع کاربران دیگر، برای آنها جاب ایجاد کند که در این صورت، کاربری که جاب را ایجاد می کند، creator و کاربری که جاب برای آن ایجاد می شود، owner نامیده می شود.
جاب ایجاد شده با مجوز owner اجرا می شود این مسئله به creator این امکان را می دهد تا با ایجاد جاب برای کاربران با سطح دسترسی بالا، مجوزی را برای خود اخذ کنند.
بررسی تغییرات dbms_job در اوراکل 19c
تا قبل از اوراکل نسخه 10g، برای ایجاد جاب در محیط دیتابیس، از بسته dbms_job استفاده می شد در نسخه 10g بهبودی در این زمینه ایجاد شد و اوراکل با ارائه بسته dbms_scheduler، بسیاری از نقاط ضعف dbms_job را پوشش داد و عملا استفاده از این بسته را به حداقل رساند.
اما با این حال، کاربران می توانند کماکان از این بسته(dbms_job) برای تعریف جاب جدید و یا مدیریت جابهای قبلی(جابهای ایجاد شده در نسخه های قدیمی تر) استفاده کنند و حتی اوراکل هم برای زمانبندی بعضی از کارها، از همین بسته استفاده می کند.
pin کردن object در shared pool
می دانیم که shared pool فرم پارس شده دستورات sql و pl/sql را در صورت دارا بودن فضای کافی در خود نگهداری می کند و نسخه قابل اجرای دستورات، در این قسمت از حافظه باقی خواهند ماند تا در صورت اجرای مکرر یک دستور، از کامپایل مجدد آن و یا به بیانی دقیق تر، از انجام عملیات hard pars جلوگیری شود.
فرض کنید به دلایلی چون عدم استفاده از bind variable در قسمتی از برنامه، فضای خالی ای در shared pool باقی نمانده است در این صورت، اوراکل فرمهای پارس شده را بر اساس الگوریتم LRU از حافظه خارج خواهد کرد این مسئله ممکن است سبب age out شدن objectهای سیستمی و یا applicationای شود که به کررات مورد دستیابی قرار می گیرند.
با در نظر داشتن این مسئله، قصد داریم به این سوال پاسخ دهیم که چگونه می توان این objectها را در shared pool سنجاق کرد تا الگوریتم LRU نتواند آنها را برای خروج از shared pool انتخاب کند.
اوراکل 12c – جابجایی ترتیب قرارگیری ستونهای یک جدول
فرض کنید جدول mytbl را با دستور زیر ایجاد کرده ایم:
SQL> create table mytbl(id number,name varchar2(9),age number);
Table created
بعد از مدتی تصمیم گرفته ایم تا به این جدول، ستونی را با عنوان last_name اضافه کنیم:
SQL> ALTER TABLE mytbl ADD (last_name varchar2(9));
Table altered
ستون last_name به لحاظ ترتیب قرار گیری بصورت پیش فرض، به عنوان آخرین ستون این جدول در انتهای لیست ستونها قرار می گیرد:
SQL> desc mytbl;
Name Type Nullable
——— ———– ——–
ID NUMBER Y
NAME VARCHAR2(9) Y
AGE NUMBER Y
LAST_NAME VARCHAR2(9) Y
قصد داریم ستونهای AGE و LAST_NAME را به لحاظ ترتیب منطقی قرارگیری در جدول با هم جابجا کنیم، برای این کار می توانیم از دستور ALTER TABLE .. MODIFY(COLUMN_NAME INVISIBLE) که در اوراکل 12c ارائه شد، استفاده کنیم. در قسمت زیر، نحوه انجام این کار را مشاهده می کنید:
SQL> ALTER TABLE mytbl MODIFY (LAST_NAME INVISIBLE,AGE INVISIBLE);
Table altered
SQL> ALTER TABLE mytbl MODIFY (LAST_NAME VISIBLE,AGE VISIBLE);
Table altered
SQL> desc mytbl;
Name Type Nullable Default Comments
——— ———– ——– ——- ——–
ID NUMBER Y
NAME VARCHAR2(9) Y
LAST_NAME VARCHAR2(9) Y
AGE NUMBER Y
بهبودهای EZconnect در اوراکل 19c
زمانی که از پروتکل tcp/ip برای برقراری ارتباط با یک دیتابیس اوراکل استفاده می کنیم، اتصال به روش Easy Connect در مواردی می تواند جایگزین مناسبی برای فایل tnsnames.ora باشد. ساختار کلی Easy Connect تا قبل از اوراکل نسخه 19c، به صورت زیر می باشد:
host[:port][/service_name]
اهدای مجوز 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
مثالی در مورد مفهوم read consistency
در زمان اجرای یک پرس و جوی زمانبر، ممکن است تغییراتی در جداول مرجع این پرس وجو اعمال شود در این صورت، سوالی مطرح می شود که آیا این پرس و جوی در حال اجرا، تغییرات جدید را هم در محاسباتش اعمال می کند یا خیر؟
پاسخ این سوال به نوع جداول و ویوهای مرجع پرس و جو بستگی دارد برای مثال، در زمان رجوع به dynamic performance viewها ممکن است تغییرات ایجاد شده در زمان اجرای پرس و جو لحاظ شود و نهایتا خروجی آن پرس و جو را تغییر دهد.
اما در زمان رجوع به جداولی که اطلاعات کاربران در آن ذخیره می شود، اوراکل با لحاظ کردن scn زمان اجرای پرس و جو(زمانی که پرس و جو شروع به اجرا می کند)، تغییرات جدید را در آن اعمال نخواهد کرد.
در صورتی که تغییرات جدید در محاسبات اعمال نشوند و اوراکل صرفا با کمک تصویر ثابتی که از اطلاعات جدول دارد، پرس و جو را اجرا کند، اصطلاحا مفهوم read consistency توسط اوراکل رعایت شده است.