技术开发 频道

Oracle 11g闪回数据归档新功能解析

  配置闪回数据归档

  准备一个Oracle 11g数据库使用FBDA功能是相当简单的,只需要经过几个简单的步骤即可:

  (1)创建或指定一个或多个表空间用于FBDA保留历史数据

  (2)随意指派一个FBDA作为数据库的默认FBDA

  (3)指派一个用户账户作为FBDA管理员,授予它FLASHBACK ARCHIVE ADMINISTER系统权限

  (4)授予FBDA权限给适合的用户账号

  (5)授予FLASHBACK和SELECT权限给合适的FBDA表用户

  (6)为FBDA用户授予DBMS_FLASHBACK存储过程EXECUTE权限

  下面是具体的实现命令:

-- 创建FBDA管理员用户账号

  
DROP USER fbda_admin CASCADE;

  
CREATE USER fbda_admin IDENTIFIED BY fbda_admin;

  
GRANT FLASHBACK ARCHIVE ADMINISTER TO fbda_admin;

  
-- 授予其它用户合适的闪回权限

  
GRANT FLASHBACK ANY TABLE TO hr;

  
GRANT EXECUTE ON DBMS_FLASHBACK TO hr;

  
GRANT FLASHBACK ANY TABLE TO oe;

  
GRANT EXECUTE ON DBMS_FLASHBACK TO oe;

  
GRANT FLASHBACK ANY TABLE TO sh;

  
GRANT EXECUTE ON DBMS_FLASHBACK TO sh;

  
-- 为闪回数据归档创建表空间

  
DROP TABLESPACE fbda INCLUDING CONTENTS AND DATAFILES;

  
CREATE TABLESPACE fbda

  DATAFILE
'/u01/app/oracle/oradata/ORCL/tsp_fdba01.dbf'

  SIZE 24M;

  
-- 创建一个闪回数据归档保留5天有价值的历史

  
DROP FLASHBACK ARCHIVE fbda_1;

  
CREATE FLASHBACK ARCHIVE fbda_1

  TABLESPACE fbda

  QUOTA 1M

  RETENTION
5 DAY;

  
GRANT FLASHBACK ARCHIVE ON fbda_1 TO hr;

  
GRANT FLASHBACK ARCHIVE ON fbda_1 TO oe;

  
GRANT FLASHBACK ARCHIVE ON fbda_1 TO sh;

  
-- 创建一个闪回数据归档保留1整年有价值的历史

  
DROP FLASHBACK ARCHIVE fbda_2;

  
CREATE FLASHBACK ARCHIVE fbda_2

  TABLESPACE fbda

  QUOTA 4M

  RETENTION
1 YEAR;

  
GRANT FLASHBACK ARCHIVE ON fbda_2 TO hr;

  
GRANT FLASHBACK ARCHIVE ON fbda_2 TO oe;

  
GRANT FLASHBACK ARCHIVE ON fbda_2 TO sh;

  
-- 创建一个闪回数据归档保留7年有价值的历史

  
DROP FLASHBACK ARCHIVE fbda_3;

  
CREATE FLASHBACK ARCHIVE fbda_3

  TABLESPACE fbda

  QUOTA 20M

  RETENTION
7 YEAR;

  
GRANT FLASHBACK ARCHIVE ON fbda_3 TO hr;

  
GRANT FLASHBACK ARCHIVE ON fbda_3 TO oe;

  
GRANT FLASHBACK ARCHIVE ON fbda_3 TO sh;

  从上面的代码可以看出,其实使用闪回数据归档真的很简单,按照上面的代码,我创建一个表空间FBDA,并在它里面创建了三个闪回数据归档:FBDA_A,FBDA_2和FBDA_3,分别保留5天,1年,7年,我还创建了一个新用户账号FBDA_ADMIN,并授予它FLASHBACK ARCHIVE ADMINISTER权限,最后,我们给系统中“sample”方案中的HR,OE和SH用户账号授予了合适的系统权限,以便它们也可以参与FBDA操作。

  启用和禁用一个表的历史保留能力:使用ALTER TABLE <表名> FLASHBACK ARCHIVE [FBDA名]; 命令在现有表上启用FBDA。

   如果没有指定FBDA名,将会使用默认的FBDA

   DBA也可以给表指定想要的FBDA

   如果不存在默认的FBDA就必须要明确指定FBDA

  同样,使用ALTER TABLE NO FLASHBACK ARCHIVE; 命令可以在现有表上禁用FBDA。请看下面的代码: 

-- 将闪回数据归档FBDA_2作为默认FBDA

  
ALTER FLASHBACK ARCHIVE fbda_2 SET DEFAULT;

  
-- 将FBDA_1改为默认的FBDA,注意FBDA_1和FBDA_2只会简单地交换名称

  
ALTER FLASHBACK ARCHIVE fbda_1 SET DEFAULT;

  
-- 启用一个现有表使用默认的FBDA(fbda_1)

  
ALTER TABLE hr.applicants FLASHBACK ARCHIVE;

  
-- 启用表使用指定的FBDA

  
ALTER TABLE hr.departments FLASHBACK ARCHIVE fbda_1;

  
ALTER TABLE hr.job_history FLASHBACK ARCHIVE fbda_2;

  
ALTER TABLE oe.customers FLASHBACK ARCHIVE fbda_3;

  
-- 在指定表上禁用闪回数据归档

  
ALTER TABLE hr.departments NO FLASHBACK ARCHIVE;

  上面的代码说明了以下基本原理:

   可以事后修改默认的FBDA。最初我使用FBDA_2作为默认FBDA,后来我使用ALTER FLASHBACK ARCHIVE SET DEFAULT; 命令将默认FBDA改为FBDA_1了。

   接下来,我在表HR.APPLICANTS上使用默认FBDA开启了闪回数据归档跟踪

   然后,我对HR.DEPARTMENTS,HR.JOB_HISTORY和OE.CUSTOMERS表开启了闪回数据归档跟踪,为它们的历史数据选择了不同的FBDA。

   最后,为了显示如何在表上中断FBDA跟踪,我再次在OE.CUSTOMERS 表上使用了ALTER TABLE NO FLASHBACK ARCHIVE;命令。

1
相关文章