您可以在一个存档中添加多个表空间。反过来,您也可以从一个存档中删除表空间。如果您打算使用已经具有其他用户数据的表空间,则存在闪存数据存档数据将表空间挤满的风险,从而没有空间供用户数据使用。为了降低这种风险,您可以设置存档在表空间内可以占用的空间定额。您可以通过以下语句设置定额:
alter flashback archive near_term modify tablespace far_near_term quota 10M;
您可以通过查询字典视图查看哪些表开启了闪回数据存档:
TABLE_NAME OWNER_NAME ------------------------------ ------------------SQL> select * from user_flashback_archived_tables;
![]()
TABLE_NAME OWNER_NAME
FLASHBACK_ARCHIVE_NAME
-------------------------------------------------
TRANS ARUP
NEAR_TERM
![]()
您可以通过查询字典视图查找存档:
FLASHBACK_ARCHI FLASHBACK_ARCHIVE# RETENTION_IN_DAYS PURGE_SCN STATUS --------------- ------------------ ----------------- ---------- -------sql> select * from flashback_archives;
![]()
FLASHBACK_ARCHI FLASHBACK_ARCHIVE# RETENTION_IN_DAYS PURGE_SCN STATUS
NEAR_TERM 1 30 1042653
MED_TERM 2 365 1042744
LONG_TERM 3 1825 1042838
![]()
使用多个存档可以使您在不同情况下通过独创方式对其进行应用。例如,某酒店企业的数据库可能需要保留一年的预定信息,而需要保留三年的付款信息。那么,您可以定义多个带有不同保留策略的存档,然后将其分配给各个表。或者,如果有统一的保留策略,您可以只定义一个存档并将其设为默认选项。
alter flashback archive near_term set default;
当某个表不需要存档时,您可以通过以下命令将存档关闭:
alter table trans no flashback archive;
如您所见,您一行代码都不需要编写就实现了一个功能强大的更改记录系统。
闪回数据存档与常规审计的区别是什么?首先,后者需要将 audit_trail 参数设置为 DB 或 DB_EXTENDED,并将审计线索写入 SYSTEM 表空间的 AUD$ 表中。闪回数据存档可在任何表空间上(或多个表空间上,甚至存储用户数据的表空间的某些部分上)进行定义,因此可以在更廉价的存储设备上进行定义。
其次,审计以自主事务为基础,会造成一些性能开销。闪回数据存档由专用后台进程 FBDA 编写,因此对性能的影响较小。
最后,闪回数据存档可定期自动清除。审计线索必须通过人工进行维护。
闪回数据存档具有多种便捷的用途。这里给出部分用途:审计以记录数据的更改方式
错误发生了,但是现在您可以自信地断定,您能够识别引起错误的具体更改,而且您拥有通过事务收回完全回滚这些错误的工具。但是,您的方法不再局限于从存档的和在线的重做日志中挖掘更改,更改已经永久地记录在了闪回存档中。现在,只需通过几个命令就可以针对任何实际目的在闪回恢复区审计更改了。
| 第1页: LogMiner界面 | 第2页: 命令行界面 |
| 第3页: 一个演示 | 第4页: 管理闪回存档 |