Đây là ví dụ về thứ tôi đã tạo để tạo phân vùng bằng cách sử dụng SYSDATE
và độ lệch. Tôi đã phải tạo các thông số thay thế bằng một chuỗi được nối với SYSDATE
:
COLUMN temp_var new_value partition_name_01;
SELECT 'TABLE_NAME_' || TO_CHAR(SYSDATE - 3, 'YYYYMMDD') AS temp_var FROM dual;
COLUMN temp_var new_value partition_date_01;
SELECT TO_CHAR(SYSDATE - 3, 'SYYYY-MM-DD') || ' 00:00:00' AS temp_var FROM dual;
COLUMN temp_var new_value partition_name_02;
SELECT 'TABLE_NAME_' || TO_CHAR(SYSDATE - 2, 'YYYYMMDD') AS temp_var FROM dual;
COLUMN temp_var new_value partition_date_02;
SELECT TO_CHAR(SYSDATE - 2, 'SYYYY-MM-DD') || ' 00:00:00' AS temp_var FROM dual;
COLUMN temp_var new_value partition_name_03;
SELECT 'TABLE_NAME_' || TO_CHAR(SYSDATE - 1, 'YYYYMMDD') AS temp_var FROM dual;
COLUMN temp_var new_value partition_date_03;
SELECT TO_CHAR(SYSDATE - 1, 'SYYYY-MM-DD') || ' 00:00:00' AS temp_var FROM dual;
COLUMN temp_var new_value partition_name_04;
SELECT 'TABLE_NAME_' || TO_CHAR(SYSDATE, 'YYYYMMDD') AS temp_var FROM dual;
COLUMN temp_var new_value partition_date_04;
SELECT TO_CHAR(SYSDATE, 'SYYYY-MM-DD') || ' 00:00:00' AS temp_var FROM dual;
CREATE TABLE TABLE_NAME
(
SEQ_NO NUMBER NOT NULL,
INSERT_DATE DATE NOT NULL,
FIRST_NAME VARCHAR2 (256 BYTE),
LAST_NAME VARCHAR2 (256 BYTE),
ID_NUM NUMBER,
ID_STATUS NUMBER
)
PARTITION BY RANGE
(INSERT_DATE)
SUBPARTITION BY LIST
(ID_STATUS)
SUBPARTITION TEMPLATE (
SUBPARTITION SP1 VALUES (0) TABLESPACE &tblspce,
SUBPARTITION SP2 VALUES (1) TABLESPACE &tblspce,
SUBPARTITION SP3 VALUES (2) TABLESPACE &tblspce)
(
PARTITION &partition_name_01
VALUES LESS THAN
(TO_DATE ('&partition_date_01',
'SYYYY-MM-DD HH24:MI:SS',
'NLS_CALENDAR=GREGORIAN')),
PARTITION &partition_name_02
VALUES LESS THAN
(TO_DATE ('&partition_date_02',
'SYYYY-MM-DD HH24:MI:SS',
'NLS_CALENDAR=GREGORIAN')),
PARTITION &partition_name_03
VALUES LESS THAN
(TO_DATE ('&partition_date_03',
'SYYYY-MM-DD HH24:MI:SS',
'NLS_CALENDAR=GREGORIAN')),
sysdate
PARTITION &partition_name_04
VALUES LESS THAN
(TO_DATE ('&partition_date_04',
'SYYYY-MM-DD HH24:MI:SS',
'NLS_CALENDAR=GREGORIAN')))
ENABLE ROW MOVEMENT;
Nguồn
2011-01-05 21:07:07
+1 Việc giới thiệu phân vùng INTERVAL loại bỏ hầu hết nhu cầu về nhà các giải pháp phát triển để tự động quản lý việc bổ sung các phân vùng. Cải tiến duy nhất mà tôi muốn Oracle cung cấp là một số cách để định nghĩa một mặt nạ định dạng cho các tên phân vùng được tạo ra - chúng bây giờ được tạo ra với các tên do hệ thống tạo chung và tôi luôn phải xem cột LONG_VALUE trong x_tab_partitions để có thông tin có ý nghĩa về khoảng thời gian. – dpbradley
@dpbradley - Tôi đã không may mắn để thực sự sử dụng phân vùng trong 11g cho thực tế, nhưng tôi có thể thấy rằng sẽ nhận được khá khó chịu. – APC
Chỉ là một cảnh báo, bạn không thể trộn Phân vùng tham chiếu với phân vùng Khoảng thời gian. Chúng tôi đã chọn sử dụng phân vùng tham chiếu và sau đó quay tay một công việc để tạo phân vùng hàng tháng với quy ước đặt tên ưa thích của chúng tôi. – PenFold