您的位置:首页 > 数据库 > Oracle

【读书笔记】oracle闪回技术

2015-10-07 21:26 399 查看
1.闪回技术有三种,分别是闪回数据库、闪回查询、闪回删除。
闪回数据库是把数据库恢复到某一个时间点;闪回查询是查询表的历史记录;闪回删除是把drop掉的表还原回来(表存在于recyclebin中)。
2.三种闪回技术的限制:
闪回数据库受闪回日志大小的限制;
闪回查询受撤销保留时间限制;
闪回删除受表可用空间限制;
但可以通过配置Flashback Data Archive来无限期地存储行的前映像。(如何对表启用?)
3.闪回数据库的配置:
1)确保数据库处于归档模式中,如果不是归档模式则要进行修改;
2)创建闪回恢复区:
alter system set db_recovery_file_dest='/flash_recovery_area';
alter system set db_recovery_file_dest_size=8G;
3)设置闪回保留目标时间:
alter system set db_flashback_retention_target=240;--单位是分钟,默认保留时间是1天;
4)干净地关闭并加载数据库
SQL>shutdown immediate;
SQL>startup mount;
5)启用闪回日志记录:
alter database flashback on;
6)打开数据库
alter database open;
4.使用闪回数据库
使用闪回数据库的步骤:
1)关闭数据库;
2)加载数据库;
3)闪回到某个时间点、SCN或日志切换序列号;
4)使用resetlogs打开数据库;
可以使用SQL*Plus、RMAN、Database Control进行闪回数据库
以SQL*Plus为例:
1)shutdown abort;
2)startup mount;
flashback database to timestamp to_timestamp( );
alter database open read only;--到这里如果不能满足需求,则要重新执行1)、2)步,切换不同的时间点
3)shutdown abort;
startup mount;
alter database open resetlogs;
5.闪回删除:
flashback table <table_name> to before drop [rename to <new_name>];--rename部分非必须
注意:truncate table<table_name>不能闪回;drop user user_name cascade后也不能闪回;
5.闪回查询
1)基本的闪回查询:
select * from <table_name> as of timestamp to_timestamp(timestamp,'yyyy-mm-dd hh24:mi:ss');--也可以是to SCN......
2)闪回表查询:
flashback table <table1>,<table2> to timestamp to_timestamp(timestamp,'yyyy-mm-dd hh24:mi:ss');
3)闪回版本查询
SELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime, versions_xid, versions_operation, col1,col2...
FROM <table_name>
VERSIONS BETWEEN TIMESTAMP BeginTimestamp and EndTimestamp
WHERE 条件表达式
--TIMESTAMP 可以用SCN替代
6.闪回数据归档
1)创建归档名称
create flashback archive <default> hrarch tablespace fbdal quota 10g retentions 5years;
注:
default表示所有表的归档,可以之后再进行设定:
alter flashback archive hrarch set default;
hrarch表示该归档的名称;
fbdal表示归档数据存储的表空间;
quota表示归档在表空间中占用的空间,表空间不够时可以扩展到另外一个表空间中:
alter flashback archive hrarch add tablespace fbda2 quota 10g;
retention表示归档保留时间,可以调整为
alter flashback archive hrarch modify retention 7 year;
数据超过保留期限后会自动删除,也可以手动删除:
alter flashback archive hrarch purge before timestamp to_timestamp(timestamp,'yyyy-mm-dd');
2)赋予用户归档的权限
grant flashback archive administer to fbdaadmin;
grant flashback archive on hrarch to hr;
3)启用表归档保护
alter table hr.employees flashback archive hrarch;
4)有3个数据字典视图来记录闪回数据的归档配置:
DBA_FLASHBACK_ARCHIVE;--描述配置的归档
DBA_FLASHBACK_ARCHIVE_TS:--显示每个表空间的每个归档的配额;
DBA_FLASHBACK_ARCHIVE_TABLES;--列出启用了归档的表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: