我有一張巨大的表,它包含大量數據 - 歷史記錄和當前數據。varchar2列上的區間分區
我有一些表舊數據移動到歷史表
自動工作(並從源中刪除)。
所以我想建立一個
interval-partition
表,從該表中獲取舊數據。
的問題是,在源基日期列是VARCHAR2在這種模式:
2017/07
和數據類型需要是相同的源的新的表列。
所以當我試圖創建間隔分區表時,我無法對它做一個範圍。
如果您嘗試使用
to_date
你得到一個錯誤。
我該怎麼做?
這是源表:
CREATE TABLE
DATA_01(
APPLICATION VARCHAR2(10 BYTE),
PROCESS VARCHAR2(100 BYTE),
SNAPSHOT_MONTH VARCHAR2(7 BYTE)
);
這就是我想做的事,但得到的錯誤:
CREATE TABLE
HISTORY_01 (
APPLICATION VARCHAR2(10 BYTE) NOT NULL ENABLE,
PROCESS VARCHAR2(100 BYTE),
SNAPSHOT_MONTH VARCHAR2(7 BYTE)
)
PARTITION BY RANGE (to_date(snapshot_month, 'yyyy/mm'))
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION p_until_01_1900 VALUES LESS THAN (TO_DATE('01-01-1900', 'DD-MM-YYYY'))
);
感謝。
嘗試:'PARTITION BY RANGE(TO_DATE(snapshot_month || '/ 01', 'YYYY/MM/DD')) INTERVAL( NUMTOYMINTERVAL(1,'MONTH')) ( PARTITION p_until_01_1900 VALUE THAN(TO_DATE('1900/01/01','yyyy/mm/dd')) ); ' – g00dy
您無法將to_date插入範圍列..這會引發錯誤。 – user2671057
檢查此鏈接http://www.dba-oracle.com/t_partitioning_tables.htm -
g00dy