ขอคืนพื้นที่ เนื่องจาก Disk ไม่เพียงพอครับ สำหรับใครที่ลองทำที่เครื่อง Develop พบปัญหานี้กันบ่อยๆครับ ตัวฐานข้อมูลเหมือนกับครับ สำหรับ DB2 ที่ลึกๆแล้วเป็นการเก็บข้อมูลในรูปแบบ File ที่เรียกว่า Table Space ครับ ซึ่งเมื่อเราทำอะไรเยอะๆ เข้า Insert เยอะๆ ตัวพื้นที่ถูกจองไปเรื่อยๆครับ แต่ถ้าลบข้อมูลออกมันไม่คืนพื้นที่นะครับ ถ้าจะบังคับให้คืนต้องไปเคลียร์ตัว Table Space ครับ
ขั้นตอนการขอคืนพื้นที่
- ตรวจสอบพื้นที่ Disk ที่เหลือก่อนแก้ไขครับ
- เชื่อมต่อฐานข้อมูลที่ต้องการขอคืนพื้นที่ ด้วยคำสั่ง
db2 connect to <ชื่อฐานข้อมูล> user <ผู้ใช้งาน DB> using <รหัสผ่าน DB>
- ตรวจสอบ Table Space ที่ใช้ด้วยคำสั่ง
db2 list tablespaces show detail
- จากผลที่ได้ เราสนใจที่ USERSPACE1 ครับ โดยดูในส่วนของ Free Page ครับ
- ขอคืนพื้นที่ด้วยคำสั่ง
db2 alter tablespace <<ชื่อ Table Space>> reduce max;
- ในกรณีเราต้องการขอคืนพื้นที่ให้ USERSPACE1 ครับ ใช้คำสั่ง ดังนี้
db2 alter tablespace USERSPACE1 reduce max;
- ตรวจสอบ Table Space อีกครั้ง ด้วยคำสั่ง
db2 list tablespaces show detail
- ผลลัพธ์ที่ได้ครับ พบว่าในส่วนของ Free Page เหลือ 0 ครับ ขอคืนพื้นที่ได้แล้วส่วนนึงครับ
- ตรวจสอบพื้นที่ Disk หลังแก้ไขครับ พบว่าได้คืนมา 200 MB ครับ
ข้อควรระวัง
- ผมได้ทดสอบกับเครื่อง Develop เท่านั้นนะครับ สำหรับเครื่อง Production ก่อนจะขึ้นฐานข้อมูลมันต้องมีการคาดการณ์ Data Growth อยู่แล้วครับ
- ตอนขึ้นฐานข้อมูลมีการกำหนด Option AUTOMATIC STORAGE YES ด้วยครับ
- เวอร์ชันของ DB2 ที่ผมได้ทดสอบ 10.5 ครับ
- นอกจากในส่วนของ Free Page แล้ว ยังมีเรื่องของ High Water Mark (Pages) อันนี้เดี๋ยวผมว่างๆ จะลองเขียน Blog แยกอีกอันครับ
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.