问题描述
我们有一个名为DS_AUDIT_ENTRY的表,其中记录了审计日志。它包含多年的数据。
现在,我们只想保留6个月的数据并存档旧数据。另外,如果需要,我们必须在需要时获取旧数据。我如何进行这项活动?
我们尝试的如下:
1.我们在新架构中创建了一个新的空表,名称为 “ds_audit_entry_old1”。
2.将现有表 (ds_audit_entry <> ds_audit_entry_old1) 与上述表交换
3.现在ds_audit_entry_old1填充了最近〜6个月的审核日志
4.存档的ds_audit_entry_old1
5. Ds_audit_entry表现在包含6个月的旧数据
现在,我们希望将表中6个月之前的数据与当前数据一起恢复。
怎么做?
-
表创建:
DS_AUDIT_ENTRY
----------------------------------------------------
交换DS_AUDIT_ENTRY_OLD1中的数据:
插入DS_AUDIT_ENTRY_OLD1
从DS_AUDIT_ENTRY中选择 *;
现在,我们只想保留6个月的数据并存档旧数据。另外,如果需要,我们必须在需要时获取旧数据。我如何进行这项活动?
我们尝试的如下:
1.我们在新架构中创建了一个新的空表,名称为 “ds_audit_entry_old1”。
2.将现有表 (ds_audit_entry <> ds_audit_entry_old1) 与上述表交换
3.现在ds_audit_entry_old1填充了最近〜6个月的审核日志
4.存档的ds_audit_entry_old1
5. Ds_audit_entry表现在包含6个月的旧数据
现在,我们希望将表中6个月之前的数据与当前数据一起恢复。
怎么做?
-
表创建:
DS_AUDIT_ENTRY
CREATE TABLE "UCDUSER"."DS_AUDIT_ENTRY" ( "ID" VARCHAR2(36 BYTE) NOT NULL ENABLE, "VERSION" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, "USER_ID" VARCHAR2(64 BYTE), "USER_NAME" VARCHAR2(255 BYTE), "EVENT_TYPE" VARCHAR2(255 BYTE) NOT NULL ENABLE, "DESCRIPTION" VARCHAR2(255 BYTE), "OBJ_TYPE" VARCHAR2(255 BYTE), "OBJ_NAME" VARCHAR2(255 BYTE), "OBJ_ID" VARCHAR2(255 BYTE), "CREATED_DATE" NUMBER(*,0) NOT NULL ENABLE, "STATUS" VARCHAR2(255 BYTE) NOT NULL ENABLE, "DELETABLE" VARCHAR2(1 BYTE) DEFAULT 'Y', "IP_ADDRESS" VARCHAR2(40 BYTE), PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "UCD_TESTCASE" ENABLE ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "UCD_TESTCASE" ; DS_AUDIT_ENTRY_OLD1 CREATE TABLE "ARCIVER"."DS_AUDIT_ENTRY_OLD1" ( "ID" VARCHAR2(36 BYTE) NOT NULL ENABLE, "VERSION" NUMBER(*,0) DEFAULT 0 NOT NULL ENABLE, "USER_ID" VARCHAR2(64 BYTE), "USER_NAME" VARCHAR2(255 BYTE), "EVENT_TYPE" VARCHAR2(255 BYTE) NOT NULL ENABLE, "DESCRIPTION" VARCHAR2(255 BYTE), "OBJ_TYPE" VARCHAR2(255 BYTE), "OBJ_NAME" VARCHAR2(255 BYTE), "OBJ_ID" VARCHAR2(255 BYTE), "CREATED_DATE" NUMBER(*,0) NOT NULL ENABLE, "STATUS" VARCHAR2(255 BYTE) NOT NULL ENABLE, "DELETABLE" VARCHAR2(1 BYTE) DEFAULT 'Y', "IP_ADDRESS" VARCHAR2(40 BYTE), PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "TEST_ARCHIVAL" ENABLE ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "TEST_ARCHIVAL" ;复制
----------------------------------------------------
交换DS_AUDIT_ENTRY_OLD1中的数据:
插入DS_AUDIT_ENTRY_OLD1
从DS_AUDIT_ENTRY中选择 *;
专家解答
让我们从头开始:
为什么要存档6个月以上的数据?
到底是什么"fetch the old data whenever asked“是吗?
通常归档意味着数据只存在于备份中。所以要得到它,你必须恢复数据库,然后运行查询。如果您很少查询旧数据,并且仅出于合规性原因而需要它,则通常 “足够好”。
如果你经常查询旧的存档行,这个方法是不切实际的。将行转移到存档表是另一种方式 (这是我的猜测,你目前正在做什么)。
通过将两者组合在一起,您可以轻松获得完整的图片:
分区也可以在这里提供帮助。这使得将数据从当前表复制到旧表变得容易。并将其从电流中删除,并带有以下内容:
当然,通过分区,您可能根本不需要存档旧数据...但是要真正提供帮助,我们需要了解您的目标。
为什么要存档6个月以上的数据?
到底是什么"fetch the old data whenever asked“是吗?
通常归档意味着数据只存在于备份中。所以要得到它,你必须恢复数据库,然后运行查询。如果您很少查询旧数据,并且仅出于合规性原因而需要它,则通常 “足够好”。
如果你经常查询旧的存档行,这个方法是不切实际的。将行转移到存档表是另一种方式 (这是我的猜测,你目前正在做什么)。
通过将两者组合在一起,您可以轻松获得完整的图片:
select * from DS_AUDIT_ENTRY union all select * from DS_AUDIT_ENTRY_OLD1复制
分区也可以在这里提供帮助。这使得将数据从当前表复制到旧表变得容易。并将其从电流中删除,并带有以下内容:
insert into DS_AUDIT_ENTRY_OLD1 select * from DS_AUDIT_ENTRY partition ( pold ); alter table DS_AUDIT_ENTRY drop partition pold;复制
当然,通过分区,您可能根本不需要存档旧数据...但是要真正提供帮助,我们需要了解您的目标。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
601次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
587次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
494次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
478次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
463次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
439次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
437次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
428次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
371次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
360次阅读
2025-04-15 14:48:05