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 นี้จะไม่ได้ย้ายไปด้วย เราจะต้องย้ายเองโดยเข้าไปดูรายละเอียดการย้ายได้ที่นี้ครับ