Oracle闪回开启及操作是怎样的

58次阅读
没有评论

共计 2369 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章给大家介绍 Oracle 闪回开启及操作是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Oracle 闪回开启及操作

1. 记录当前时间或 SCN

在数据库变动前记录时间或 SCN

SQL select  to_char(sysdate, YYYY-MM-DD HH24:mi:ss) from dual;

SQL select  current_scn from v$database;

 2. 开启闪回

开启闪回需要数据库在归档模型下,所以首先需要开启归档。并且在 mount 状态下。

首先查看是否开启闪回:

SQL select flashback_on from V$database;

FLASHBACK_ON

——————

NO

如果已经开启了闪回,无须执行下面的操作。

SQL alter system set db_recovery_file_dest_size=30G scope=both;

SQL alter system set db_recovery_file_dest= /u01/flashback  scope=both;

SQL shutdown immediate

SQL startup mount

SQL alter database archivelog;

SQL alter database flashback on;

SQL alter database open;

再进行确认:

SQL select flashback_on from V$database;

FLASHBACK_ON

——————

YES

3. 闪回操作

3.1 闪回数据库

SQL flashback database to time to_date(xxx);

SQL flashback database to time TO_TIMESTAMP (xxx);

SQL flashback database to scn xxx

SQL flashback database to sequence xxx thread 1

SQL flashback database to timestamp(sysdate-1/24)

3.2 闪回表

先要开启 row movement

SQL alter table emp enable row movement;

SQL FLASHBACK TABLE tablename TO TIMESTAMP (JUL-07-2013, 02:33:00) 

SQL FLASHBACK TABLE employee TO SCN 133456;

SQL FLASHBACK TABLE t1 TO TIMESTAMP 2013-03-03 12:05:00 ENABLE TRIGGERS;

闪回表可以分为两种情况,一种是闪回到指定时间或 SCN, 一种是 drop 闪回

闪回到指定时间或 SCN:

SQL flashback table emp to timestampto_timestamp

(2013-09-12 08:00:00 , yyyy-mm-ddhh34:mi:ss

SQL flashback table emp to scn 11064241;

 DROP 闪回:

如果误对表做了 drop 操作,可用下面的方法闪回

SQL flashback table s_emp1 to before drop;

可以以下面的方法闪回

SQL flashback table flashbacktable to before drop rename to a;

SQL flashback table 回收站实体名 to before drop; 

– 闪回表后表的索引也会回来,但是索引名还是在 recyclebin 中显示的名字,所以使用 alterindex“bin$xxx”rename to xxxx 命令修改索引名称。

SQL alter index BIN$s6TKiw4uafDgRAAVF3jtoA==$0

rename to PK_PC_STIM_INJ_ENHANCE_MON

3.3 查询闪回(flashbackquery)

delete 数据库里的数据都删除了以后,还 commit,采用下面的方法实现数据的还原

·查询过去某指定时间点数据库中的数据。

SQL select* from emp as of timestamp to_timestamp(2013-07-05 08:00:00 , yyyy-mm-ddhh34:mi:ss

·删除表后将数据添加到原表中    

SQL insertinto emp select * from emp

as of timestamp to_timestamp

(2013-07-05 08:00:00 , yyyy-mm-ddhh34:mi:ss

3.4 删除闪回(flashbackdrop)

闪回被 dropped 的基表,

·显示回收站信息

SQL show recyclebin

–select* from user_recyclebin

·彻底删除基表

SQL drop table s_emp1 purge ;

—- 彻底删除一个表用 PURGE,这样的删除的表不能闪回。

·清除回收站

SQL purge recyclebin;

·查数据库选项产品:

SQL select * from V$option;

· truncate 删除后不保留存储空间,而 Delete 删除后,保留存储空间,如果要删掉这些存储空间,以释放空间,可以执行以下命令:

SQL alterttable emp deallocate unused;

·如果还要保留一部分,可以用:

SQL alterttable emp deallocate unused 200k;

4. 关于数据闪回的几点说明

* 系统表空间数据不得闪回

* 实体在数据库保存时间不可保证,保留时间取决于系统运行状况,可能是几秒钟,也可能是几个月。

* 基表闪回时,建立在表上的约束不可保证

关于 Oracle 闪回开启及操作是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计2369字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)