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 ได้แล้วครับ