Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1279504
  • 博文数量: 1211
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 14340
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-09 11:20
文章分类

全部博文(1211)

文章存档

2011年(1)

2008年(1210)

我的朋友

分类: 服务器与存储

2008-06-12 22:56:57

我的备份与恢复实验
  
  os:winxp
  oracle:9.2.0.1.0
  sid:xianhe

  一:准备工作
  
  把数据库改为归档模式
  
  SQL> startup mount
  ORACLE 例程已经启动。
  
  Total System Global Area  126950220 bytes
  Fixed Size                   453452 bytes
  Variable Size             109051904 bytes
  Database Buffers           16777216 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  SQL> alter database archivelog;
  
  数据库已更改。
  
  SQL> alter database open;
  
  数据库已更改。
  
  SQL>
  
  设置成自动归档
  SQL> alter system set log_archive_start = true scope=spfile;
  
  系统已更改。
  
  确定数据库在归档模式下并是自动存档的
  SQL> archive log list
  数据库日志模式            存档模式
  自动存档             启用
  存档终点            D:\oracle\ora92\RDBMS
  最早的概要日志序列     2
  下一个存档日志序列   4
  当前日志序列           4
  SQL>
  
  干净的关闭数据库,做一个完全的冷备份。
  
  二:开始实验
  
  实验1:描述如下。
  
  数据库系统数据文件和回退段遭破坏的情况下的恢复。此时数据库的状态是关闭的。
  
  先启动数据库,用scott用户建立test表,并插入两条数据。
  
  SQL> create table scott.test
    2  (id int);
  
  表已创建。
  
  SQL> insert into scott.test values(1);
  
  已创建 1 行。
  
  SQL> insert into scott.test values(2);
  
  已创建 1 行。
  
  SQL> commit;
  
  提交完成。
  
  假设数据库遭意外被迫关闭,并且系统数据文件丢失。
  
  SQL> shutdown abort
  ORACLE 例程已经关闭。
  
  把oracle服务停掉,删除SYSTEM01.dbf和UNDOTBS01.DBF文件
  
  启动服务
  
  启动数据库, 提示如下错误
  SQL> startup
  ORACLE 例程已经启动。
  
  Total System Global Area  126950220 bytes
  Fixed Size                   453452 bytes
  Variable Size             109051904 bytes
  Database Buffers           16777216 bytes
  Redo Buffers                 667648 bytes
  数据库装载完毕。
  ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件
  ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\XINAHE\SYSTEM01.DBF'
  
  把备份的SYSTEM01.dbf文件还原回去
  
  然后recover database 或 recover datafile 'D:\ORACLE\ORADATA\XINAHE\SYSTEM01.DBF'
  
  SQL> recover datafile 'D:\ORACLE\ORADATA\XINAHE\SYSTEM01.DBF';
  完成介质恢复。
  
  打开数据库有提示
  SQL> alter database open;
  alter database open
  *
  ERROR 位于第 1 行:
  ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件
  ORA-01110: 数据文件 2: 'D:\ORACLE\ORADATA\XINAHE\UNDOTBS01.DBF'
  
  把备份的UNDOTBS01.DBF文件还原回去,执行recover database 或 recover datafile 'D:\ORACLE\ORADATA\XINAHE\UNDOTBS01.DBF'
  
  SQL> recover datafile 'D:\ORACLE\ORADATA\XINAHE\UNDOTBS01.DBF';
  完成介质恢复。
  
  然后就可以打开数据库,查看scott用户的test表。
  
  SQL> alter database open;
  
  数据库已更改。
  
  SQL> select * from scott.test;
  
          ID
  ----------
           1
           2
  
  SQL>
  完成。
  
  
  实验2:描述如下
          数据库是打开的,这是损坏的文件是用户的数据文件而不是system和undo文件。
  
  用scott用户在users表空间建立test1表
  
  SQL> create table scott.test1(id int)
    2  tablespace users;
  
  表已创建。
  
  插入两条数据
  
  SQL> insert into scott.test1 values(1);
  
  已创建 1 行。
  
  SQL> insert into scott.test1 values(2);
  
  已创建 1 行。
  
  SQL> commit;
  
  提交完成。
  
  当前日志归档
  
  SQL> alter system archive log current;
  
  系统已更改。
  
  现在破坏users表空间,使其离线,然后删除users01.dbf
  
  SQL> alter tablespace users offline;
  
  表空间已更改。
  
  SQL> alter tablespace users online;
  alter tablespace users online
  *
  ERROR 位于第 1 行:
  ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
  ORA-01110: 数据文件 9: 'D:\ORACLE\ORADATA\XINAHE\USERS01.DBF'
  
  此时出现错误,users表空间不能在线了。这时把备份的users01.DBF还原回去。
  然后
  
  SQL> recover tablespace users;
  ORA-00279: 更改 292331 (在 03/18/2005 16:36:05 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORA92\RDBMS\ARC00004.001
  ORA-00280: 更改 292331 对于线程 1 是按序列 # 4 进行的
  
  
  指定日志: {=suggested | filename | AUTO | CANCEL}
  auto
  ORA-00279: 更改 292907 (在 03/18/2005 16:45:43 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:\ORACLE\ORA92\RDBMS\ARC00005.001
  ORA-00280: 更改 292907 对于线程 1 是按序列 # 5 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORA92\RDBMS\ARC00004.001'
  
  
  已应用的日志。
  完成介质恢复。
  SQL> alter tablespace users online;
  
  表空间已更改。
  
  SQL> select * from scott.test1;
  
          ID
  ----------
           1
           2
  完成。
  
  实验3:描述如下
  
  数据文件没有备份(不能使system和undo文件)的恢复。
  
  创建表空间testspace
  
  SQL> create tablespace testspace
    2  datafile 'd:\oracle\oradata\xinahe\testspace.dbf' size 10m;
  
  表空间已创建。
  
  SQL> create table scott.test3(id int)
    2  tablespace testspace;
  
  表已创建。
  
  SQL> commit;
  
  提交完成。
  
  SQL> alter system switch logfile;
  
  系统已更改。
  
  SQL> insert into scott.test3 values(1);
  
  已创建 1 行。
  
  SQL> commit;
  
  提交完成。
  
  SQL> alter tablespace testspace offline;
  
  表空间已更改。
  
  SQL> select * from scott.test3;
  select * from scott.test3
                      *
  ERROR 位于第 1 行:
  ORA-00376: 此时无法读取文件 11
  ORA-01110: 数据文件 11: 'D:\ORACLE\ORADATA\XINAHE\TESTSPACE.DBF'
  
  由于没有备份数据文件,我重新创建一个
  
  SQL> alter database create datafile
    2  'D:\ORACLE\ORADATA\XINAHE\TESTSPACE.DBF';
  
  数据库已更改。
  
  SQL> recover tablespace testspace;
  完成介质恢复。
  SQL> alter tablespace testspace online;
  
  表空间已更改。
  
  SQL> select * from scott.test3;
  
          ID
  ----------
           1
  完成。

阅读(399) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~