Oracle实例恢复阶段以及flashback简介,oracleflashback
实例恢复阶段:
1.数据文件不同步
2.前滚(重做redo)
3.文件中的提交和未提交数据
4.打开数据库
5.回退(还原undo)
6.文件中的提交数据
优化实例恢复:(加快脏数据的写)
使用 MTTR
fast_start_mttr_target (建议不要设置/增加系统负担)
db_writer_pricesses(DBWn的进程)
flashback;
位置由 DB_RECOVERY_FILE_DEST 参数指定 大小由 DB_RECOVERY_FILE_DEST_SIZE 参数指定 足够大,可存放备份、归档日志、闪回日志、镜像控制文件和镜像重做日志 根据保留策略自动进行管理
闪回查询:flashback query
闪回事务查询:
闪回版本查询:
闪回表删除:
闪回数据库:
闪回归档:11g新特性
闪回恢复区:所有与恢复相关的文件的默认位置,简化还原和恢复所需文件的管理.
永久文件: 控制文件多路复用副本
、联机重做日志文件多路复用副本
临时文件: 归档日志、 rman备份,副本
、控制文件自动备份
、闪回日志文件,
除了闪回日志,其它文件都可以重定向的别的地方.
archive log list;
--查看是否打开归档
select log_mode from v$database;
--数据库是否打开归档
数据字典的is_recovery_dest_file可以看出是否放到闪回恢复区.
V$controlfile,v$logfile,v$archived_log
v$recovery_file_dest
-----------------------------------------------------
select GROUP#, BYTES/1024/1024 size_m ,MEMBERS ,STATUS from v$log;
--查看日志组
alter system switch logfile;
--切换日志
select GROUP# ,STATUS,TYPE ,MEMBER,IS_RECOVERY_DEST_FILE from v$logfile;
--查看v$logfile中的信息
实例恢复:instance recovery
崩溃恢复:crash recovery
SMON
SMON负责系统监视已经一些系统清理及恢复工作,这些工作主要包括:
1.清理临时空间以及临时段
SMON负责在数据库启动时清理临时表空间中的临时段,或者一些异常操作过程遗留下来的临时段,例如,当创建索引过程中,创建期间分配给索引的Segment被标志为TEMPORARY,如果Create Index (或rebuild Index等)会话因某些原因异常中断,SMON负责清理这些临时段。
2.接合空闲空间
在DMT(字典管理表空间)中,SMON负责把那些在表空间中空闲的并且互相是邻近的Extent接合成一个较大的空闲扩展区,这需要表空间的pctincrease设置为非零值。
3.执行实例恢复(Instance recovery)
在实例恢复过程中,SMON的工作包括三个环节:应用Redo执行前滚、打开数据库提供访问、回滚未提交数据
The SMON background process performs all system monitoring functions on the Oracle database. The SMON process performs a "warm start" each time that Oracle is re-started, ensuring that any in-flight transaction at the time of the last shutdown are recovered. For example, if Oracle crashed hard with a power failure, the SMON process is attached at startup time, and detects any uncompleted work, using the rollback segments to recover the transactions. In addition, SMON performs periodic cleanup of temporary segments that are no longer needed, and also perform tablespace operations, coalescing contiguous free extents into larger extents.
首先你要知道依赖关系:
flashback database依赖于:闪回日志
flashback drop依赖于:回收站
flashback table/query依赖于:undo
开启闪回要在mount状态下:
alter system set db_flashback_retention_target=2880 scope=both;
alter database flashback on;
再者你要利用事务号获得undo语句
查看事务号:select versions_xid,empno,ename,sal from tt01
versions between timestamp minvalue and maxvalue
order by empno;
根据得到的事务号查看undo_sql语句:
select undo_sql from flashback_transaction_query
where xid='versions_xid' //这里的XID就是上面查询到的versions_xid
如果只是闪回误删除的表:
flashback table TT01 to before drop;
闪回的是最近删除的一张表,当然也可以根据情况自定义闪回误删的表
步骤:
查看DB回收站内容:show recyclebin;
在里面可以查看到删除的表,根据里面的recyclebin name可以来查看表结构
比如:desc "BIN$3naDFKEKFIDISB332DI"