Oracle闪回
Oracle闪回作用:自动基于磁盘的备份与恢复,能把表恢复到过去的某个时间点或者SCN。 1.查看闪回区 SQL> show parameter db_recovery_file_dest; 查看闪回区详细信息 SQL> select flashback_on from v$database; 查看闪回区是否开启 2.修改闪回功能 SQL> startup mount; 数据库启动到mount下 SQL> alterdatabase flashback on (off); 开启关闭闪回区 注:如遇到38706事件错误,可能是因为归档不正确。先启用归档. SQL> alter database archivelog; SQL> alter systemset db_flashback_retention_target=2880; 修改闪回时间,默认是1440分钟(1天),闪回时间是指数据库能回退的时间。 3.闪回使用实例:(注:sys用户下不可用闪回) 3.1 闪回drop的表 在非sys用户下创建表和表上索引,插入相关数据 create table abc (fnumber(9)); create index idx_teston abc(f); insert into abc values(1); insert into abc values(2); insert into abc values(3); 3.2 删除表 drop table abc; 3.3 删除表之后,表并没有被真正删除,而是重命名之后放在同一用户下的回收站内,同时表上的索引等也会被如此处理。回收站满后以先进先出的原则管理。 查看表语句 select* from tab; 查看索引语句 select index_name,index_type,table_name from ind; 查看回收站语句 show recyclebin 清空回收站语句 PURGE RECYCLEBIN; 注:没有放入回收站的表不能被闪回 3.4 闪回之后,即可再次看到表,但是表闪回后相应的索引等需要重新编译。 flashback table abc to before drop; 3.5 闪回DML语句 Flashback table abc to timestamp to_timestamp(‘2014-02-14 16:00:00’,’yyyy-mm-dd hh24:mi:ss’) 闪回可能会遇到08189错误,执行下列语句 alter table test varchar enable row movement; 意思是允许Oracle修改rowid。Oracle插入数据时会为该条数据分配唯一rowid并且不变,要启用闪回功能必须开启可修改rowid功能 闪回DML数据是使用回滚段进行恢复 附:查询所有可以撤消的操作,该操作依赖于undo_retention SELECT versions_xidas xid, versions_startscn, versions_endscn, versions_operation FROM scott.abcVERSIONS between scn minvalue and maxvalue 查询undo_retention参数 该参数保存了回滚段数据保存的秒时间,超过该时间则无法闪回。默认为15分钟 修改该参数 alter system set undo_retention=3600; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |