数据库恢复一例

原创 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 
 

直接删除undo及temp表空间文件后的数据库恢复一例

前几天,某用户研发找到我,说他们的研发库坏了,问我能恢复不?我问他们做了什么操作,一个小男孩儿说,看到空间满了,清除了点儿数据,我说是不是连数据库的文件也清除了,他说没有,他清除的是ORACLE_HO...
  • LHDZ_BJ
  • LHDZ_BJ
  • 2013年06月08日 17:41
  • 884

控制文件损坏或者丢失的Oracle 10g数据库恢复控制文件一例

如果控制文件丢失或者损坏了,如何解决这个问题? 查看参数文件中的设置: SQL> show parameter CONTROL_FILES ; NAME                     ...

使用Rman备份片信息远程恢复数据库一例

1、挂载备份服务器的备份目录 1、建立备份片存放目录,这里没有使用catalog,所以需要和生产库备份目录路径相同 mkdir /prod/backup/ 2、挂载备份服务器备份目录 show...

MYSQL数据库世界五百强应用一例

  • 2011年11月17日 22:44
  • 4.75MB
  • 下载

处理数据库存在大量inactive会话一例

技术申请     上周收到XZH转过来的一封CD渠道高级技术申请,反映SN医院的数据库经常提示ora-12518(TNS:listener could not hand off clie...

转:不同平台之间的 DB2 数据库迁移一例

----------------------------------------------------------------------------------------------------...

Oracle数据库归档日志满后造成系统宕机解决一例

第一次宕机时,初始以为是系统内存溢出,于是重启应用服务器,发现应用服务器在启动时报错,错误为无法连接到Oracle数据库。于是连接数据库服务器,打开EM后发现系统报错如图: 提示归档日志...

不同平台之间的 DB2 数据库迁移一例

关于数据库迁移,如果操作系统相同,例如从 Windows 系统迁移到 Windows 系统,或者从 AIX 系统迁移到 AIX 系统都比较好处理,一般使用 BACKUP 和 RESTORE 命令就可以...

Access数据库的多表更新方法和列变行一例

(1)Access数据库的多表更新方法 x = "update " + DLTB + " a inner join tbarea2 b  on a.objectid=b.FID  set a." +...
  • hsg77
  • hsg77
  • 2012年04月01日 18:57
  • 2381
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库恢复一例
举报原因:
原因补充:

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