Giới thiệu

Với những bàng partition có Global index, nếu chúng ta thực hiện TRUNCATE PARTTION, sẽ khiến global index trở thành UNUSABLE (không dùng được).

Đọc thêm  Các gợi ý để partition bảng sao cho hiệu quả

Để kiểm tra xem database của bạn có những global index nào, có thể sử dụng câu lệnh sau:

select i.table_owner, i.table_name, i.owner, i.index_name
                  from dba_indexes i, 
                       dba_part_tables t
                  where i.table_owner = t.owner
                  and i.table_name = t.table_name
                  and i.partitioned = 'NO';

Với những bảng có Global index, chúng ta sẽ có 3 cách để TRUNCATE PARTITION như sau:

   Cách 1: Truncate partition và Rebuild global index

ALTER TABLE sales TRUNCATE PARTITION dec98;
ALTER INDEX sales_area_ix REBUILD;

 

Cách này thích hợp cho các bảng lớn, trong đó dữ liệu trong partition bị truncate chứa một tỷ lệ phần trăm đáng kể trên tổng dữ liệu trong bảng.

Ngoài ra để tăng tốc quá trình Rebuild index, bạn có thể thêm các option NOLOGGING và PARALLEL

ALTER INDEX sales_area_ix REBUILD PARALLEL 8 NOLOGGING;
ALTER INDEX sales_area_ix NOPARALLEL;

   Cách 2: DELETE dữ liệu trước khi thực hiện TRUNCATE

DELETE FROM sales PARTITION (dec98);
ALTER TABLE sales TRUNCATE PARTITION dec98;

Câu lệnh DELETE sẽ xóa hết row trong parttion và cập nhật global index.  Như vậy không cần thiết phải rebuild lại global index nữa.

Cách này thích hợp cho các bảng nhỏ, hoặc cho các bảng lớn nhưng dữ liệu trong partition bị truncate chỉ chứa một tỷ lệ phần trăm nhỏ trên tổng dữ liệu trong bảng.

 

   Cách 3: Sử dụng mệnh đề UPDATE INDEXES

Trước phiên bản 12c, khi thêm mệnh đề UPDATE INDEXES vào sau các câu lệnh TRUNCATE/DROP/MOVE PARTTION, Global index sẽ được tự động rebuild lại, khá mất thời gian.

Từ bản 12.1  trở đi, Oracle đưa vào tính năng Asynchronous global index maintenance, câu lệnh TRUNCATE/DROP/MOVE PARTTION với UPDATE INDEXES sẽ nhanh hơn nhiều

ALTER TABLE sales TRUNCATE PARTITION dec98
     UPDATE INDEXES;

Nguồn: https://dangxuanduy.com/

 

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

 

    KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN  Xem ngay!

 

   Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

Đặng Xuân Duy

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *