闪回开关

在Oracle的建库过程中,通常会提示是否开启闪回并指定闪回恢复区大小,我一般会选择不开启。这样,如果需要使用闪回功能,就需要手动开启。

1.环境准备

我们在Oracle11g上进行测试。

点击(此处)折叠或打开

  1. SQL> select * from v$version;

  2. BANNER
  3. --------------------------------------------------------------------------------
  4. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
  5. PL/SQL Release 11.2.0.3.0 - Production
  6. CORE 11.2.0.3.0 Production
  7. TNS for Linux: Version 11.2.0.3.0 - Production
  8. NLSRTL Version 11.2.0.3.0 - Production

  9. SQL>


2.查询闪回功能是否开启

可以通过查询v$database视图的flashback_on字段来获取闪回功能的状态,该字段是一个布尔类型,YES表示开启,NO表示未开启。
点击( 此处 )折叠或打开

  1. SQL>
  2. SQL> select flashback_on from v$database;

  3. FLASHBACK_ON
  4. ------------------
  5. NO

  6. SQL>

3.开启归档功能

在开启闪回功能之前,我们必须首先开启数据库归档,否则数据库会报错。

点击(此处)折叠或打开

  1. SQL>
  2. SQL> archive log list;
  3. Database log mode No Archive Mode
  4. Automatic archival Disabled
  5. Archive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
  6. Oldest online log sequence 16
  7. Current log sequence 20
  8. SQL>
  9. SQL> alter database flashback on;
  10. alter database flashback on
  11. *
  12. ERROR at line 1:
  13. ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
  14. ORA-38707: Media recovery is not enabled.


  15. SQL>

ORA-38706和ORA-38707两个报错提醒我们要开启数据库归档,步骤如下;

点击(此处)折叠或打开

  1. SQL>
  2. SQL> alter database archive;
  3. alter database archive
  4.                      *
  5. ERROR at line 1:
  6. ORA-02231: missing or invalid option to ALTER DATABASE


  7. SQL> alter database archivelog;
  8. alter database archivelog
  9. *
  10. ERROR at line 1:
  11. ORA-01126: database must be mounted in this instance and not open in any
  12. instance


  13. SQL> 
  14. SQL>
  15. SQL> shutdown immediate
  16. Database closed.
  17. Database dismounted.
  18. ORACLE instance shut down.
  19. SQL>
  20. SQL> startup mount
  21. ORACLE instance started.

  22. Total System Global Area 941600768 bytes
  23. Fixed Size 1348860 bytes
  24. Variable Size 536873732 bytes
  25. Database Buffers 398458880 bytes
  26. Redo Buffers 4919296 bytes
  27. Database mounted.
  28. SQL>
  29. SQL> alter database archivelog;

  30. Database altered.

  31. SQL>
  32. SQL> alter database open;

  33. Database altered.

  34. SQL>
  35. SQL> archive log list;
  36. Database log mode Archive Mode
  37. Automatic archival Enabled
  38. Archive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
  39. Oldest online log sequence 16
  40. Next log sequence to archive 20
  41. Current log sequence 20
  42. SQL>
  43. SQL>

4.开启闪回功能

4.1设置参数

闪回功能和两个初始化参数有关,我们先认识一下,其中, db_recovery_file_dest_size表示闪回恢复区大小,db_recovery_file_dest表示闪回恢复区路径。

点击(此处)折叠或打开

  1. SQL>
  2. SQL> show parameter db_recovery

  3. NAME TYPE VALUE
  4. ------------------------------------ ----------- ------------------------------
  5. db_recovery_file_dest string
  6. db_recovery_file_dest_size big integer 0
  7. SQL>
在开启闪回功能前,必须设置这两个参数,而且,二者还有先后顺序,如果顺序搞错了系统也会报错并给出提示信息。

点击(此处)折叠或打开

  1. SQL>
  2. SQL> alter system set db_recovery_file_dest=\'/home/oracle/flashback\';
  3. alter system set db_recovery_file_dest=\'/home/oracle/flashback\'
  4. *
  5. ERROR at line 1:
  6. ORA-02097: parameter cannot be modified because specified value is invalid
  7. ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE


  8. SQL>
  9. SQL> alter system set db_recovery_file_dest_size=2g;

  10. System altered.

  11. SQL>
  12. SQL> alter system set db_recovery_file_dest=\'/home/oracle/flashback\';

  13. System altered.

  14. SQL>
  15. SQL> show parameter db_recovery

  16. NAME TYPE VALUE
  17. ------------------------------------ ----------- ------------------------------
  18. db_recovery_file_dest string /home/oracle/flashback
  19. db_recovery_file_dest_size big integer 2G
  20. SQL>

4.2开启闪回功能

需要注意的一点是,在10G中,如果要开启数据库级别的闪回,需要设置相关的参数,并且使数据库处于归档模式,然后再在MOUNT状态下开启闪回。在11G中,如果设置了相关的参数及其开启了归档,那么可以再OPEN状态下打开闪回。这也算是Oracle 11g的一个新特性。

点击(此处)折叠或打开

  1. SQL>
  2. SQL> select status from v$instance;

  3. STATUS
  4. ------------
  5. OPEN

  6. SQL>
  7. SQL> alter database flashback on;

  8. Database altered.

  9. SQL>
  10. SQL> select flashback_on from v$database;

  11. FLASHBACK_ON
  12. ------------------
  13. YES

  14. SQL>
这样,我们就开启了数据库闪回功能,进而可以实现闪回数据库等功能。

5.关闭闪回功能

关闭闪回功能十分简单,一条语句就能搞定。

点击(此处)折叠或打开

  1. SQL>
  2. SQL> alter database flashback off;

  3. Database altered.

  4. SQL> select flashback_on from v$database;

  5. FLASHBACK_ON
  6. ------------------
  7. NO

  8. SQL>

6.总结

从上面的过程来看,需要注意几点:

1.Oracle11g支持在Open状态下开启闪回功能,这一点和Oracle 10g等较早版本不一样,算是一个新特性;
2.开启数据库闪回的前提条件是,开启数据库归档;

3.设置两个初始化参数:闪回恢复区大小db_recovery_file_dest_size和闪回恢复区路径db_recovery_file_dest,而这两个参数是有先后顺序的,必须先设置db_recovery_file_dest_size后设置db_recovery_file_dest,否则系统会报错并给出提示;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值