问题描述
我们有一个名为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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




