flashback database操作步骤
默认情况数据库的flashback database是关闭的。
启用Flashback Database 步骤:
1.配置Flash Recovery Area
检查是否启动了flash recovery area:
SQL> show parameter db_recovery_file; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string D:\app\Administrator\flash_recovery_area db_recovery_file_dest_size big integer 3912M
2.启动flashback database
SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 855982080 bytes Fixed Size 2180544 bytes Variable Size 587205184 bytes Database Buffers 260046848 bytes Redo Buffers 6549504 bytes 数据库装载完毕。 SQL> alter database flashback on; 数据库已更改。 SQL> alter database open; 数据库已更改。 SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES SQL>
3.检查是否启用了归档(必须开户归档模式)
SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 10 下一个存档日志序列 12 当前日志序列 12 SQL>
4. 查询当前的scn及当前时间
SQL> select current_scn from v$database; CURRENT_SCN ----------- 1126864 SQL> select sysdate from dual; SYSDATE -------------- 15-10月-14 SQL> select to_char(sysdate,‘YY-MM-DD HH24:MI:SS‘) TIME FROM DUAL; TIME ----------------- 14-10-15 23:43:15
5.删除scott.emp表
SQL> drop table bonus;
表已删除。
6.重启DB 到mount
Flashback Database 实际是对数据库的一个不完全恢复操作,因为需要关闭数据库重启到mount状态
SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 855982080 bytes Fixed Size 2180544 bytes Variable Size 587205184 bytes Database Buffers 260046848 bytes Redo Buffers 6549504 bytes 数据库装载完毕。 SQL>
7.执行恢复:分timestamp 或者SCN两种
SQL> flashback database to timestamp to_timestamp(‘14-10-15 23:43:15‘,‘YY-MM-DD HH24:MI:SS‘); 闪回完成。 或者:SQL> flashback database to scn 1126864; 闪回完成。
8.打开数据库
在执行完flashback database 命令之后,oracle 提供了两种方式让你修复数据库:
1). 直接alter database open resetlogs 打开数据库,当然,指定scn 或者timestamp 时间点之后产生的数据统统丢失。
2). 先执行alter database open read only 命令,以read-only 模式打开数据库,然后立刻通过逻辑导出的方式将误操作涉
及表的数据导出,再执行recover database 命令以重新应用数据库产生的redo,将数据库修复到flashback database 操作前
的状态,然后再通过逻辑导入的方式,将之前误操作的表重新导入,这样的话对现有数据的影响最小,不会有数据丢失。
使用第一种方式打开数据库后可看到之前删除的scott.bonus表已还原。
SQL> alter database open resetlogs; 数据库已更改。 SQL> conn scott/tiger@orcl; 已连接。 SQL> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- BIN$xOhMA3Y1RcGfglRwvq8V+g==$0 TABLE BONUS TABLE DEPT TABLE EMP TABLE SALGRADE TABLE SYS_TEMP_FBT TABLE 已选择6行。
二、与Flashback Database相关的3个视图
1.V$database
这个视图可以查看是否启用了Flashback database功能
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
2.V$flashback_database_log
Flashback Database 所能回退到的最早时间,取决与保留的Flashback Database Log 的多少, 该视图就可以查看许多有用的
信息。
Oldest_flashback_scn / Oldest_flashback_time : 这两列用来记录可以恢复到最早的时点
Flashback_size: 记录了当前使用的Flash Recovery Area 空间的大小
Retention_target: 系统定义的策略
Estimated_flashback_size: 根据策略对需要的空间大小的估计值
SQL> select *from v$flashback_database_stat; BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE ----------- ----------- -------------- ---------- ---------- ------------------------ 2014/10/15 2014/10/16 2269184 4816896 228864 0
3. V$flashback_database_stat
这个视图用来对Flashback log 空间情况进行更细粒度的记录和估计。 这个视图以小时为单位记录单位时间内数据库的活动量
:
Flashback_Data 代表Flashback log产生数量,
DB_Date 代表数据改变数量,
Redo_Date代表日志数量,
通过这3个数量可以反映出数据的活动特点,更准确的预计Flash Recovery Area的空间需求
SQL> select *from v$flashback_database_stat; BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE ----------- ----------- -------------- ---------- ---------- ------------------------ 2014/10/15 2014/10/16 2433024 4849664 396800 0
《FROM:http://blog.csdn.net/tianlesoftware/article/details/4677378》
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。