2013-04-16 27 views
5

Khi tôi thay đổi một bảng trong db2, tôi phải tổ chức lại nó vì vậy tôi thực hiện truy vấn tiếp theo:db2 tổ chức lại một bảng

Call Sysproc.admin_cmd ('reorg Table myTable'); 

Tôi đang tìm kiếm một giải pháp thích hợp để tổ chức lại một bảng khi nó s thay đổi hoặc sắp xếp tất cả các sơ đồ sau khi thực hiện những thay đổi khác nhau

+0

Tôi thấy các tập lệnh giúp tôi giải quyết vấn đề này, nhưng tôi muốn tìm các giải pháp khác. db2 -x "chọn 'bảng phân giải', chất nền (rtrim (tabschema) || '.' | | Rtrim (tabname), 1,50), ';' \ từ syscat.tables nơi type = 'T' và tbspace = '' "> reorg.out db2 -tvf reorg.out – junior

+1

Loại câu hỏi này là câu hỏi quản trị cơ sở dữ liệu và thuộc về dba.stackexchange. com. –

Trả lời

3

Hoạt động reorg tương tự với phân mảnh trong đĩa cứng. Nó giải phóng không gian trống trong các trang, và cuối cùng nó có thể tổ chức lại dữ liệu theo một chỉ mục. Tùy thuộc vào các tính năng, nó tạo ra từ điển nén và nén dữ liệu.

Như bạn thấy, hoạt động reorg là tác vụ quản trị và không cần thiết mỗi khi dữ liệu được sửa đổi. Một cơ sở dữ liệu có thể chạy mà không cần reorg.

Để dễ dàng điều này, các tính năng tự động bao gồm DB2 như sao lưu tự động, tuy nhiên điều này không trả lời bạn câu hỏi riêng. Điều này sẽ chỉ kích hoạt reorg trên các bảng cần điều đó.

0

in db2 cấu hình chúng ta có:

tự động sắp xếp lại (AUTO_REORG) = OFF

chúng tôi có thể đặt auto_reorg thành

3

Bạn có thể xác định khi nào bảng sẽ đòi hỏi một REORG bằng cách nhìn vào SYSIBMADM.ADMINTABINFO:

select tabschema, tabname 
    from sysibmadm.admintabinfo 
where reorg_pending = 'Y' 

Bạn cũng có thể xem cột NUM_REORG_REC_ALTERS vì điều này có thể hiển thị y các bảng bổ sung không được yêu cầu tổ chức lại do các câu lệnh ALTER TABLE khác nhau.