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

一、闪回功能介绍

用户使用闪回查询可以及时取得误操作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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值