Mục lục

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é.

KHOÁ DÀNH CHO NGƯỜI MỚI

KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)

CÁC KHOÁ NÂNG CAO:

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c

KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD

CÁC KHOÁ COMBO:

COMBO 1: ADMIN 1 + MULTITENANT 12c

COMBO 2: ADMIN 1 + DATA GUARD

COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD

LỊCH HỌC:

Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE 

ĐĂNG KÝ:

https://forms.gle/MtCAoRQFenP886y79

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é.

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x