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).
Để 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 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é.