[DB2] คืนพื้นที่ให้กับเครื่อง

ขอคืนพื้นที่ เนื่องจาก 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.