本案例主要模拟数据库由于异常宕机,导致部分数据文件和备份控制文件丢失,重建控制文件后,后续操作出现的错误,及解决办法。
假设目前数据共有6个数据文件。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/oradata/zhoul/system01.dbf
/oradata/zhoul/undotbs01.dbf
/oradata/zhoul/sysaux01.dbf
/oradata/zhoul/users01.dbf
/oradata/zhoul/undotbs02.dbf
/oradata/zhoul/zhoul01.dbf
6 rows selected.
SQL> alter database backup controlfile to trace;
Database altered.
假设现在数据库异常宕机,导致控制文件和数据文件部分丢失
SQL> shutdown abort
ORACLE instance shut down.
[oracle@node1 zhoul]$ mv control01.ctl control01.ctl.bak
[oracle@node1 zhoul]$ mv zhoul01.dbf zhoul01.dbf.bak
在数据库nomount之后,采用脚本重建控制文件。
CREATE CONTROLFILE REUSE DATABASE "ZHOUL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/zhoul/redo01.log' SIZE 50M,
GROUP 2 '/oradata/zhoul/redo02.log' SIZE 50M,
GROUP 3 '/oradata/zhoul/redo03.log' SIZE 50M,
GROUP 4 '/oradata/zhoul/redo2_01.log' SIZE 50M,
GROUP 5 '/oradata/zhoul/redo2_02.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/oradata/zhoul/system01.dbf',
'/oradata/zhoul/undotbs01.dbf',
'/oradata/zhoul/sysaux01.dbf',
'/oradata/zhoul/users01.dbf',
'/oradata/zhoul/undotbs02.dbf'
CHARACTER SET ZHS16GBK
;
重建完成后,在mount状态可以看到zhoul01.dbf丢失。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/oradata/zhoul/system01.dbf
/oradata/zhoul/undotbs01.dbf
/oradata/zhoul/sysaux01.dbf
/oradata/zhoul/users01.dbf
/oradata/zhoul/undotbs02.dbf
进行介质恢复,在mount状态看不到zhoul01.dbf状态信息
SQL> recover database;
Media recovery complete.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/oradata/zhoul/system01.dbf
/oradata/zhoul/undotbs01.dbf
/oradata/zhoul/sysaux01.dbf
/oradata/zhoul/users01.dbf
/oradata/zhoul/undotbs02.dbf
将数据库读写打开后,由于数据字典存在zhoul01.dbf信息,可以看到MISSING00006文件
SQL> alter database open;
Database altered.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/oradata/zhoul/system01.dbf
/oradata/zhoul/undotbs01.dbf
/oradata/zhoul/sysaux01.dbf
/oradata/zhoul/users01.dbf
/oradata/zhoul/undotbs02.dbf
/app/oracle/product/10.2.0/db_1/dbs/MISSING00006
6 rows selected.
后台alert日志显示,可以推断出Oracle从数据字典中读取相关信息,反向同步至controfile中。
Dictionary check beginning
Tablespace 'TEMP' #3 found in data dictionary,
but not in the controlfile. Adding to controlfile.
Tablespace 'ZHOUL' #6 found in data dictionary,
but not in the controlfile. Adding to controlfile.
File #6 found in data dictionary but not in controlfile.
Creating OFFLINE file 'MISSING00006' in the controlfile.
Dictionary check complete
由于数据字典并不记录该文件的create checkpoint,create datafile size,所以再次创建该文件错误。
SQL> alter database create datafile 6 as '/oradata/zhoul/zhoul01.dbf';
alter database create datafile 6 as '/oradata/zhoul/zhoul01.dbf'
*
ERROR at line 1:
ORA-01178: file 6 created before last CREATE CONTROLFILE, cannot recreate
ORA-01111: name for data file 6 is unknown - rename to correct file
ORA-01110: data file 6: '/app/oracle/product/10.2.0/db_1/dbs/MISSING00006'
如果此时有6号文件备份,事情将变得很简单。
SQL> alter database rename file '/app/oracle/product/10.2.0/db_1/dbs/MISSING00006' to '/oradata/zhoul/zhoul01.dbf.bak';
Database altered.
SQL> recover datafile 6 ;
Media recovery complete.
SQL> alter database datafile 6 online;
Database altered.
分享到:
相关推荐
本文将基于"ORACLE备份恢复案例"这一主题,详细阐述Oracle数据库的备份策略、备份类型、恢复方法以及如何处理实际工作中遇到的问题。 1. Oracle备份策略: Oracle提供了多种备份策略,包括物理备份(如RMAN备份)...
**恢复案例一:恢复个别表空间或者数据文件** 在某些情况下,可能只需要恢复数据库中的某个特定表空间或数据文件。例如,某个表空间因误操作或硬件故障导致数据丢失。Oracle提供了几种方法来解决这个问题,如使用...
【Oracle 备份与恢复案例】数据库恢复是确保数据库可靠性和正确性的关键步骤,它涉及到在面临各种故障,如硬件故障、软件故障、网络故障、进程故障和系统故障时,如何重构并恢复完整数据库的过程。恢复过程通常包括...
非常详细全面的Oracle备份与恢复案例,包括手工管理和RMAN管理两大部分,都有实例描述详细步骤。
本案例主要探讨了Oracle数据库的实例恢复和介质恢复,以及不同类型的不完全恢复。 首先,我们来看一下实例恢复。实例恢复主要针对的是由于系统故障、进程异常等原因导致数据库实例非正常关闭的情况。在这种情况下,...
Oracle课程设计案例精编教程是针对学习Oracle数据库管理和开发的学员所准备的一份宝贵资源。这份教程通过一系列的实例,帮助读者深入理解Oracle数据库的工作原理和应用技巧,从而提升在实际工作中的技能。 1. ...
"Oracle课程设计案例精编"显然是一份针对学习Oracle数据库的实践教程,旨在帮助学生和初学者通过实例深入理解Oracle的各种概念和技术。 在Oracle的学习中,以下几个关键知识点是不可或缺的: 1. **SQL基础**:SQL...
下面是一个完整的 Oracle RMAN 备份恢复实践案例: 1. 创建 RMAN 库: ```sql CREATE DATABASE RMAN ... ``` 2. 创建表空间和 RMAN 用户: ```sql CREATE TABLESPACE RBS DATAFILE '/export/home/oracle/oradata/...
在本案例精编中,我们预期会涵盖一系列与Oracle相关的实践操作、设计思路以及问题解决技巧。 Oracle,作为世界上最广泛使用的数据库管理系统之一,具有强大的数据处理能力、高度的可扩展性和安全性。这个课程设计...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它提供了强大的数据管理、事务处理、以及复杂的查询功能。本"ORACLE课程设计案例精编"资料包,显然是针对学习Oracle数据库设计与应用的学生或者初学...
### Oracle 数据备份与恢复案例详解 #### 一、Oracle 数据备份概述 在Oracle数据库管理过程中,数据备份是一项至关重要的工作,它确保了在系统故障、人为错误或灾难性事件发生时能够快速有效地恢复数据,避免业务...
"Oracle 课程设计案例精编"是一份针对学习者深入理解和实践Oracle技术的教程,特别适合大学数据库课程设计项目。这个课程设计旨在帮助学生掌握Oracle的核心概念、语言语法以及实际操作技巧。 在Oracle课程设计中,...
在实际操作中,进行数据库恢复时需要一个合适的测试环境,例如在上述描述中提到的Windows 2000 Server操作系统上运行的Oracle 816数据库。恢复操作涉及到对数据文件、控制文件等关键组件的监控和管理。例如,`v$data...