当前位置:数据库 > Oracle >>

ORACLE FLASHBACK DATABASE知识整理

ORACLE FLASHBACK DATABASE知识整理
 
1、知识储备
 
 
1)    只有SYSDBA有权执行,闪回前一定要记录当前SCN
 
2)    需要停机,并要求处于ARCHIVELOG模式中
 
3)    闪回日志不能被复用和归档,是自动管理的。RVWR进程负责读SGA中的FLASHBACK BUFFER,写闪回日志,写的的内容是完整的数据块映像的日志。
 
4)    使用FALSHBACK DATABASE闪回后的各数据块SCN很可能不一致,即闪回结果不是一个确定的时间点,而是该时间点前后的一个范围,所以必须用RESETLOGS打开数据库,或者使用alter database open readonly打开查看是否所需(如果在生产环境,read only后就可以EXP重要的表甚至是整个库了),如果是,再RESETLOGS打开,如果不是,shutdown abort后重新闪回。
 
5)    闪回的结果与不完全恢复一样,闪回点之后的工作都丢失。
 
6)    不能返回物理讹误,只能返回用户错误导致的逻辑错误。
 
7)    TRUNCATE的表如果选择闪回,只能应用闪回数据库。
 
8)    闪回数据库将忽略脱机的表空间
 
2、配置
 
 
[sql] 
SQL> select name,flashback_on from v$database; //查看是否已经启用了闪回,如果启用了就不必重复配置了  
NAME       FLASHBACK_ON
 
--------------- ------------------
 
TEST3        NO
 
[sql] 
SQL> ARCHIVE LOG LIST;//必须位于ARCHIVEMODE  
Database log mode            Archive Mode
 
Automatic archival             Enabled
 
Archive destination            USE_DB_RECOVERY_FILE_DEST
 
Oldest online log sequence     11
 
Next log sequence to archive   13
 
Current log sequence           13
 
(可选)需要重启,如果已经设置可以不必重复设置,设置闪回区的地址,这个存储路径应该是结合硬件的具体情况,因为闪回区如果需要较大空间,或者日后可能做调整,则应该放在一个较大的磁盘分区上或独立磁盘,给日后空间调整留有余地。
 
 
[sql] 
SQL>alter system set db_recovery_file_dest='/ss' scope=both;  
System altered.
 
(可选)需要重启,如果已经设置可以不必重复设置,设置闪回区的大小。
 
 
[sql] 
SQL>alter system setdb_recovery_file_dest_size=20G scope=both;  
System altered.
 
(可选)需要重启,如果已经设置可以不必重复设置,设置保留时间,1440单位为分钟,即24小时,前提是,闪回区提供了足够的空间,可以存放24小时的内容
 
 
[sql] 
SQL>alter system set db_flashback_retention_target=1440 scope=both;  
System altered.
 
[sql] 
SQL>shutdown immediate;  
Oracle instance shut down
 
 
[sql] 
SQL>startup mount;  
connected to target database (not started)
 
Oracle instance started
 
Total System Global Area    1272213504 bytes
 
Fixed Size                     1336260 bytes
 
Variable Size                788532284 bytes
 
Database Buffers             469762048 bytes
 
Redo Buffers                  12582912 bytes
 
database mounted
 
[sql] 
SQL>alter database flashback on;//打开闪回  
Database altered.
 
/**************************************注释************************************************/
 
[sql] 
SQL>alter tablespace xxx flashback off;//关闭某个表空间的闪回  
能够容忍长时间停机的表空间可以关闭闪回
允许任意删除的表空间可以关闭闪回
能够被非常快还原与恢复的表空间可以关闭闪回
如果某表空间没有打开闪回,则在闪回数据库之前,必须将此表空间OFFLINE,闪回将忽略脱机的表空间。否则会报ORA-38753和ORA-01110
/**************************************注释结束*********************************************/
[sql] 
SQL>alter database open; //打开数据库  
Database altered
 
3、查看
1)    查看闪回恢复区及大小是否设置
 
[sql] 
SQL>showparameter db_recovery;  
NAME                   TYPE           VALUE
 
--------------------------------------- --------------------------
 
db_recovery_file_dest     string    /u01/app/oracle/flash_recovery_area
 
db_recovery_file_dest_size big integer 3852M
 
2)   查询目前的设置能够最远闪回多久的数据库
 
 
[sql] 
SQL> select oldest_flashback_scn as oldest_scn,to_char(oldest_flashback_time,'yyyy-mm-ddhh24:mi:ss') as oldest_time from v$flashback_database_log;   
OLDEST_SCNOLDEST_TIME
 
-----------------------------
 
837455 2013-07-27 16:50:30
 
3)    
 
[sql] 
select oldest_flashback_scn as oldest_scn,to_char(oldest_flashback_time,'yyyy-mm-ddhh24:mi:ss') as oldest_time,retention_target,flashback_size/1024/1024 as fb_size_mb,estimated_flashback_size/1024/1024 as estimated_size_mb from v$flashback_database_log;  
4)   查找每个时间段内闪回数据库所需的数据
 
 
[sql] 
SQL>select to_char(begin_time,'yyyy-mm-dd hh24:mi:ss') as begin_time,to_char(end_time,'yyyy-mm-dd hh24:mi:ss') as end_time,flashback_data/1024/1024 as fb_date_mb,db_data/1024/1024 as db_date_mb,redo_data/1024/1024 as redo_date_mb,estimated_flashback_size as estimated_size from v$flashback_database_stat;  
5)   SGA 中自动分配的闪回缓冲区
 
 
[sql] 
SQL>select * from v$sgastat where name='flashback generation buff';  
POOL         NAME                           BYTES
 
---------------------------------------------------- ----------
 
shared pool  flashback generation buff         8388608
 
6)  查找具体的表空间是否打开闪回
 
 
[sql] 
SQL>select name,flashback_on from v$tablespace;  
NAME                             FLASHBACK_ON
 
----------------------------------------------------------
 
SYSTEM                      
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,