问题描述
嗨,
我想使用Range-Hash间隔分区方案使用LOB列对表进行分区。
但是我不确定在这种情况下确切的分区是如何分布的,我也注意到以下基于我如何指定分区LOB存储方案的差异。
方法1
------------
我看到当创建新的间隔分区时,LOB存储选项恢复为默认值。
方法2
---------
此方法将保留跨初始分区和新间隔分区的LOB存储参数。
如果我想使LOB存储在子分区级别上分布,我是否遵循正确的方法?,还有其他选择吗?我试图在模板级别指定LOB存储参数,但它不起作用。
对于这两种方法,user_segments仅显示2个lob段,索引和lob,为什么它没有分布到子分区级别?
我想使用Range-Hash间隔分区方案使用LOB列对表进行分区。
但是我不确定在这种情况下确切的分区是如何分布的,我也注意到以下基于我如何指定分区LOB存储方案的差异。
方法1
------------
CREATE TABLE interval_tab1 (
id NUMBER,
code VARCHAR2(10),
big_val BLOB,
created_date DATE
)
PARTITION BY RANGE (created_date)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY HASH (id)
SUBPARTITION TEMPLATE(
SUBPARTITION sp1 ,
SUBPARTITION sp2 ,
SUBPARTITION sp3 ,
SUBPARTITION sp4 )
(
PARTITION part_01 values LESS THAN (TO_DATE('01-JUL-2018','DD-MON-YYYY'))
LOB(big_val) STORE AS SECUREFILE (DISABLE STORAGE IN ROW CACHE LOGGING)
);
insert into interval_tab1 values(1,'AA1',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzA'),sysdate);
insert into interval_tab1 values(2,'AA2',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzB'),sysdate);
insert into interval_tab1 values(3,'AA3',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzC'),sysdate);
insert into interval_tab1 values(4,'AA4',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzD'),sysdate);
insert into interval_tab1 values(5,'AA1',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzA'),to_date('20180701','YYYYMMDD'));
insert into interval_tab1 values(6,'AA2',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzB'),to_date('20180701','YYYYMMDD'));
insert into interval_tab1 values(7,'AA3',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzC'),to_date('20180701','YYYYMMDD'));
insert into interval_tab1 values(8,'AA4',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzD'),to_date('20180701','YYYYMMDD'));
commit;
select * from USER_LOB_SUBPARTITIONS;
select segment_name, segment_type, tablespace_name from user_segments;我看到当创建新的间隔分区时,LOB存储选项恢复为默认值。
方法2
---------
CREATE TABLE interval_tab (
id NUMBER,
code VARCHAR2(10),
big_val BLOB,
created_date DATE
)
LOB(big_val) STORE AS SECUREFILE (DISABLE STORAGE IN ROW CACHE LOGGING)
PARTITION BY RANGE (created_date)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY HASH (id)
SUBPARTITIONS 4
(
PARTITION part_01 values LESS THAN (TO_DATE('01-JUL-2018','DD-MON-YYYY'))
);
insert into interval_tab values(1,'AA1',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzA'),sysdate);
insert into interval_tab values(2,'AA2',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzB'),sysdate);
insert into interval_tab values(3,'AA3',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzC'),sysdate);
insert into interval_tab values(4,'AA4',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzD'),sysdate);
insert into interval_tab values(5,'AA1',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzA'),to_date('20180701','YYYYMMDD'));
insert into interval_tab values(6,'AA2',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzB'),to_date('20180701','YYYYMMDD'));
insert into interval_tab values(7,'AA3',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzC'),to_date('20180701','YYYYMMDD'));
insert into interval_tab values(8,'AA4',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzD'),to_date('20180701','YYYYMMDD'));
commit;
select * from USER_LOB_SUBPARTITIONS;
select segment_name, segment_type, tablespace_name from user_segments;此方法将保留跨初始分区和新间隔分区的LOB存储参数。
如果我想使LOB存储在子分区级别上分布,我是否遵循正确的方法?,还有其他选择吗?我试图在模板级别指定LOB存储参数,但它不起作用。
对于这两种方法,user_segments仅显示2个lob段,索引和lob,为什么它没有分布到子分区级别?
专家解答
因此,您希望在 (子) 分区级别具有相同的lob存储设置?
您可以通过在表级别而不是分区级别定义lob存储来克服此问题:
您可以通过在表级别而不是分区级别定义lob存储来克服此问题:
DROP TABLE interval_tab1 PURGE;
CREATE TABLE interval_tab1 (
id NUMBER,
code VARCHAR2(10),
big_val BLOB,
created_date DATE
)
LOB(big_val) STORE AS SECUREFILE (DISABLE STORAGE IN ROW CACHE LOGGING)
PARTITION BY RANGE (created_date)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY HASH (id)
SUBPARTITION TEMPLATE(
SUBPARTITION sp1 ,
SUBPARTITION sp2 ,
SUBPARTITION sp3 ,
SUBPARTITION sp4 )
(
PARTITION part_01 values LESS THAN (TO_DATE('01-JUL-2018','DD-MON-YYYY'))
);
insert into interval_tab1 values(1,'AA1',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzA'),sysdate);
insert into interval_tab1 values(2,'AA2',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzB'),sysdate);
insert into interval_tab1 values(3,'AA3',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzC'),sysdate);
insert into interval_tab1 values(4,'AA4',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzD'),sysdate);
insert into interval_tab1 values(5,'AA1',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzA'),to_date('20180701','YYYYMMDD'));
insert into interval_tab1 values(6,'AA2',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzB'),to_date('20180701','YYYYMMDD'));
insert into interval_tab1 values(7,'AA3',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzC'),to_date('20180701','YYYYMMDD'));
insert into interval_tab1 values(8,'AA4',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzD'),to_date('20180701','YYYYMMDD'));
commit;
DROP TABLE interval_tab PURGE;
CREATE TABLE interval_tab (
id NUMBER,
code VARCHAR2(10),
big_val BLOB,
created_date DATE
)
LOB(big_val) STORE AS SECUREFILE (DISABLE STORAGE IN ROW CACHE LOGGING)
PARTITION BY RANGE (created_date)
INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
SUBPARTITION BY HASH (id)
SUBPARTITIONS 4
(
PARTITION part_01 values LESS THAN (TO_DATE('01-JUL-2018','DD-MON-YYYY'))
);
insert into interval_tab values(1,'AA1',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzA'),sysdate);
insert into interval_tab values(2,'AA2',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzB'),sysdate);
insert into interval_tab values(3,'AA3',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzC'),sysdate);
insert into interval_tab values(4,'AA4',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzD'),sysdate);
insert into interval_tab values(5,'AA1',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzA'),to_date('20180701','YYYYMMDD'));
insert into interval_tab values(6,'AA2',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzB'),to_date('20180701','YYYYMMDD'));
insert into interval_tab values(7,'AA3',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzC'),to_date('20180701','YYYYMMDD'));
insert into interval_tab values(8,'AA4',utl_raw.cast_to_raw('sfhjdshafjhdsjkfhsdcmndxzD'),to_date('20180701','YYYYMMDD'));
commit;
select table_name, subpartition_name, securefile, cache, in_row
from USER_LOB_SUBPARTITIONS
order by 1, 2;
TABLE_NAME SUBPARTITION_NAME SECUREFILE CACHE IN_ROW
INTERVAL_TAB SYS_SUBP2578 YES YES NO
INTERVAL_TAB SYS_SUBP2579 YES YES NO
INTERVAL_TAB SYS_SUBP2580 YES YES NO
INTERVAL_TAB SYS_SUBP2581 YES YES NO
INTERVAL_TAB SYS_SUBP2592 YES YES NO
INTERVAL_TAB SYS_SUBP2593 YES YES NO
INTERVAL_TAB SYS_SUBP2594 YES YES NO
INTERVAL_TAB SYS_SUBP2595 YES YES NO
INTERVAL_TAB1 PART_01_SP1 YES YES NO
INTERVAL_TAB1 PART_01_SP2 YES YES NO
INTERVAL_TAB1 PART_01_SP3 YES YES NO
INTERVAL_TAB1 PART_01_SP4 YES YES NO
INTERVAL_TAB1 SYS_SUBP2563 YES YES NO
INTERVAL_TAB1 SYS_SUBP2564 YES YES NO
INTERVAL_TAB1 SYS_SUBP2565 YES YES NO
INTERVAL_TAB1 SYS_SUBP2566 YES YES NO 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




