حذف ایندکسهای ایجاد شده با فیچر Auto Indexing

ایندکسهای از نوع auto index را نمی توان با دستور drop index حذف کرد:

SQL> select index_name,auto from dba_indexes where AUTO=’YES’;

INDEX_NAME                   AUTO

———————-               ——–

SYS_AI_9qxxvpz1p5359    YES

SQL> drop index “SYS_AI_9qxxvpz1p5359”;

ORA-65532: cannot alter or drop automatically created indexes

همچنین امکان قرار دادن این نوع از ایندکسها در حالت unusable و invisible هم وجود ندارد(به صورت متعارف):

SQL> alter index “SYS_AI_9qxxvpz1p5359” unusable;

ORA-65532: cannot alter or drop automatically created indexes

SQL> alter index “SYS_AI_9qxxvpz1p5359” invisible ;

ORA-65532: cannot alter or drop automatically created indexes

به صورت کلی در نسخه 19cR3 برای حذف این دسته از ایندکسها، راهکاری در داکیومنتهای اوراکل ارائه نشده و برای حذف این نوع از ایندکسها به ناچار باید آنها را به tablespace مجزایی منتقل نمود و در نهایت tablespace را حذف کرد:

SQL> select parameter_value from dba_auto_index_config p where p.parameter_name=’AUTO_INDEX_DEFAULT_TABLESPACE‘;

PARAMETER_VALUE

—————-

AUOTOINDEXTBS

SQL> create tablespace tbsindxAUTO;

Tablespace created

SQL> alter index usef.”SYS_AI_9qxxvpz1p5359″ rebuild tablespace tbsindxAUTO online;

Index altered

SQL> select tablespace_name from user_segments p where p.segment_name= ‘SYS_AI_9qxxvpz1p5359’;

TABLESPACE_NAME

——————————

TBSINDXAUTO

SQL> drop tablespace TBSINDXAUTO including contents and datafiles;

Tablespace dropped

SQL> select owner,index_name,table_name,index_type,auto from dba_indexes where AUTO=’YES’;

no rows selected

در نسخه 19cR5، پروسیجری به نام DROP_AUTO_INDEXES به بسته DBMS_AUTO_INDEX اضافه شد که حذف این دسته از ایندکسها را بسیار ساده تر کرده است:

SQL> select BANNER_FULL from v$version;

BANNER_FULL

—————————-

Version 19.8.0.0.0

SQL> exec DBMS_AUTO_INDEX.DROP_AUTO_INDEXES(owner=>’USEF’, index_name=>'”SYS_AI_9qxxvpz1p5359″‘, allow_recreate=>true);

PL/SQL procedure successfully completed

*مقدار پیش فرض پارامتر allow_recreate برابر false می باشد.

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.