专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > DBA实战 > DBA课程 > DBA基础课程:Oracle备份恢复-手动不完全恢复

DBA基础课程:Oracle备份恢复-手动不完全恢复

文章来源: 更新时间:2016/6/24 13:30:18

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

DBA基础课程:Oracle备份恢复-手动不完全恢复

平台:redhat linux as5,Oracle10g

不完全恢复是指把数据库恢复到备份点和失败点之间某个时刻的状态,而且不完全恢复只适用于archivelog模式,不完全恢复可以基于时间点,基于SCN,基于控制文件或基于取消.下面用实例演示一下四种不完全恢复的用法.

一.基于时间的不完全恢复

一般当用户误删除表,误载断表,提交了错误数据后,DBA可以基于时间把数据库恢复到提交数据前的某一个状态

现在数据库中有一个表chenxy

SQL> select * from chenxy;

I

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

10

20

先做个全备份(数据文件)

SQL> shutdown immediate;

SQL> ! cp /u01/oradata/denver/*.dbf /u01/backup

现看当前时间并载断表

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY

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

2009-05-05 23:23:11

SQL> truncate table t;

Table truncated.

现在我们把表chenxy恢复到2009-05-05 23:23:11

1.关闭数据库

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

2.装载数据库

SQL> startup mount;

ORACLE instance started.

Total System Global Area 420549952 bytes

Fixed Size 451904 bytes

Variable Size 385875968 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

3.复制所有数据文件备份

SQL> ! cp /u01/backup/*.dbf /u01/oradata/denver/

注意备份的时间点要在2009-05-05 23:23:11之前,查看备份时间

SQL> select file#,to_char(time,'yyyy-mm-dd hh24:mi:ss') from v$recover_file;

FILE# TO_CHAR(TIME,'YYYY-

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

1 2009-05-05 23:20:18

2 2009-05-05 23:20:18

3 2009-05-05 23:20:18

4 2009-05-05 23:20:18

5 2009-05-05 23:20:18

6 2009-05-05 23:20:18

4.恢复到特定时间点

SQL> recover database until time '2009-05-05 23:23:24';

Media recovery complete.

5.以resetlogs方式打开数据库,并查看表chenxy

SQL> alter database open resetlogs;

Database altered.

SQL> select * from chenxy;

I

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

10

20

当以resetlogs方式打开数据库时,会重新建立重做日志,清空原有重做日志的内容(同时归档日志也全部删除了),而且过去的备份也不能直接使用了,现在重新备份所有数据文件和控制文件,并归档当前日志组

SQL> shutdown immediate;

SQL> ! cp /u01/oradata/denver/*.dbf /u01/backup

SQL> ! cp /u01/oradata/denver/*.ctl /u01/backup

SQL>startup

SQL> alter system switch logfile;

6.简单排错

因为选项resetlogs要清空重做日志,当出现如下错误ORA-00338时可用resetlogs打开数据库

SQL> startup

ORACLE instance started.

Total System Global Area 420549952 bytes

Fixed Size 451904 bytes

Variable Size 385875968 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

ORA-00338: log 2 of thread 1 is more recent than controlfile

ORA-00312: online log 2 thread 1: '/u01/oradata/denver/redo02.log'

使用resetlogs打开后一定要做备份.

SQL> alter database open resetlogs;

Database altered.

SQL> select status from v$instance;

STATUS

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

OPEN

二.基于SCN恢复

1.查看当前SCN号

SQL> select current_scn from v$database;

#或

SQL> select dbms_flashback.get_system_change_number scn from dual;

SCN

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

1673513

1.关闭数据库

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

2装载数据库

SQL> startup mount;

ORACLE instance started.

Total System Global Area 420549952 bytes

Fixed Size 451904 bytes

Variable Size 385875968 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

3.复制所有数据文件备份

SQL> ! cp /u01/backup/*.dbf /u01/oradata/denver/

注意备份的SCN号要小于1673513,查看备份的SCN

SQL> select file#,change# from v$recover_file;

FILE# CHANGE#

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

1 1673087

2 1673087

3 1673087

4 1673087

5 1673087

6 1673087

7 1673087

4.恢复到特定SCN

SQL> recover database until change 1673513;

Media recovery complete.

5.以resetlogs方式打开数据库,并查看表chenxy

SQL> alter database open resetlogs;

Database altered.

SQL> select * from chenxy;

I

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

10

20

6.重新备份所有数据文件和控制文件,并归档当前日志组

SQL> shutdown immediate;

SQL> ! cp /u01/oradata/denver/*.dbf /u01/backup

SQL> ! cp /u01/oradata/denver/*.ctl /u01/backup

SQL>startup

SQL> alter system switch logfile;

三.基于取消不完全恢复

其于取消恢复主要适用于因归档日志丢失,只能恢复到某一个时间的情况,恢复方法和前面两种一样,只是恢复时点不同.

恢复

SQL>shutdown immediate;

SQL>startup mount;

SQL>! cp /u01/backup/*.dbf /u01/oradata/denver/

SQL> recover database until cancel;

Media recovery complete.

SQL>alter database open resetlogs;

四.基于备份控制文件恢复

原理:当用户误删除一个表空间时,当前的控制文件就把此表空间的信息都删了,但是在备份的控制文件里还是它的信息,所以可以用备份的控制文件恢复表空间

删除一个表空间

SQL> drop tablespace chenxy including contents;

Tablespace dropped.

SQL> select * from chenxy;

select * from chenxy

ERROR at line 1:

ORA-00942: table or view does not exist

到alter日志找到删除时间

SQL> show parameter background_dump_dest

NAME TYPE VALUE

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

background_dump_dest string /u01/admin/denver/bdump

SQL>! less /u01/admin/denver/bdump/alert_denver.log

Wed May 6 00:10:19 2009

drop tablespace chenxy including contents

Completed: drop tablespace chenxy including contents

恢复

SQL>shutdown immediate;

SQL>startup mount;

#此时把控制文件也复制过来

SQL>! cp /u01/backup/*.dbf /u01/oradata/denver/

SQL>! cp /u01/backup/*.bak /u01/oradata/denver/

SQL>recover database until time '2009-05-05 23:50:24' using backup controlfile

SQL>alter database open resetlogs

最后最好再做一个全备份.

本文地址:http://www.cuug.com.cn/dba/kecheng/12299582116.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1