我有一张巨大的表,它包含大量数据 - 历史记录和当前数据。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