oracle 备份和闪回区,oracle备份与恢复--闪回技术

一•启用闪回数据库

1.启用归档模式

sql>shutdown immediate;

sql>startup mount;

sql>alter database archivelog;

2.建立闪回区

sql>alter system set db_recovey_file_dest='/opt/oracle/flash_recovery_area' scope=both;

sql>alter system set db_recovery_file_dest_size=3g scope=both;

3.设置闪回数据库的数据保留周期为一天,以min为单位

sql>alter system set db_flashback_retention_target=1440;

4.启用闪回日志

sql>alter database flashback on;

sql>alter database open;

二•使用scn闪回数据库

1.查询数据库系统当前的scn(记下此scn)

sql>select current_scn from v$database;

2.改变数据库的当前状态,模拟创建表test1,并插入1条数据

create table test1(id number,name char(20));

insert into test1 values(1,'data');

commit;

3.进行闪回数据库恢复,将数据库恢复到创建表之前的状态

SQL> select OLDEST_FLASHBACK_SCN from v$FLASHBACK_DATABASE_LOG;(查看scn)

shutdown immediate

startup mount;

flashback database to scn 之前查到的scn

4.最后使用resetlogs选项打开数据库

alter database open resetlogs;

5.验证数据库的状态(test1表应该不存在)

SQL> select from test1;

select from test1

*

ERROR at line 1:

ORA-00942: table or view does not exist

6.按照指定时间闪回数据库

1)设置显示日期格式

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

select sysdate from dual;(查看系统时间)

2)改变数据库的当前状态,模拟创建表test2,并插入1条记录

sql>set time on;

sql>create table test2(id number,name char(20));

sql>insert into test2 values(1,'data');

sql>commit;

sql>shutdown immediate;

sql>startup mount;

sql>flashback database to timestamp(to_timestamp('......'));(....即为前面查看到系统时间)

sal>alter database open resetlogs;

sql>select * from test2;

ERROR at line 1:

ORA-00942: table or view does not exist(显示test2表不存在)

说明:闪回数据库操作的限制

1)数据文件损坏或丢失等介质故障不能使用闪回数据库进行恢复。闪回数据库只能基于当前正常运行的数据文件。

2)闪回数据库功能启动后,如果发生数据库控制文件重建或利用备份恢复控制文件,则不能使用闪回数据库

3)不能使用闪回数据库进行数据文件收缩操作

4)不能使用闪回数据库将数据库恢复到闪回日志中可获得最早的SCN之前的SCNM,因为闪回日志文件在一定条件下被删除,而不是始终保存在闪回恢复区中

三、闪回表

闪回表可将表恢复到特定的时间点或者指定的SCN

闪回表实际上是对表进行DML操作的过程

数据库保持联机

为了使用数据库闪回表功能,必须满足下列条件:

用户具有FLASHBACK ANY TABLE系统权限,或者具有所操作表的FLASHBACK对象权限

用户具有所操作表的SELECT,INSERT,DELETE,ALTER对象权限

启动被操作表的ROW MOVEMENT特性,可以采用下列方式进行

ALTER TABLE table ENABLE ROW MOVEMENT;

注意

SYS用户或以AS SYSDBA身份登录的用户不能执行闪回表操作

1.使用scott用户登录

sql>alter user scott account unlock;

sql>alter user scott identified by 123456;

sql>grant connect,resource to scott;

sql>conn scott/123456;

set time on;

sql>create table test3(id number,name char(20));

sql>insert into test3 values(1,'zhang');

commit;

sql>insert into test3 values(2,'zhao');

commit;

sql>insert into test3 values(3,'wang');

commit;

以sys身份连接数据库,并授予scott用户select any dictionary的权限,并最后以scott身份查看当前的scn

conn / as sysdba

grant select any dictionary to scott;

SQL>set time on

sql>conn scott/123456;

sql>select current_scn from v$database;记下此scn

sql>update test3 set name='liu' where id=1;

sql>commit;

sql>select from test3;

sql>delete from test3 where id=3;

sql>commit;

sql>select from test3

2.启动test3表的row movement特性

sql>alter table test3 enable row movement;

sql>flashback table test3 to timestamp to_timestamp(。。。。);

四、闪回删除

闪回删除可恢复使用DROP TABLE语句删除的表,是一种对意外删除的表的恢复机制

闪回删除功能的实现主要是通过数据库中的“回收站”(Recycle Bin)技术实现的

为了使用闪回删除技术,必须开启数据库的“回收站”

启动“回收站”

查看“回收站”

闪回删除的基本语法为

FLASHBACK TABLE [schema.]table TO BEFORE DROP [RENAME TO table]

注意

不支持SYS用户,SYSTEM表空间下的对象也不能从回收站里拿到。故使用SYS或者SYSTEM用户登录时,查询为空

1.启动回收站,将参数recyclebin设置为on,在默认情况下回收站已经启动

SQL> conn / as sysdba;

sql>show parameter recyclebin;

sql>alter system set recyclebin=on deferred;

2.查看回收站,不支持从sys用户,system表空间的对象也不能从回收站里拿到,所以要切换到scott用户测试

sql>conn scott/123456;

create table test4(id number,name char(20));

sql>insert into test4 values(3,'wang')

sql>commit;

sql>drop table test4;

sql>select object_name,original_name,type from user_recyclebin;

闪回表并重命名为new_test4

sql>flashback table test4 to before drop rename to new_test4;

五•闪回查询

sql>conn scott/123456;

sql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

sql>set time on;

sql>select empno,sal from scott.emp where empno=7844;

sql>update scott.emp set sal=2000 where empno=7844;

sql>commit;

sql>update scott.emp set sal=2500 where empno=7844;

sql>update scott.emp set sal=3000 where empno=7844;

sql>commit;

查询7844员工前一个小时的工资值

sql>select empno,sal from scott.emp as of timestamp sysdate-1/24 where empno=7844

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值