暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 大型表的静态分区存档

askTom 2021-07-29
563

问题描述

嗨,

我们的数据仓库中有一个很大的表( 2.2TB ,超过50亿条记录) ,按月进行了范围划分。该表包含CLOB列。每个月,当分区变成静态时,它都会被移动到一个单独的表空间中并被压缩。然后,出于性能原因,该表空间可以从隔夜备份中排除。

我们的存储容量即将耗尽,希望将旧分区存档到AWS S3存储,并从数据库中删除这些分区,直到更多预置存储可用,此时我们希望将旧数据带回数据库。

我曾经认为,在一个单独的表空间中包含较旧的分区,包括数据段和相应的LOB段,这意味着数据将是自包含的,数据文件可以在以后的某个时间点进行归档和检索。

但是,我发现有一个全局LOB索引,它跨越两个表空间中的分区。

我正在考虑将较旧的分区移到单独的表中,但是欢迎任何关于更好的方法的建议。

致以问候,
史都华。

嗨,这个表是范围分区的,不是列表,这里是DDL ,为了简洁,我省略了大部分列和分区:

CREATE TABLE DWSTGLM.FCT_LM_REQUESTS (
 FCT_LM_REQUESTS_KEY  NUMBER,
 ID    VARCHAR2(50 CHAR),
 TIMESTAMP   TIMESTAMP,
 TIMESTAMP_YEAR   NUMBER,
 TIMESTAMP_MONTH   VARCHAR2(4000 CHAR),
 TIMESTAMP_DAY   DATE,
 USER_ID    VARCHAR2(4000 CHAR),
~
 ASSIGNMENT_ID   VARCHAR2(4000 CHAR),
 URL    CLOB,
 USER_AGENT   VARCHAR2(4000 CHAR),
~
 HTTP_VERSION   VARCHAR2(4000 CHAR),
 EXTRACT_DATE   DATE
)
PARTITION BY RANGE(TIMESTAMP_MONTH)
(PARTITION REQUESTS_MIN
VALUES LESS THAN ('2016-06') TABLESPACE DWSTGLMDATA NOLOGGING,
PARTITION REQUESTS_201606
VALUES LESS THAN ('2016-07') TABLESPACE DWSTGLMDATA NOLOGGING,
PARTITION REQUESTS_201607
VALUES LESS THAN ('2016-08') TABLESPACE DWSTGLMDATA NOLOGGING,
~
VALUES LESS THAN ('2017-06') TABLESPACE DWSTGLMDATA NOLOGGING,
PARTITION REQUESTS_201706
VALUES LESS THAN ('2017-07') TABLESPACE DWSTGLMDATA NOLOGGING,
PARTITION REQUESTS_MAX
VALUES LESS THAN (MAXVALUE) TABLESPACE DWSTGLMDATA NOLOGGING);

select index_name from user_lobs where table_name = 'FCT_LM_REQUESTS';
SYS_IL0007478673C00015$$

select index_name, partitioning_type, locality from user_part_indexes
where index_name = 'SYS_IL0007478673C00015$$';
SYS_IL0007478673C00015$$ RANGE LOCAL

select index_name, partition_name, high_value, tablespace_name from user_ind_partitions where index_name = 'SYS_IL0007478673C00015$$';

SYS_IL0007478673C00015$$ SYS_IL_P52953 '2016-06' DWSTGLMDATA
SYS_IL0007478673C00015$$ SYS_IL_P27543 '2016-07' DWSTGLMDATARO
SYS_IL0007478673C00015$$ SYS_IL_P27544 '2016-08' DWSTGLMDATARO
~
SYS_IL0007478673C00015$$ SYS_IL_P52952 '2021-06' DWSTGLMDATARO
SYS_IL0007478673C00015$$ SYS_IL_P47213 '2021-07' DWSTGLMDATA
~
SYS_IL0007478673C00015$$ SYS_IL_P47219 '2022-01' DWSTGLMDATA
SYS_IL0007478673C00015$$ SYS_IL_P47220 MAXVALUE DWSTGLMDATA


我看到这是一个分区的全局索引。2016年至2021年5月的分区及其相应的LOB段已移动到DWSTGLMDATARO表空间,其中最小、最大和剩余的2021个分区位于DWSTGLMDATA中。

其目的是使DWSTGLMDATARO表空间脱机,并将数据文件复制到S3 ,然后删除它包含的分区和表空间以恢复该空间。

我担心的原因是, DBA正在考虑是否转换为可移动表空间是一个好的选择,所以他运行了check实用程序,返回:

ORA-39910 :表空间DWSTGLM.SYS_IL0007478673C00015$0指向表空间DWSTGLM.FCT_LM_REKESTSTS的分区请求项DWSTGLM.DW STGLMDATA超出可移动集。
ORA-39921 :可移动集不包含FCT_LM_REFESTSTS的默认分区(表)表空间DWSTGLMDATA。

致以问候,
史都华。

专家解答

好的-看看这个链接

https://asktom.oracle.com/pls/apex/asktom.search?tag=use-transportable-tablespace-to-archive-old-data

我认为这符合你的设想。

如果您需要更多详细信息,请通过评论ping我们。
文章转载自askTom,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论