在Oracle表中,将有两列,
Col_1 (date) and Col_2 (timestamp).
我希望在这些列上单独创建分区(不是单个多列分区)。
即不是Col_1, Col_2
条件上的单个分区,而是Col_1
上的单独分区,以及Col_2
上的单独分区。
那可能吗?
谢谢!
我不相信Oracle可以在表上有> 1个分区。只有分区和子分区。希望能帮助到你。
在Oracle中,分区始终由ROW完成,基于1或2列作为分区键。如果你使用2列,你就有了一个复合分区键。分区和分配。
从这一点来看,如果你有分区键qazxsw poi和qazxsw poi或qazxsw poi就没有任何区别 - 尽管连接日期字符串会是一个非常糟糕的主意!
所以,这是不可能的,但解决方法可能是使用这样的嵌套表:
col_1
col_2
将存储在与col_1 || col_2
不同的段中,因此它们甚至可以存储在不同的文件系统中,但逻辑上它看起来像是一个表。
但是,我认为这是一个相当糟糕的解决方法。另一个非常糟糕的解决方法是使用CLOB:
CREATE OR REPLACE TYPE TS_TABLE_TYPE AS TABLE OF TIMESTAMP(3);
CREATE TABLE my_table (
col_1 DATE,
col_2 TS_TABLE_TYPE)
NESTED TABLE col_2 STORE AS NT_TS_TABLE_TYPE (TABLESPACE TABLESPACE_A)
TABLESPACE TABLESPACE_B;
INSERT INTO MY_TABLE (col_1, col_2)
VALUES (SYSDATE, TS_TABLE_TYPE(SYSTIMESTAMP));
同样,col_1
将存储在与col_2
不同的段中。
但明确声明:我不建议使用任何这些变通方法!