flashback_on被自动改回no

· 作者小荷||【转载时请务必以超链接形式标明文章原始出处和作者信息】
· 永久链接:http://www.oracleblog.cn/working-case/who-change-flashback-on/

 

oracle对flashback log采用了自动管理的方式,并且不允许手工去删除flashback log。当flashback log写满时,会自动的覆盖掉最早的一个flashback日志。并且值得注意的是,如果手工删除了flashback log,数据库将自动把flashback设置成no!
我们先把数据库的flashback打开:

SQL > startup mount ;
ORACLE instance started .
 
Total System Global Area   167772160 bytes
Fixed Size                   1247900 bytes
Variable Size               67110244 bytes
Database Buffers             96468992 bytes
Redo Buffers                 2945024 bytes
Database mounted .
SQL > alter database flashback on ;
 
Database altered .
 
Elapsed : 00 : 00 : 04.00
SQL >
SQL >
SQL > alter database open ;
 
Database altered .
 
Elapsed : 00 : 00 : 29.82
SQL >
SQL >
SQL >
SQL >
SQL >
SQL >
SQL > select flashback_on   from v $ database ;
 
FLASHBACK_ON
----------------
--
YES

 
Elapsed : 00 : 00 : 22.05
SQL >
SQL >

我们来看看当前flashback日志有哪些:

SQL>
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
 
D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>
D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>ls -l
total 16016
-rwxrwxrwa   1 Administrators  SYSTEM          8200192 Jan 21 15:54 O1_MF_4QFKO379_.FLB

我们再看看flashback的相关参数设置:目录大小设置了50M,当前1个flashback日志空间占用率为15.63%

D :\ oracle \ product \ 10.2.0 \ flash_recovery_area \ ORALOCAL \ FLASHBACK > sqlplus " / as sysdba "
 
SQL * Plus : Release 10.2.0.1.0 - Production on 星期三 1 21 15 : 49 : 45 2009
 
Copyright ( c ) 1982 , 2005 , Oracle All rights reserved .
 
 
Connected to :
Oracle Database 10 g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning , OLAP and Data Mining options
 
SQL > show parameter recover
 
NAME                                   TYPE         VALUE
----------------------------------
-- ----------- ------------------------------
db_recovery_file_dest                 string       D :\ oracle \ product \ 10.2.0 \ flash
                                                
_recovery_area
db_recovery_file_dest_size             big integer 50 M
recovery_parallelism                   integer       0
SQL >
SQL > select * from V $ FLASH_RECOVERY_AREA_USAGE ;
 
FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
----------
-- ------------------ ------------------------- ---------------
CONTROLFILE                     0                           0                 0
ONLINELOG                       0                           0                 0
ARCHIVELOG                     0                           0                 0
BACKUPPIECE                     0                           0                 0
IMAGECOPY                       0                           0                 0
FLASHBACKLOG               15.63                           0                 1
 
6 rows selected .
 
Elapsed : 00 : 00 : 04.01
SQL >
SQL > select * from v $ flashback_database_log ;
 
OLDEST_FLASHBACK_SCN OLDEST_FLASHBA RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
------------------
-- -------------- ---------------- -------------- ------------------------
            
1402232 21 - 1 月 - 09                   1440         8192000                   70410240
 
Elapsed : 00 : 00 : 01.54
SQL >
SQL >
SQL >
SQL >

现在,我们执行一些dml,来将block的pre image写到flashback log中。

SQL >
SQL > update test . t1 set a = 9898998 ;
 
261344 rows updated .
 
Elapsed : 00 : 19 : 31.50
SQL >
SQL >
SQL > commit ;
 
Commit complete .
 
Elapsed : 00 : 00 : 03.03

查看目录的使用率情况:

SQL >
SQL > select * from V $ FLASH_RECOVERY_AREA_USAGE ;
 
FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
----------
-- ------------------ ------------------------- ---------------
CONTROLFILE                     0                           0                 0
ONLINELOG                       0                           0                 0
ARCHIVELOG                     0                           0                 0
BACKUPPIECE                     0                           0                 0
IMAGECOPY                       0                           0                 0
FLASHBACKLOG               99.38                       83.75               12
 
6 rows selected .
 
Elapsed : 00 : 00 : 04.20
SQL >
SQL >
SQL >
SQL >
SQL >
SQL >
SQL >
SQL >

查看目录下的文件,删除这些文件:

SQL> host
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
 
D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>ls
O1_MF_4QFKO379_.FLB  O1_MF_4QFO2K5L_.FLB  O1_MF_4QFO39PO_.FLB  O1_MF_4QFO3P9Y_.FLB  O1_MF_4QFO45HB_.FLB  O1_MF_4QFO58MP_.FLB
O1_MF_4QFO2DT2_.FLB  O1_MF_4QFO2O7K_.FLB  O1_MF_4QFO3JFD_.FLB  O1_MF_4QFO3VCX_.FLB  O1_MF_4QFO4ZVK_.FLB  O1_MF_4QFO5MR3_.FLB
 
D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>rm *.FLB
rm: cannot unlink entry "O1_MF_4QFKO379_.FLB": 另一个程序正在使用此文件,进程无法访问。

由于其中一个文件正在被使用,我们只能删除除这个文件外的其他文件:

D :\ oracle \ product \ 10.2.0 \ flash_recovery_area \ ORALOCAL \ FLASHBACK > ls
O1_MF_4QFKO379_ . FLB
 
D :\ oracle \ product \ 10.2.0 \ flash_recovery_area \ ORALOCAL \ FLASHBACK >
D :\ oracle \ product \ 10.2.0 \ flash_recovery_area \ ORALOCAL \ FLASHBACK >
D :\ oracle \ product \ 10.2.0 \ flash_recovery_area \ ORALOCAL \ FLASHBACK > exit

我们来看看删除flashback日志后,flashback的参数变化:

--刚刚开始时,还是 yes
SQL >
SQL > select flashback_on   from v $ database ;
 
FLASHBACK_ON
----------------
--
YES

 
Elapsed : 00 : 00 : 00.18
--做一些
dml
SQL > update test . t1 set a = 12112 ;
 
261344 rows updated .
 
Elapsed : 00 : 02 : 38.09
SQL > commit ;
 
Commit complete .
 
Elapsed : 00 : 00 : 00.04
--查看目录下
flashback log 情况,发现就只有 1 个,且时间是最新的:
SQL > host ls - l
total 7792
-
rwxrwxrwa     1 Administrators   SYSTEM           3989504 Jan 21 17 : 30 O1_MF_4QFKO379_ . FLB
--虽然只有
1 个文件,但是使用率还是在 91.34 %:
SQL > select * from V $ FLASH_RECOVERY_AREA_USAGE ;
 
FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
----------
-- ------------------ ------------------------- ---------------
CONTROLFILE                     0                           0                 0
ONLINELOG                       0                           0                 0
ARCHIVELOG                     0                           0                 0
BACKUPPIECE                     0                           0                 0
IMAGECOPY                       0                           0                 0
FLASHBACKLOG               91.34                           0               12
 
6 rows selected .
 
Elapsed : 00 : 00 : 00.15
SQL >
--参数自动被改成
NO 了!!!
SQL > select flashback_on   from v $ database ;
 
FLASHBACK_ON
----------------
--
NO

 
Elapsed : 00 : 00 : 00.29
SQL >

你可能感兴趣的:(flashback)