ฉันจะเดาว่าคุณใช้ที่เก็บข้อมูลอัตโนมัติ (ไม่ใช่ว่าสิ่งนี้อาจเกิดขึ้นได้เป็นอย่างอื่น ... มันเป็นเรื่องง่ายที่จะเกิดขึ้นกับที่เก็บข้อมูลอัตโนมัติ)
ปัญหาน่าจะเกิดขึ้นที่ฐานข้อมูลของคุณเรียกคืนพื้นที่สำหรับตัวเอง แต่ไม่ได้ปล่อยดิสก์กลับสู่ระบบปฏิบัติการ สิ่งนี้สามารถแสดงได้อย่างง่ายดายโดยการตรวจสอบ High Water Mark สำหรับ tablespace
ทำสิ่งต่อไปนี้
db2 list tablespaces show detail
สิ่งนี้จะแสดงแต่ละพื้นที่ตารางและสิ่งที่มันใช้บนดิสก์ Used pages
คือจำนวนหน้าของดิสก์ที่ฐานข้อมูลใช้ เปรียบเทียบว่าเทียบกับtotal pages
(ยอดรวมที่อ้างสิทธิ์ในดิสก์) และHigh water mark (pages)
จะแสดงให้คุณเห็นถ้าคุณ "อ้างสิทธิ์" มากกว่าที่คุณต้องการจริงๆ (เช่นเพจที่มีการใช้งานต่ำหน้ารวมสูงมากและเครื่องหมายน้ำสูงใกล้กับหน้าทั้งหมด)
ที่จะได้รับการกำจัดของที่ไม่ได้ใช้พื้นที่นี้และกลับไปยังระบบปฏิบัติการที่คุณจะออกต่อไปนี้ db2 alter tablespace <tablespace name> reduce max
(ภายใต้การจัดเก็บข้อมูลอัตโนมัติ): ตัวอย่าง
db2 alter tablespace ts1 reduce max;
ซึ่งจะทำให้ DB2 ลดเครื่องหมายน้ำสูงและปล่อยดิสก์ที่ไม่ได้ใช้กลับสู่ระบบปฏิบัติการ (หมายเหตุคุณสามารถทำได้เฉพาะกับพื้นที่ตารางปกติและขนาดใหญ่ไม่ใช่สำหรับระบบชั่วคราวหรือพื้นที่ตารางชั่วคราวของผู้ใช้)
หากคุณใช้ DMS โดยไม่มีที่เก็บข้อมูลอัตโนมัติคุณจำเป็นต้องใช้ชุดคำสั่งที่แตกต่างกันเล็กน้อย:
db2 alter tablespace <tablespace name> lower high water mark;
db2 alter tablespace reduce (<containter name> or [all containers] integer K|M|G or integer PERCENT);
ตัวอย่าง
db2 alter tablespace ts1 lower high water mark;
db2 alter tablespace reduce (all containers 500 M);
ที่ที่เราทำงานเราใส่สิ่งนี้ลงในสคริปต์การบำรุงรักษาบางส่วนของเราเพื่อให้เราเรียกใช้สิ่งนี้โดยอัตโนมัติหลังจากที่เราดำเนินการใหม่เพื่อให้แน่ใจว่าเราได้เรียกคืนพื้นที่ว่างในดิสก์ ในกรณีของเราเราใช้ DB2 LUW 9.7 FP 4 ดังนั้นจึงไม่เจ็บที่จะตรวจสอบศูนย์ข้อมูลสำหรับ 9.5 อีกครั้งเพื่อให้แน่ใจว่าคุณสามารถเข้าถึงข้อมูลที่ถูกต้องสำหรับรุ่นของคุณ
แก้ไข:หากพื้นที่ตารางของคุณมาจากฐานข้อมูลที่อัพเกรดเป็น DB2 9.7 คุณอาจจะไม่ได้ตั้งค่าคุณสมบัติหน่วยเก็บข้อมูลที่เรียกคืนได้ สิ่งนี้เป็นจริงแม้ว่าคุณจะอัปเกรดจาก DMS เป็นที่เก็บข้อมูลอัตโนมัติ ทั้งสองวิธีกัดในขณะที่คุณไม่สามารถลดเครื่องหมายน้ำที่สูง คุณต้องดัมพ์ตารางและข้อมูลออกจากนั้นปล่อยพื้นที่ตาราง จากนั้นสร้างพื้นที่ตารางใหม่โดยใช้ที่เก็บข้อมูลอัตโนมัติและนำเข้าข้อมูลสำหรับตารางของคุณ