创建闪回数据归档:
(1)创建一个供闪回数据归档使用的表空间:
SQL> create tablespace fda datafile 'd:\data\fda1.dbf' size 10m;
表空间已创建。
(2)在表空间创建一个保留时间为1年的闪回数据归档
SQL> create flashback archive flal tablespace fda retention 1 year;
闪回档案已创建。
(3)创建用于此练习的模式,并授予它DBA角色:
SQL> grant dba to fbdauser identified by fbdauser;
授权成功。
(4)授予用户操作归档的必要权限:
SQL> grant flashback archive on flal to fbdauser;
授权成功。
(5)作为fbdauser进行连接。创建一个表并为此表启用闪回数据归档:
SQL> conn fbdauser/fbdauser
已连接。
SQL> create table t1 as select * from all_users;
表已创建。
SQL> alter table t1 flashback archive flal;
表已更改。
(6)运行这些查询来确定归档创建的对象。
SQL> select object_name,object_type from user_objects;
OBJECT_NAME
----------------------------------------------------------
OBJECT_TYPE
-------------------
T1
TABLE
SQL> select segment_name,segment_type from dba_segments
2 where tablespace_name='FDA';
SEGMENT_NAME
----------------------------------------------------------
SEGMENT_TYPE
------------------
T1
TABLE
(7)对保护的表执行DMl:
SQL> delete from t1;
已删除39行。
SQL> commit;
提交完成。
(8)使用标准的闪回查询语法对保护的表执行闪回查询,然后查询归档中的历史表。
SQL> select count(*) from t1;
COUNT(*)
----------
0
SQL> select count(*) from t1 as of timestamp(sysdate-5/1440);
COUNT(*)
----------
39
(9)对保护的表执行一些DDL命令:
SQL> alter table t1 drop column created;
表已更改。
SQL> truncate table t1;
表被截断。
SQL> drop table t1;
表已删除。
作为sysdba连接,并尝试执行如下命令:
SQL> drop user fbdauser cascade;
drop user fbdauser cascade
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-55622: 不允许对表 "FBDAUSER"."SYS_FBA_TCRV_75396" 执行 DML, ALTER 和 CREATE
UNIQUE INDEX 操作
SQL> drop tablespace fda including contents and datafiles;
drop tablespace fda including contents and datafiles
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-55622: 不允许对表 "FBDAUSER"."SYS_FBA_TCRV_75396" 执行 DML, ALTER 和 CREATE
UNIQUE INDEX 操作
(10)删除表的除归档保护
SQL> alter table fbdauser.t1 no flashback archive;
表已更改。
(11)删除闪回数据归档
SQL> drop flashback archive flal;
闪回档案已删除。
(12)重新运行步骤9的命令
SQL> alter table t1 drop column created;
表已更改。
SQL> truncate table t1;
表被截断。
SQL> drop user fbdauser cascade;
用户已删除。
SQL> drop tablespace fda including contents and datafiles;
表空间已删除。