首页 > 开发 > 综合 > 正文

归档模式下用户管理的完全恢复

2024-07-21 02:34:05
字体:
来源:转载
供稿:网友

  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:oracleora92RDBMS
  最早的概要日志序列   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:ORACLEORADATAXINAHESYSTEM01.DBF'
  
  把备份的SYSTEM01.dbf文件还原回去
  
  然后recover database 或 recover datafile 'D:ORACLEORADATAXINAHESYSTEM01.DBF'
  
  SQL> recover datafile 'D:ORACLEORADATAXINAHESYSTEM01.DBF';
  完成介质恢复。
  
  打开数据库有提示
  SQL> alter database open;
  alter database open
  *
  ERROR 位于第 1 行:
  ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件
  ORA-01110: 数据文件 2: 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF'
  
  把备份的UNDOTBS01.DBF文件还原回去,执行recover database 或 recover datafile 'D:ORACLEORADATAXINAHEUNDOTBS01.DBF'
  
  SQL> recover datafile 'D:ORACLEORADATAXINAHEUNDOTBS01.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:ORACLEORADATAXINAHEUSERS01.DBF'
  
  此时出现错误,users表空间不能在线了。这时把备份的users01.DBF还原回去。
  然后
  
  SQL> recover tablespace users;
  ORA-00279: 更改 292331 (在 03/18/2005 16:36:05 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:ORACLEORA92RDBMSARC00004.001
  ORA-00280: 更改 292331 对于线程 1 是按序列 # 4 进行的
  
  
  指定日志: {<RET>=suggested filename AUTO CANCEL}
  auto
  ORA-00279: 更改 292907 (在 03/18/2005 16:45:43 生成) 对于线程 1 是必需的
  ORA-00289: 建议: D:ORACLEORA92RDBMSARC00005.001
  ORA-00280: 更改 292907 对于线程 1 是按序列 # 5 进行的
  ORA-00278: 此恢复不再需要日志文件 'D:ORACLEORA92RDBMSARC00004.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:oracleoradataxinahetestspace.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:ORACLEORADATAXINAHETESTSPACE.DBF'
  
  由于没有备份数据文件,我重新创建一个
  
  SQL> alter database create datafile
   2 'D:ORACLEORADATAXINAHETESTSPACE.DBF';
  
  数据库已更改。
  
  SQL> recover tablespace testspace;
  完成介质恢复。
  SQL> alter tablespace testspace online;
  
  表空间已更改。

  
  SQL> select * from scott.test3;
  
      ID
  ----------
       1
  完成。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表