ORACLE FLASHBACK状态变更

    flashback越来越多人使用,回想起我真正地想开始去了解flashback这功能是在一次2010年的电话面试中。当时,在某个地方的培训机构报了一个名,然后背了一下题库,一下幸运就拿到了OCP认证,但是对这玩意认识过了2个月完全忘了,直到那次面试,从此这玩意就放在脑袋里面比较重要的一个地方。
    原理大家找一下谷哥、度娘 绝对一大堆的文章,我也不想再ctrl+c和ctrl+y了。
    数据库flashback状态从on到off,这个执行起来相对简单,只要执行“alter database flashback off;”即可。(注意,在这个地方会清除flaschback log)但是,从off到on,需要在mount的状态下进行更改,那意味着需要重启instance。
 
以下是实验案例:
SQL> select flashback_on from v$database;
 
FLASHBACK_ON
------------------
YES
 
SQL> select usg.file_type "Type",usg.percent_space_used * nvl(to_number(par.VALUE), 0) / 100 / 1024 / 1024 / 1024 "Used|(G)" from v$flash_recovery_area_usage usg, v$parameter par where usg.percent_space_used > 0 and par.NAME = 'db_recovery_file_dest_size' and usg.file_type = 'FLASHBACKLOG';
 
Type Used|(G)
------------ ----------
FLASHBACKLOG 1.0076
 
SQL> alter database flashback off;
 
Database altered.
 
SQL> select usg.file_type "Type",usg.percent_space_used * nvl(to_number(par.VALUE), 0) / 100 / 1024 / 1024 / 1024 "Used|(G)" from v$flash_recovery_area_usage usg, v$parameter par where usg.percent_space_used > 0 and par.NAME = 'db_recovery_file_dest_size' and usg.file_type = 'FLASHBACKLOG';
 
no rows selected
 
SQL> alter database flashback on;
 
alter database flashback on
*
ERROR at line 1:
ORA-38759: Database must be mounted by only one instance and not open.
 
 
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
 
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 104859216 bytes
Database Buffers 176160768 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database flashback on;
 
Database altered.
 
SQL> alter database open;
 
Database altered.
 
SQL> select flashback_on from v$database;
 
FLASHBACK_ON
------------------
YES
 
SQL> select usg.file_type "Type",usg.percent_space_used * nvl(to_number(par.VALUE), 0) / 100 / 1024 / 1024 / 1024 "Used|(G)" from v$flash_recovery_area_usage usg, v$parameter par where usg.percent_space_used > 0 and par.NAME = 'db_recovery_file_dest_size' and usg.file_type = 'FLASHBACKLOG';
 
Type Used|(G)
------------ ----------
FLASHBACKLOG .0076
 
SQL>
原文地址:https://www.cnblogs.com/nolanchan/p/8016321.html