转载

ORA-38706&ORA-38707报错解决办法

今天在测试时遇到一个ORA-38706&ORA-38707报错,乍一看到报错内容竟然没有回过神儿来。

ORA-38706&ORA-38707报错

点击(此处)折叠或打开

  1. SYS@HOEGH>select banner from v$version;

  2. BANNER
  3. --------------------------------------------------------------------------------
  4. Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
  5. PL/SQL Release 12.1.0.2.0 - Production
  6. CORE    12.1.0.2.0    Production
  7. TNS for Linux: Version 12.1.0.2.0 - Production
  8. NLSRTL Version 12.1.0.2.0 - Production

  9. SYS@HOEGH>
  10. SYS@HOEGH>alter database flashback on;
  11. alter database flashback on
  12. *
  13. ERROR at line 1:
  14. ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
  15. ORA-38707: Media recovery is not enabled.


  16. SYS@HOEGH>

解决办法

其实很简单,在开启FLASHBACK DATABASE之前必须保证数据库为归档模式,
也就是ORA-38707报错里提到的“Media recovery is not enabled”导致了无法开启闪回数据库功能。
点击(此处)折叠或打开
  1. SYS@HOEGH>
  2. SYS@HOEGH>shu immediate
  3. Database closed.
  4. Database dismounted.
  5. ORACLE instance shut down.
  6. SYS@HOEGH>startup mount
  7. ORACLE instance started.

  8. Total System Global Area 524288000 bytes
  9. Fixed Size         2926320 bytes
  10. Variable Size         440404240 bytes
  11. Database Buffers     75497472 bytes
  12. Redo Buffers         5459968 bytes
  13. Database mounted.
  14. SYS@HOEGH>alter database archivelog;

  15. Database altered.

  16. SYS@HOEGH>archive log list;
  17. Database log mode     Archive Mode
  18. Automatic archival     Enabled
  19. Archive destination     USE_DB_RECOVERY_FILE_DEST
  20. Oldest online log sequence 14
  21. Next log sequence to archive 16
  22. Current log sequence     16
  23. SYS@HOEGH>
  24. SYS@HOEGH>alter database flashback on;

  25. Database altered.

  26. SYS@HOEGH>alter database open;

  27. Database altered.

FLASHBACK DATABASE原理和实施

在Oracle10g以前的版本中,要实现数据库恢复到过去某个时间点或者SCN号,只能够通过数据库的不完全恢复实现。从Oracle 10g开始,可以使用FLASHBACK DATABASE实现。
闪回数据库比使用还原文件和重做日志文件的传统时间点恢复的速度要更快。随着数据库规模的增加,通过还原所有数据文件来执行传统的时间点恢复所需的时间长度变得不太现实。使用闪回数据库时,因为不需要还原数据文件,所以恢复数据库的时间与需要回退的更改数目(而不是数据库大小)成比例。

闪回数据库是通过使用一类被称为闪回数据库日志的日志文件来实施的。Oracle 数据库会定期将数据块的“前像”记录在闪回数据库日志中。为了快速将数据文件更改回退到捕获闪回日志的时间(就在所需目标时间之前),可以重用块图像。然后,应用重做日志文件中的更改来填充间隔。在快速恢复区中会自动创建和管理闪回数据库日志。

使用FLASHBACK DATABASE要比执行数据库系统的不完全恢复要快的多,但是需要对数据库做以下的配置:

1、数据库必须运行在归档模式下。

2、必须启用数据库的闪回功能。



~~~~~~~ the end~~~~~~~~~
hoegh
2016.08.18


正文到此结束
Loading...