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

حال زمانی را در نظر بگیرید که یکی از ستونهای جدول saltbl در حالت INVISIBLE قرار دارد، در این صورت، با طی کردن سناریوی قبلی، به خطا برخواهیم خورد:

SQL> desc saltbl;

Name      Type         Nullable Default Comments

——— ———— ——– ——- ——–

ID        NUMBER       Y                        

NAME      VARCHAR2(10) Y                        

LAST_NAME VARCHAR2(10) Y                        

SALARY    NUMBER       Y                        

TIME_     DATE         Y                        

SQL> ALTER TABLE saltbl MODIFY salary INVISIBLE;

Table altered

SQL> desc saltbl;

Name      Type         Nullable Default Comments

——— ———— ——– ——- ——–

ID        NUMBER       Y                         

NAME      VARCHAR2(10) Y                        

LAST_NAME VARCHAR2(10) Y                        

TIME_     DATE         Y                        

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

Table created

SQL> desc EXCHTBL2

Name      Type         Nullable Default Comments

——— ———— ——– ——- ——–

ID        NUMBER       Y                        

NAME      VARCHAR2(10) Y                         

LAST_NAME VARCHAR2(10) Y                        

TIME_     DATE         Y     

SQL> ALTER TABLE SALTBL EXCHANGE PARTITION P2019 WITH TABLE EXCHTBL2;

ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITION

همانطور که می بینید، به دلیل آنکه ستون salary در جدول EXCHTBL2 موجود نیست، دستور EXCHANGE PARTITION با خطا مواجه شده است.

برای رفع این مشکل، اوراکل در نسخه 12cR2، عبارت for exchange with را به دستور create table اضافه کرده است که با کمک ان می توان جدولی مشابه ساختار جدول پارتیشن شده را برای انجام عملیات EXCHANGE PARTITION ایجاد نمود. با این کار، همه ستونهای مخفی اعم از invisible، virtual، unused و همچنین محدودیت not null در جدول جدید هم موجود خواهد بود:

SQL> CREATE TABLE EXCHTBL3 FOR EXCHANGE WITH TABLE SALTBL;

Table created

SQL> desc EXCHTBL3

Name      Type         Nullable Default Comments

——— ———— ——– ——- ——–

ID        NUMBER       Y                        

NAME      VARCHAR2(10) Y                        

LAST_NAME VARCHAR2(10) Y                         

TIME_     DATE         Y                        

SALARY    NUMBER       Y  

SQL> ALTER TABLE SALTBL EXCHANGE PARTITION P2019 WITH TABLE EXCHTBL3;

Table altered

SQL> select count(*) from EXCHTBL3;

  COUNT(*)

———-

     70000

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

Comment (1)

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

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