`

Oracle恢复实验(一)

阅读更多
环境:Oracle10g、Red Hat 4,Oracle运行在归档模式。

模拟场景:user01.dbf数据文件损坏,关闭数据库条件下恢复。

具体步骤:

1、先做个全库冷备份,备份控制文件、数据文件、参数文件
SQL> select name from v$controlfile
  2  union
  3  select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/home/oracle/oracle/product/oradata/orcl/control01.ctl
/home/oracle/oracle/product/oradata/orcl/control02.ctl
/home/oracle/oracle/product/oradata/orcl/control03.ctl
/home/oracle/oracle/product/oradata/orcl/sysaux01.dbf
/home/oracle/oracle/product/oradata/orcl/system01.dbf
/home/oracle/oracle/product/oradata/orcl/undotbs01.dbf
/home/oracle/oracle/product/oradata/orcl/users01.dbf

7 rows selected.

 也就是关库,备份上面几个文件,并且备份参数文件,口令文件可备可不备。

2、用scott用户登录,建个表,插入些数据。提交,检查一下数据行数。

SQL> conn scott/oracle
Connected.
SQL> create table recover_test tablespace users as select * from emp;

Table created.

SQL> insert into recover_test (select * from emp);

14 rows created.

SQL> insert into recover_test select * from recover_test;

56 rows created.

SQL> /

112 rows created.

SQL> /

224 rows created.

SQL> commit;

Commit complete.

SQL> select count (*) from recover_test;

  COUNT(*)
----------
       448
      
3、多做几次日志切换,这样有且于了解Oracle恢复的原理。
   
SQL> conn /as sysdba
Connected.
SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

4、主机断电,删除user01.dbf,模拟数据文件损坏
SQL> shutdown abort
ORACLE instance shut down.
SQL> !rm -f /home/oracle/oracle/product/oradata/orcl/user01.dbf

5、尝试打开数据库
SQL> startup
ORACLE instance started.

Total System Global Area  130023424 bytes
Fixed Size                  1218100 bytes
Variable Size              62917068 bytes
Database Buffers           62914560 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/home/oracle/oracle/product/oradata/orcl/users01.dbf'

此时提示数据文件找不到。警告日志中可以看到更加详细的信息。

6、恢复数据文件,尝试打开数据库
SQL> !cp /disk2/bak/users01.dbf /home/oracle/oracle/product/oradata/orcl/

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4: '/home/oracle/oracle/product/oradata/orcl/users01.dbf'

此时由于数据库不一致,提示需要介质恢复。检查一下scn情况。
select 'scnOfDatafile',name,checkpoint_change# from v$datafile
union
select 'scnOfDatafileHeader',name,checkpoint_change# from v$datafile_header;

'SCNOFDATAFILE'     NAME                                                         CHECKPOINT_CHANGE#
------------------- ------------------------------------------------------------ ------------------
scnOfDatafile       /home/oracle/oracle/product/oradata/orcl/sysaux01.dbf                    743872
scnOfDatafile       /home/oracle/oracle/product/oradata/orcl/system01.dbf                    743872
scnOfDatafile       /home/oracle/oracle/product/oradata/orcl/undotbs01.dbf                   743872
scnOfDatafile       /home/oracle/oracle/product/oradata/orcl/users01.dbf                     743872
scnOfDatafileHeader /home/oracle/oracle/product/oradata/orcl/sysaux01.dbf                    743872
scnOfDatafileHeader /home/oracle/oracle/product/oradata/orcl/system01.dbf                    743872
scnOfDatafileHeader /home/oracle/oracle/product/oradata/orcl/undotbs01.dbf                   743872
scnOfDatafileHeader /home/oracle/oracle/product/oradata/orcl/users01.dbf                     721971

9 rows selected.

可以明显的看到数据文件users01.dbf的scn比较小,这是备份时的scn。

7、介质恢复
SQL> recover database;
ORA-00279: change 721971 generated at 09/25/2011 13:27:36 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_7_760842868.dbf
ORA-00280: change 721971 for thread 1 is in sequence #7


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 723634 generated at 09/25/2011 14:05:56 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_8_760842868.dbf
ORA-00280: change 723634 for thread 1 is in sequence #8
ORA-00278: log file '/home/oracle/oracle/product/archive/1_7_760842868.dbf' no longer needed for this recovery


ORA-00279: change 723636 generated at 09/25/2011 14:05:57 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_9_760842868.dbf
ORA-00280: change 723636 for thread 1 is in sequence #9
ORA-00278: log file '/home/oracle/oracle/product/archive/1_8_760842868.dbf' no longer needed for this recovery


ORA-00279: change 743752 generated at 09/25/2011 14:10:32 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_10_760842868.dbf
ORA-00280: change 743752 for thread 1 is in sequence #10
ORA-00278: log file '/home/oracle/oracle/product/archive/1_9_760842868.dbf' no longer needed for this recovery


ORA-00279: change 743864 generated at 09/25/2011 14:10:58 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_11_760842868.dbf
ORA-00280: change 743864 for thread 1 is in sequence #11
ORA-00278: log file '/home/oracle/oracle/product/archive/1_10_760842868.dbf' no longer needed for this recovery


ORA-00279: change 743866 generated at 09/25/2011 14:10:59 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_12_760842868.dbf
ORA-00280: change 743866 for thread 1 is in sequence #12
ORA-00278: log file '/home/oracle/oracle/product/archive/1_11_760842868.dbf' no longer needed for this recovery


ORA-00279: change 743868 generated at 09/25/2011 14:11:05 needed for thread 1
ORA-00289: suggestion : /home/oracle/oracle/product/archive/1_13_760842868.dbf
ORA-00280: change 743868 for thread 1 is in sequence #13
ORA-00278: log file '/home/oracle/oracle/product/archive/1_12_760842868.dbf' no longer needed for this recovery


使用auto选项进行恢复,可以看到使用了8-13号日志,到操作系统中看一下:
[oracle@localhost archive]$ ls -lt
total 4112
-rw-r-----  1 oracle oinstall    4608 Sep 25 14:11 1_15_760842868.dbf
-rw-r-----  1 oracle oinstall    1024 Sep 25 14:11 1_14_760842868.dbf
-rw-r-----  1 oracle oinstall    1024 Sep 25 14:11 1_13_760842868.dbf
-rw-r-----  1 oracle oinstall    2048 Sep 25 14:11 1_12_760842868.dbf
-rw-r-----  1 oracle oinstall    1024 Sep 25 14:10 1_11_760842868.dbf
-rw-r-----  1 oracle oinstall   53760 Sep 25 14:10 1_10_760842868.dbf
-rw-r-----  1 oracle oinstall    1536 Sep 25 14:10 1_8_760842868.dbf
-rw-r-----  1 oracle oinstall   30720 Sep 25 14:10 1_9_760842868.dbf
-rw-r-----  1 oracle oinstall 4043776 Sep 25 14:10 1_7_760842868.dbf
还有14、15两个归档日志,可这两个并没有使用。这是为什么?
查看一下警告日志
[oracle@localhost bdump]$ tail -f alert_orcl.log
  Mem# 0 errs 0: /home/oracle/oracle/product/oradata/orcl/redo01.log
Sun Sep 25 14:33:19 2011
Recovery of Online Redo Log: Thread 1 Group 2 Seq 15 Reading mem 0
  Mem# 0 errs 0: /home/oracle/oracle/product/oradata/orcl/redo02.log
Sun Sep 25 14:33:19 2011
Recovery of Online Redo Log: Thread 1 Group 3 Seq 16 Reading mem 0
  Mem# 0 errs 0: /home/oracle/oracle/product/oradata/orcl/redo03.log
Sun Sep 25 14:33:19 2011
Media Recovery Complete (orcl)
Completed: ALTER DATABASE RECOVER    CONTINUE DEFAULT 
根据以上信息,可以看到:Oracle使用的redo日志。
结论:Oracle介质恢复,使用归档日志+Redo日志,优先使用Redo日志。应用完Redo日志,数据库就可以打开,如果需要Undo日志,继续Undo日志做回滚。可以在第2步发起一个未提交事务,abort关库后,可以看到效果。

8、验证一下SCN
select 'scnOfDatafile',name,checkpoint_change# from v$datafile
union
select 'scnOfDatafileHeader',name,checkpoint_change# from v$datafile_header
union
select 'scnOfDatabase','database',checkpoint_change# from v$database;

'SCNOFDATAFILE'     NAME                                                         CHECKPOINT_CHANGE#
------------------- ------------------------------------------------------------ ------------------
scnOfDatafile       /home/oracle/oracle/product/oradata/orcl/sysaux01.dbf                    743906
scnOfDatafile       /home/oracle/oracle/product/oradata/orcl/system01.dbf                    743906
scnOfDatafile       /home/oracle/oracle/product/oradata/orcl/undotbs01.dbf                   743906
scnOfDatafile       /home/oracle/oracle/product/oradata/orcl/users01.dbf                     743906
scnOfDatafileHeader /home/oracle/oracle/product/oradata/orcl/sysaux01.dbf                    743906
scnOfDatafileHeader /home/oracle/oracle/product/oradata/orcl/system01.dbf                    743906
scnOfDatafileHeader /home/oracle/oracle/product/oradata/orcl/undotbs01.dbf                   743906
scnOfDatafileHeader /home/oracle/oracle/product/oradata/orcl/users01.dbf                     743906

8 rows selected.
发现SCN号已经一致。此时数据库已经处于同步状态。

9、检查数据是否恢复
SQL>  select count(*) from scott.recover_test;

  COUNT(*)
----------
       448
分享到:
评论

相关推荐

    Oracle实验报告(1-8)

    实验一:Oracle安装与配置 在这一部分,你将学习如何在操作系统上安装Oracle数据库软件,包括选择合适的版本、配置硬件要求、安装过程及后续的数据库实例创建。了解ORACLE_HOME环境变量的设置和监听器(Listener)...

    oracle数据库实验大纲2

    Oracle 数据库实验大纲主要针对...总的来说,这个Oracle数据库实验大纲提供了一个系统的学习路径,通过一系列实践操作,使学生能够从理论到实践,深入理解和运用Oracle数据库系统,为未来的工作和研究打下坚实的基础。

    Oracle数据库实验操作

    ### Oracle数据库实验操作知识点 #### 第一部分:SQL基础 ##### 基本查询语句 - **实验1:** 编写一个简单的SQL查询语句,用于查询表中的所有行和所有列。例如: ```sql SELECT * FROM 表名; ``` - **实验2:**...

    Oracle备份恢复实验集

    ### Oracle备份恢复实验集 #### 知识点一:Oracle临时文件丢失与自动恢复 - Oracle 11g引入了临时文件自动恢复的新特性。 - 如果临时表空间中的数据文件丢失,可以在删除临时表空间数据文件后,重启数据库。 - ...

    大型数据库技术-实验六 oracle备份恢复.doc

    本实验旨在让学生掌握Oracle数据库的备份与恢复技术,这对于数据库管理至关重要,尤其是在应对意外数据丢失或系统故障时。 实验内容主要分为两个部分:逻辑备份与恢复以及物理备份与恢复。 逻辑备份与恢复是通过...

    oracle数据库实验报告

    【Oracle数据库实验报告】 在本实验报告中,我们将探讨Oracle数据库的配置、管理和维护过程,主要涉及以下几个关键知识点: 1. **监听程序配置**:Oracle数据库在运行前需要配置监听程序,通过...

    oracle rman恢复实验

    本文将深入探讨“Oracle RMAN恢复实验”这一主题,特别关注于普通用户数据文件丢失后的恢复过程,以及如何进行完整的数据库恢复。通过实际的示例,我们将了解在不同破坏场景下如何运用RMAN进行有效恢复。 ### 一、...

    TSM SAN Agent for ORACLE RAC 实验

    而Tivoli Storage Manager (TSM) 是IBM推出的一款强大、全面的数据保护软件,它可以对ORACLE RAC环境进行高效、可靠的备份和恢复。本实验将探讨如何使用TSM SAN Agent与ORACLE RAC集成,以实现高效的存储区域网络...

    oracle实验指导书

    **3.1 实验一:Oracle的安装与配置** - **目的**:了解Oracle的安装流程,掌握基本的配置方法。 - **主要内容**: - Oracle10g的安装步骤。 - Oracle10g网络配置指南。 - 使用DBCA(Database Configuration ...

    东北大学oracle实验

    通过这个实验,学生可以学习到如何安装配置Oracle环境、创建与管理数据库对象、执行SQL查询以及进行数据库备份和恢复等关键技能。 实验详细涵盖了以下几个方面: 1. **Oracle安装与配置**:实验首先会指导学生下载...

    实验五 Oracle安全管理及备份与恢复.doc

    实验五 Oracle安全管理及备份与恢复、

    Oracle,Oracle数据库实验

    在本次实验中,我们将深入探讨Oracle的几个关键特性和功能,包括存储过程、触发器、备份与恢复以及Oracle对XML的支持。 首先,我们来看Oracle的存储过程。存储过程是一种预编译的SQL语句集合,它可以封装复杂的业务...

    ORACLE数据库实验报告

    Oracle数据库实验报告主要涵盖了使用Database Configuration Assistant (DBCA) 创建数据库的过程。在实验中,你需要在Windows或Linux操作系统上创建一个名为ocp11g的数据库,并确保在创建之前已经存在或创建了一个...

    oracle数据库实验课件及复习题库

    本实验课件及复习题库旨在帮助学习者深入理解和掌握Oracle数据库的关键概念和技术,以提升实际操作能力。 首先,我们来看"oracle复习.doc"。这份文档可能包含了Oracle数据库的基础知识复习,如SQL语言基础、表的...

    Oracle 11g R2 Rman备份与恢复_刘耀龙的博客-CSDN博客_rman备份.pdf

    Oracle 11g R2 的 RMAN (Recovery Manager) 是 Oracle 数据库管理系统中的一个关键工具,主要用于数据库的备份和恢复。RMAN 提供了一种高效且灵活的方式来管理和保护数据库,确保在数据丢失或系统故障时能够快速恢复...

    oracle-RAC实验

    尽管实验中OCR和CRS表决磁盘不使用ASM,但ASM通常用于管理Oracle数据库的存储,提供自动化的磁盘管理和故障恢复功能。 在安装前,需要确保所有必要的环境准备就绪,包括验证终端Shell环境,确保以正确的用户(如`...

    Oracle RMAN异机不完全恢复

    本实验模拟了一种场景,在主机A上误删除了一个名为`test`的数据表,需要借助于RMAN工具在另一台机器B上完成对该表的不完全恢复。 #### 实验目的 本实验的主要目的是展示如何使用Oracle RMAN工具实现跨机器的不完全...

Global site tag (gtag.js) - Google Analytics