Oracle Tips : How to move LOBSEGMENT, LOBINDEX

Oracle Tips : How to move LOBSEGMENT, LOBINDEX

Oracle Tips วันนี้จะพูดถึงการย้าย Objects ที่เป็น LOBSEGMENT, LOBINDEX ไปยัง Tablespace ใหม่จะมีวิธีการอย่างไร มาดูเกล็ดเล็กๆกัน

สมมติว่า เราสร้างตารางข้อมูลที่มีฟิลด์เป็น BLOB, CLOB. Oracle จะทำการสร้าง Objects ที่เป็น LOBSEGMENT, LOBINDEX ด้วย ดังตัวอย่าง

SQL> create table TESTTAB ( col1 clob );

Table created.

SQL> select segment_name,segment_TYPE,tablespace_name from user_segments;

SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME
—————————— —————— ——————-

SYS_IL0000051546C00001$$       LOBINDEX                USER_DATA
SYS_LOB0000051546C00001$$      LOBSEGMENT         USER_DATA
TESTTAB                                                            TABLE                        USER_DATA

คราวนี้ถ้าเราต้องการจะย้ายตาราง TESTTAB พร้อมทั้งย้าย LOBINDEX, LOBSEGMENT จาก tablespace USER_DATA –> NEWUSER_DATA เราจะได้ดังนี้

1.  Move Table “TESTTAB”

SQL> alter table TESTTAB move tablespace NEWUSER_DATA ;

Table altered.

เมื่อตรวจสอบดูว่า Table TESTTAB ไปจริงหรือเปล่า

SQL> select segment_name,segment_TYPE,tablespace_name from user_segments;

SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME
—————————— —————— ————————-

SYS_IL0000051546C00001$$       LOBINDEX           USER_DATA
SYS_LOB0000051546C00001$$      LOBSEGMENT         USER_DATA
TESTTAB                                                              TABLE                     NEWUSER_DATA

พบว่าเฉพาะตาราง TESTTAB ที่ย้ายไปอยู่ที่ Tablespace ใหม่ แต่ LOBINDEX ,LOBSEGMENT ยังไม่ได้ย้าย เพราะฉะนั้นเราจะทำการย้ายเพิ่มดังขั้นตอนที่ 2

2. Move LOBSEGMENT, LOBINDEX

คำสั่งในการย้าย LOBSEGMENT, LOGINDEX มีรูปแบบดังนี้

alter table <TABLE_NAME> move LOG (<Column blob, clob name>) store as ( TABLESPACE <New tablespace name>);

ดังตัวอย่าง

SQL> alter table TESTTAB move LOB (COL1) store as (TABLESPACE NEWUSER_DATA);

Table altered.

ลองตรวจสอบดูอีกครั้งว่าย้ายไปจริงหรือเปล่า ดังนี้

SQL> select segment_name,segment_TYPE,tablespace_name from user_segments;

SEGMENT_NAME                   SEGMENT_TYPE       TABLESPACE_NAME
—————————— —————— ————————

TESTTAB                                                     TABLE              NEWUSER_DATA
SYS_IL0000051546C00001$$       LOBINDEX           NEWUSER_DATA
SYS_LOB0000051546C00001$$      LOBSEGMENT         NEWUSER_DATA

เท่านี้เราก็สามารถย้าย Objects ที่เป็น LOBSEGMENT, LOBINDEX ได้แล้วครับ

You may also like...

Leave a Reply

Your email address will not be published.