Oracle Troubleshoot : ORA-00997: illegal use of LONG datatype

Oracle Troubleshoot : ORA-00997: illegal use of LONG datatype

โดยปกติการสร้างตารางที่มีฟิลด์ที่ต้องการเก็บข้อมูลจำนวนมากกว่า 4,000 Bytes แต่เดิมจะกำหนดเป็น “LONG” datatype แต่ต่อมาเราจะพบว่า เวลาเราต้องการย้ายตารางที่มี “LONG” datatype จะไม่สามารถทำได้ ซึ่งเราจะพบว่ามีข้อความผิดพลาดแสดงดังนี้

SQL> alter table TESTTAB2 move tablespace NEWUSER_DATA;

ERROR at line 1:

ORA-00997: illegal use of LONG datatype

เนื่องจาก Datatype “LONG” มีข้อจำกัดในการใช้งานมาก จึงมีข้อแนะนำว่าให้เราเปลี่ยน Datatype จาก LONG –> CLOB or BLOB ก็ได้ จะทำให้ไม่มีปัญหาในการย้ายหรือเปลี่ยน Tablespace เลย ดังนี้

1. เปลี่ยน Datatype จาก LONG –> CLOB

SQL> alter table TESTTAB2 modify (COL2 CLOB);

 Table altered.

2. ทำการย้ายตารางไปยัง tablespace NEWUSER_DATA

SQL> alter table TESTTAB2 move tablespace NEWUSER_DATA;

 Table altered.

เท่านี้เป็นอันจบ แต่ทว่าการสร้าง Objects แบบ clob or blob. Oracle จะทำการสร้าง LOBSEGMENT, LOBINDEX เพราะฉะนั้นในการย้ายตาราง 2 objects นี้จะไม่ได้ย้ายไปด้วย เราจะต้องย้ายเองโดยเข้าไปดูรายละเอียดการย้ายได้ที่นี้ครับ

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *