วันพุธที่ 22 กรกฎาคม พ.ศ. 2552

ต้องการ recreate temporary tablespace

ต้องการลดขนาด tempfile แต่พบปัญหา ORA-03297: file contains used data beyond requested RESIZE value

SQL> ALTER DATABASE TEMPFILE '+DATA/DB/tempfile/temp.305.615032955' RESIZE 50M;

ALTER DATABASE TEMPFILE '+DATA/DB/tempfile/temp.305.615032955' RESIZE 50M
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value

การแก้ปัญหาก็คือ recreate temporary tablespace:

- สร้าง temporary tablespace และเปลี่ยน default เพราะป้องกันไม่เกิดปัญหากับ sessions ที่ต้องการใช้ temporary tablespace.

SQL> CREATE SMALLFILE TEMPORARY TABLESPACE "TEMP2" TEMPFILE '+DATA' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

Tablespace created.


SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE "TEMP2";

Database altered.


SQL> DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.


- เมื่อลบตัวเก่าแล้วก็สร้างใหม่อีกครั้ง พร้อมกับเปลี่ยน default ไปที่ temporary tablespace ตัวเดิม

SQL> CREATE SMALLFILE TEMPORARY TABLESPACE "TEMP" TEMPFILE '+DATA' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

Tablespace created.

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE "TEMP";

Database altered.

SQL> DROP TABLESPACE TEMP2 INCLUDING CONTENTS AND DATAFILES;

Tablespace dropped.


ตอนนี้เราก็ลดขนาด temporary tablespace เรียบร้อย... นี่เป็นวิธีง่ายๆ ใช่ไหมครับ;)

ไม่มีความคิดเห็น: