Linux下打开或者关闭Oracle 11g数据库的闪回flashback 的步骤

浏览: 3704
一、闪回功能介绍
    用户使用闪回查询可以及时取得误操作DML(Delete、Update、Insert)前某一时间点数据库的映像视图,用户可以利用系统时间或系统改变号(SCN:System Change Number)来指定这个只读视图,并可以针对错误进行相应的恢复措施。闪回查询功能完全依赖于自动回滚段管理(AUM),对于Drop等误操作不能恢复。
闪回特性可应用在以下方面:
1、自我维护过程中的修复:当一些重要的记录被意外删除,用户可以向后移动到一个时间点,查看丢失的行并把它们重新插入现在的表内恢复。
2、恢复Email和声音Email:当用户意外删除了Email或者声音信息时,可以通过移回到固定时间点来恢复删除。
3、账号平衡状况:可以查看以前的历史数据。如银行外币管理中用于记录特定时间的汇率。在以前,汇率变更被记录在一个历史表中,现在就可以通过闪回功能进行查询。
4、用于趋势分析的决策支持系统:决策支持系统和联机分析应用必须执行一个长时间的事务。使用闪回查询,这些应用可以对历史数据执行分析和建模。例如,特定产品如矿泉水随季节变化需求情况的变化
 
 
二、确认一个数据库是否打开了flashback:
1、直接查数据库
SQL> select name,log_mode,flashback_on from v$database;
NAME      LOG_MODE     FLASHBACK_ON
--------- ------------ ------------------
ORA11G     ARCHIVELOG   NO     --> flashback未打开
 
三、打开闪回数据库特性:
1、确保数据库处于归档模式,如果为非归档模式,将数据库转换成归档模式
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            /cwarch
最早的联机日志序列     1274
下一个存档日志序列   1276
当前日志序列           1276

2、设置闪回恢复区
设置闪回区大小:
SQL> alter system set db_recovery_file_dest_size=80g scope=spfile;
设置闪回区位置:
SQL> alter system set db_recovery_file_dest='/workdb/account_flashback_area' scope=spfile;
设置闪回目标为5天,以分钟为单位,每天为1440分钟:
SQL> alter system set db_flashback_retention_target=7200 scope=spfile;

3、打开闪回功能
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback on;
SQL> alter database open;

4、确认数据库闪回特性已经启用
SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES


四、关闭闪回数据库特性:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback off;
SQL> alter database open;
 
五、闪回功能的具体应用:Oracle 11g使用闪回特性恢复误修改的存储过程 
    
 工作中常有误修改了存储过程而未备份的情况,Oracle 11g的闪回特性为我们提供了一个方便的补救方法。
先看这个视图:DBA_SOURCE
DBA_SOURCE describes the text source of all stored objects in the database.
SQL> desc dba_source
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER VARCHAR2(30)
NAME VARCHAR2(30)
TYPE VARCHAR2(12)
LINE NUMBER
TEXT VARCHAR2(4000)
SQL>
只要确定修改的时间,通过闪回查询DBA_SOURCE视图就能找回修改前的源代码了。
例如:

SELECT *
FROM DBA_SOURCE AS OF TIMESTAMP TO_TIMESTAMP('2009-03-18 10:07:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE OWNER = 'USER'
AND NAME = 'PRO_UPDATE_TB_USER_LOGIN'
ORDER BY LINE
推荐 1
本文由 梁勇 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册