oracle scn与数据恢复,【ORACLE备份与恢复】用户管理的:基于scn的数据库不完全恢复...

1、首先,关闭数据库,然后备份所有的数据文件,注意,包括:system表空间的文件,用户表空间的文件、undo表空间的文件。

2、登录数据库,然后,创建一个表data01,并插入数据,提交,显示scn号。

C:\Users\Administrator>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 3月 11 14:48:53 2014

Copyright (c) 1982, 2010, Oracle. All rights reserved.

已连接到空闲例程。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 1068937216 bytes

Fixed Size 2182592 bytes

Variable Size 675283520 bytes

Database Buffers 385875968 bytes

Redo Buffers 5595136 bytes

数据库装载完毕。

数据库已经打开。

SQL> select current_scn from v$database;

CURRENT_SCN

-----------

232765

SQL> create table data01(v int) tablespace data01;

表已创建。

SQL> insert into data01 values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select current_scn from v$database;

CURRENT_SCN

-----------

232805

3、模拟误操作:truncate 了scott.emp,并显示scn号

SQL> truncate table scott.emp;

表被截断。

SQL> select current_scn from v$database;

CURRENT_SCN

-----------

232858

4、关闭数据库,把数据库启动到mount状态,然后,把刚才备份的文件,也就是trauncate之前备份的数据文件,复制到目录下并覆盖原来的文件:

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount;

ORACLE 例程已经启动。

Total System Global Area 1068937216 bytes

Fixed Size 2182592 bytes

Variable Size 675283520 bytes

Database Buffers 385875968 bytes

Redo Buffers 5595136 bytes

数据库装载完毕。

5、进行基于scn的不完全恢复,恢复到scn为232805的时间点的状态,注意,必须用resetlogs来打开数据库。

SQL> recover automatic database until change 232805;

完成介质恢复。

SQL> alter database open resetlogs;

数据库已更改。

6、之所以要这样,是因为把数据库恢复到过去的状态,而联机日志是最新的状态,所以需要重置日志,日志序列号会重新从1开始:

SQL> archive log list

数据库日志模式 存档模式

自动存档 启用

存档终点 d:\demo\archive3

最早的联机日志序列 1

下一个存档日志序列 1

当前日志序列 1

7、测试发现scott.emp数据已经恢复,而创建的data01也恢复了:

SQL> select count(*) from scott.emp;

COUNT(*)

----------

12

SQL> select * from data01;

V

----------

1

8、以resetlogs打开数据库后,过去的备份就不能直接使用,所以为了避免介质失败而无法恢复,必须要重新备份所有数据文件、控制文件:

SQL> select name from v$datafile;

NAME

--------------------------------------------------------------------------------

D:\DEMO\SYSTEM01.DBF

D:\DEMO\SYSAUX01.DBF

D:\DEMO\UNDOTBS1.DBF

D:\DEMO\DATA01.DBF

SQL> alter database begin backup;

数据库已更改。

SQL> host copy d:\demo\system01.dbf d:\demo\backup1\system01.dbf;

已复制 1 个文件。

SQL> host copy d:\demo\sysaux01.dbf d:\demo\backup1\sysaux01.dbf;

已复制 1 个文件。

SQL> host copy d:\demo\undotbs01.dbf d:\demo\backup1\undotbs01.dbf;

系统找不到指定的文件。

SQL> host copy d:\demo\undotbs1.dbf d:\demo\backup1\undotbs1.dbf;

已复制 1 个文件。

SQL> host copy d:\demo\data01.dbf d:\demo\backup1\data01.dbf;

已复制 1 个文件。

SQL> alter database end backup;

数据库已更改。

SQL> alter database backup controlfile to 'd:\demo\backup1\orcl.ctl' reuse;

数据库已更改。

SQL> alter system archive log current;

系统已更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值