网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.如何查看什么时间有哪些数据库对.
.X-Window 设定.
.Oracle for Linux安装.
.ORACLE中的ROWID.
.linux 下oracle9i的安装.
.Oracle笔记-分析函数.
.PGA自动管理原理深入分析及性能调.
.Oracle 8i数据库体系结构.
.FAQ for the Oracle Intelligent.
.Oracle网格计算中文资料—网格计.
.ExactPapers Oracle 1Z0-140 200.
.在Oracle上构建 .NET 应用程序(1).
.Oracle Tuning (Oracle 性能调整.
.Linux 进程调度原理.
.用ORACLE的高级复制实现内外网数.
.Oracle中自动存储管理技术原理及.
.如果你想成为一名DBA.
.ora-600[12333]错误小结及跟踪方.
.用.NET新提供的managed provider.
.如何快速建立多个帐号.

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

发表日期:2008-2-9



  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
  完成。
上一篇:关于数据文件头的检查点SCN 人气:624
下一篇:字符集转换的exp/imp试验一 人气:820
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐