TLDR
Có lẽ hầu hết bạn đã quên bật DML song song.
ALTER SESSION ENABLE PARALLEL DML;
Thêm vào nếu bạn ép buộc thực hiện song song mà bạn thường không sử dụng song song gợi ý và ngược lại.
Thiết lập mẫu (11.2)
create table TAB_HIST (
col1 int,
col2 int,
col3 varchar2(4000))
PARTITION BY RANGE (col1)
interval(1000000)
(
partition p_init values less than (1000000)
);
create table TAB_SRC (
col1 int,
col2 int,
col3 varchar2(4000)
)
PARTITION BY RANGE (col1)
interval(1000000)
(
partition p_init values less than (1000000)
);
insert into tab_src
select rownum, rownum, rpad('x',1000,'y') from dual connect by level <= 100000;
commit;
Chèn
Bạn phải bật DML song song trong bước đầu tiên
ALTER SESSION ENABLE PARALLEL DML;
Lưu ý rằng có thể sử dụng gợi ý thay thế
INSERT /*+ ENABLE_PARALLEL_DML */ …
Ngoài ra, nếu bạn ép buộc DML và QUERY song song, bạn thường không sử dụng gợi ý song song . Tôi đang gợi ý chèn trực tiếp với APPEND
thường được sử dụng trong tình huống này.
DECLARE
v_parallel_degree NUMBER := 2;
BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL DML PARALLEL ' || v_parallel_degree;
EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL QUERY PARALLEL ' || v_parallel_degree;
EXECUTE IMMEDIATE 'INSERT /*+ APPEND */ INTO TAB_HIST
SELECT *
FROM TAB_SRC PARTITION(P_INIT)';
END;
/
Cách kiểm tra xem bảng có được chèn song song hay không? Cách đơn giản nhất là truy vấn bảng (trước khi thực hiện cam kết) - nếu bạn gặp lỗi dưới đây, đó là cách chèn trực tiếp song song.
select count(*) from TAB_HIST;
ORA-12838: cannot read/modify an object after modifying it in parallel
Chỉ mục
Nếu bạn chỉ định một mức độ song song trong create index
tuyên bố bạn không cần bật hoặc lực lượng bất cứ thứ gì.
DECLARE
v_parallel_degree NUMBER := 2;
BEGIN
EXECUTE IMMEDIATE 'CREATE UNIQUE INDEX idx_pk ON TAB_HIST
(COL1,COL2,COL3)
LOCAL
NOLOGGING PARALLEL ' || v_parallel_degree;
END;
/
Việc kiểm tra đơn giản như xem xét mức độ trong từ điển dữ liệu
select DEGREE from user_indexes where table_name = 'TAB_HIST';
DEGREE
---------
2
Lưu ý rằng sau khi tạo chỉ mục ở chế độ song song, bạn thường muốn đặt lại DOP thành một. Nếu không, một số truy vấn vòng lặp lồng nhau đơn giản có thể bị nhầm lẫn và sẽ mở ra một truy vấn song song ...