数据库恢复一例

原创 2007年09月13日 13:54:00
数据库为非归档状态,只有一周前的数据文件的备份,无redolog,归档日志和controlfile的备份,此种情况一但数据库出故障只能做不完全恢复,会丢失一周前做备份时到出故障那一时候的所有数据,具体恢复方法如下: 
操作系统为solaris8,内存2G,2颗CPU. 
实验步骤: 
$sqlplus 
/nolog 
SQL
>connect / as sysdba 
SQL
> archive log list 
Database log mode No Archive Mode 
Automatic archival Enabled 
Archive destination 
/opt/oracle/arch/ORCL 
Oldest online 
log sequence 895 
Current log sequence 897 
SQL
> select * from v$logfile; 
GROUP# STATUS 
---------- ------- 
MEMBER 
-------------------------------------------------------------------------------- 
3 
/opt/oracle/db04/oradata/ORCL/redo03.log 
2 
/opt/oracle/db03/oradata/ORCL/redo02.log 
1 
/opt/oracle/db02/oradata/ORCL/redo01.log 
SQL
> select * from v$controlfile; 
STATUS 
------- 
NAME 
-------------------------------------------------------------------------------- 
/opt/oracle/db02/oradata/ORCL/control01.ctl 
/opt/oracle/db03/oradata/ORCL/control02.ctl 
/opt/oracle/db04/oradata/ORCL/control03.ctl 
SQL
>alter database backup controlfile to trace; 
(备份控制文件,此时会在$ORACLE_BASE
/admin/ORCL/udump目录里生成trace文件) 
SQL
> shutdown immediate (关闭当前数据库) 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL
> quit 
Disconnected 
模拟数据丢失: 
删除当前所有的数据文件,控制文件和redolog文件: 
$rm 
-rf ?/opt/oracle/db02/oradata/ORCL/**//* 
$rm /opt/oracle/db03/oradata/ORCL/redo02.log 
$rm /opt/oracle/db03/oradata/ORCL/control02.ctl 
$rm /opt/oracle/db04/oradata/ORCL/redo03.log 
$rm /opt/oracle/db04/oradata/ORCL/control03.ctl 
把一周前备份的数据文件copy回来,目录结构和以前一样,但这时因为没有redolog和controlfile文件,数据库只能启动到nomount状态: 
编辑udump目录下生成的orcl_ora_7140.trc文件,把里面的创建controlfile的那部分内容粘贴下来放在SQL里执行: 
(这里要注意一定要用resetlogs方式重建控制文件,resetlogs之后会生成新的redolog,并且把当前redofile的sequence置为1,否则创建控制文件会失败): 
SQL>STARTUP NOMOUNT 
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS NOARCHIVELOG 
2 MAXLOGFILES 32 
3 MAXLOGMEMBERS 2 
4 MAXDATAFILES 254 
5 MAXINSTANCES 8 
6 MAXLOGHISTORY 907 
7 LOGFILE 
8 GROUP 1 '/opt/oracle/db02/oradata/ORCL/redo01.log' SIZE 50000K, 
9 GROUP 2 '/opt/oracle/db03/oradata/ORCL/redo02.log' SIZE 50000K, 
10 GROUP 3 '/opt/oracle/db04/oradata/ORCL/redo03.log' SIZE 50000K 
11 DATAFILE 
12 '/opt/oracle/db02/oradata/ORCL/system01.dbf', 
13 '/opt/oracle/db02/oradata/ORCL/tools01.dbf', 
14 '/opt/oracle/db02/oradata/ORCL/rbs01.dbf', 
15 '/opt/oracle/db02/oradata/ORCL/temp01.dbf', 
16 '/opt/oracle/db02/oradata/ORCL/users01.dbf', 
17 '/opt/oracle/db02/oradata/ORCL/indx01.dbf', 
18 '/opt/oracle/db02/oradata/ORCL/drsys01.dbf', 
19 '/opt/oracle/db02/oradata/ORCL/wacos.dbf', 
20 '/opt/oracle/db02/oradata/ORCL/wacos01.dbf', 
21 '/opt/oracle/db02/oradata/ORCL/wacos02.dbf', 
22 '/opt/oracle/db02/oradata/ORCL/wacos03.dbf', 
23 '/opt/oracle/db02/oradata/ORCL/wacos04.dbf', 
24 '/opt/oracle/db02/oradata/ORCL/wacos05.dbf', 
25 '/opt/oracle/db02/oradata/ORCL/wacos06.dbf', 
26 '/opt/oracle/db02/oradata/ORCL/nms.dbf', 
27 '/opt/oracle/db02/oradata/ORCL/test.dbf' 
28 CHARACTER SET WE8ISO8859P1; 
Control file created. 
SQL> alter database open resetlogs;(以resetlogs方式打开数据库) 
Database altered. 
SQL> select status from v$instance; (检查数据库的状态) 
STATUS 
------- 
OPEN 
SQL> select * from v$logfile; (检查logfile的状态) 
GROUP# STATUS 
---------- ------- 
MEMBER 
-------------------------------------------------------------------------------- 

/opt/oracle/db04/oradata/ORCL/redo03.log 

/opt/oracle/db03/oradata/ORCL/redo02.log 

/opt/oracle/db02/oradata/ORCL/redo01.log 
SQL> select * from v$controlfile; (检查控制文件的状态) 
STATUS 
------- 
NAME 
 

数据库恢复一例

最近通过做实验总结出一种数据库恢复方法,对今后的工作很有帮助:数据库为非归档状态,假如只有一周前的数据文件的备份,无redolog,归档日志和controlfile的备份,此种情况一但数据库出故障只能...
  • cn_chenfeng
  • cn_chenfeng
  • 2004年09月17日 16:54
  • 989

使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast

3.1 static_cast用法:static_cast ( expression )      该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它...
  • singno116
  • singno116
  • 2008年04月18日 16:43
  • 803

数据库 - 数据库恢复技术

事务定义Jim(James) Gray 詹姆斯·格雷 1998年图灵奖获得者 数据库技术和事务处理专家 二、事务的特性定义 一个数据库操作序列 一个不可分割的工作单位 恢复和并发控制的基本...
  • wangzi11322
  • wangzi11322
  • 2015年05月12日 16:28
  • 1894

SQLSERVER 数据库恢复挂起的解决办法

如果你的数据库还处于挂起状态,请把我下面代码的test改为你的库名,然后执行完,刷新就正常了: USE master GO ALTER DATABASE test SET SINGLE_USER...
  • zxr85
  • zxr85
  • 2016年07月18日 16:22
  • 12161

数据库恢复

如果对某记录进行误删除的话,可以用一个软件,Log Explorer,前提有一个,必须故障还原模式是完全!下面是对该软件的介绍:   http://www.yiii.net/app/servlet/n...
  • simonhehe
  • simonhehe
  • 2006年09月02日 14:42
  • 803

关于SQLserver2016数据库处于恢复挂起状态的解决方案

由于修改了SQLserver中数据库的默认存储位置,此外还把已有数据库位置改变了,所有出现恢复挂起状态,那么这种情况怎么解决呢?请看下面喽------ 默认位置的查看:右键点击你想要查看的数据库-...
  • fsq0827
  • fsq0827
  • 2017年11月10日 16:55
  • 274

SQL数据库(7)——数据库恢复技术

事务的基本概念事务的定义 一个数据库操作序列 一个不可分割的工作单位 恢复和并发控制的基本单位 在关系数据库中,一个事务可以使一条或多条SQL语句,或这个程序 事务的特性事务的ACID特性: 原子性...
  • longxinghaofeng
  • longxinghaofeng
  • 2017年01月01日 13:26
  • 1117

数据库恢复策略

当系统运行过程中发生故障时,利用数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。不同故障其恢复策略和方法也不一样。   第一    事务故障的恢复   第二  系统故障的恢...
  • ggxxkkll
  • ggxxkkll
  • 2012年05月31日 09:46
  • 716

给出函数atoi(x)的实现方法,其功能是将字符串x转换为整数

/给出函数atoi(x)的实现方法,其功能是将字符串x转换为整数。/ /字符串x由0~9十个数字和表示负数的’-‘符号组成,返回值为整型数...
  • cckevincyh
  • cckevincyh
  • 2015年05月16日 18:46
  • 599

控制文件和REDOLOG同时损坏的ORACLE数据库恢复一例

 控制文件和REDOLOG同时损坏的ORACLE数据库恢复一例  一个客户打电话给我,说他们一个测试数据库起不来了,让我过去看看,到客户现场发现数据库已经DOWN了,试着启动一下SQL*Plus: R...
  • wwwlh
  • wwwlh
  • 2010年01月01日 20:51
  • 2202
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库恢复一例
举报原因:
原因补充:

(最多只允许输入30个字)