[Oracle]Oracle的闪回归档

Oracle的闪回归档

场景需求,由于管理数据库的一些核心表,在实施初期会有人为误删除的问题。Oracle 11gR2提供了闪回归档的特性,可以保证不用RMAN来恢复误删除的数据。实践如下:

1.创建一个公共的闪回表空间。

用于各个业务模块都可以使用的闪回区域。

create TABLESPACE ARP_FLASH_ARC01 DATAFILE '/u01/app/oradata/oradb/arp_flash_arc01.dbf' SIZE 1024M AUTOEXTEND ON NEXT 512M MAXSIZE 20480M;

2.创建闪回归档

create flashback archive arp_fda1 tablespace ARP_FLASH_ARC01 retention 7 day;

3.对于核心业务表进行闪回归档

核心财务模块:

alter table fin.bg_exe_budget flashback archive arp_fda1;

工作流模块。

alter table EOS_WORKFLOW.WFWIPARTICIPANT flashback archive arp_fda1;

公文模块:

alter table od.T_OD_ARCHIVES_IN     flashback archive arp_fda1;

人事模块:
alter table hr.T_HR_ORG_UNIT            flashback archive arp_fda1;

如上,只是伪案例,按照需求给与。

4.查看哪些表使用了闪回归档

SYS@oradb> select * from dba_flashback_archive_tables;

TABLE_NAME                     OWNER_NAME
------------------------------ ------------------------------
FLASHBACK_ARCHIVE_NAME
------------------------------------------------------------------------------------------------------------------------
ARCHIVE_TABLE_NAME                                    STATUS
----------------------------------------------------- -------------
BG_EXE_BUDGET                  FIN
ARP_FDA1
SYS_FBA_HIST_116707                                   ENABLED

BG_ITEM                        FIN
ARP_FDA1
SYS_FBA_HIST_116696                                   ENABLED

AR_BILL                        FIN
ARP_FDA1
SYS_FBA_HIST_116779                                   ENABLED

AR_BILL_BALANCE                FIN
ARP_FDA1
SYS_FBA_HIST_116716                                   ENABLED

5.查看ARP_FLASH_ARC01表空间的使用情况。

col tablespace_name format a10;
col file_name format a30;
col total_space format a10;

SELECT tablespace_name,  
file_name, 
round(bytes/(1024*1024*1024), 2)||' GB' total_space 
FROM dba_data_files 
where tablespace_name='ARP_FLASH_ARC01';

TABLESPACE FILE_NAME                      TOTAL_SPAC
---------- ------------------------------ ----------
ARP_FLASH_ /u01/app/oradata/oradb/arp_fla 1 GB
ARC01      sh_arc01.dbf

6.清除归档的数据

SYS@oradb> alter flashback archive arp_fda1 purge before timestamp (systimestamp - interval '3' day);

闪回档案已变更。

7.使用闪回查询语句。

1).闪回查询

select * from ar_bill
as of timestamp to_timestamp('2020-01-03 16:30:00', 'yyyy-mm-dd hh24:mi:ss') where id='7F000001FFFFFFFF8EE2F28600000028'

2).闪回恢复

insert into ar_bill(
select * from ar_bill
as of timestamp to_timestamp('2020-01-03 16:30:00', 'yyyy-mm-dd hh24:mi:ss') where id='7F000001FFFFFFFF8EE2F28600000028'
);

你可能感兴趣的:([Oracle]Oracle的闪回归档)