Oracle数据库的大恢复(误操作而引起)_绿色软件之家

绿色软件之家:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置: 首页数据库Oracle → Oracle数据库的大恢复(误操作而引起)

Oracle数据库的大恢复(误操作而引起)

时间:2015-06-28 00:00:00 来源:绿色软件之家 作者:网管联盟 我要评论(0)

以下的文章主要介绍的是由于一次误操作而引起的Oracle数据库的大恢复,前两天我在Oracle 10g手动建库脚本中柔然看到dbms_backup_restore.zerodbid(0)的过程,其中主要的作用是修改Oracle数据库的dbid。

于是想通过该存储直接在sqlplus中执行修改dbid。

修改之前记录其dbid

引用

?

  1. SQL>?select?dbid?from?v$database; ?
  2. DBID ?
  3. 1488207495 ?

?

修改dbid

引用

?

  1. SQL>?exec?dbms_backup_restore.zerodbid(0); ?
  2. PL/SQL?procedure?successfully?completed. ?

?

貌似执行成功了,但随后alert日志显示ckpt进程将数据实例终止

引用

?

  1. Tue?Mar?9?01:43:22?2010 ?
  2. CKPT:?terminating?instance?due?to?error?1242 ?
  3. Instance?terminated?by?CKPT,?pid?=?16653?
  4. Tue?Mar?9?01:43:53?2010 ?

?

再次启动Oracle数据库报错

引用

?

  1. Tue?Mar?9?01:56:09?2010 ?
  2. Errors?in?file?/ora10g/app/admin/ldbra/udump/ldbra_ora_12275.trc: ?
  3. ORA-01221:?data?file?1?is?not?the?same?file?to?a?background?process ?
  4. ORA-1221?signalled?during:?ALTER?DATABASE?OPEN... ?

?

dump Oracle数据文件头

引用

?

  1. SQL>?ALTER?SESSION?SET?EVENTS?'immediate?trace?name?file_hdrs?level?3';?

通过跟踪文件可以看到dbid以被重置为0

引用

?

  1. V10?STYLE?FILE?HEADER: ?
  2. Compatibility?Vsn?=?169870080=0xa200300 ?
  3. Db?ID=0=0x0,?Db?Name='LDBRA'?
  4. Activation?ID=0=0x0 ?
  5. Control?Seq=8122=0x1fba,?File?size=65280=0xff00 ?
  6. File?Number=1,?Blksiz=8192,?File?Type=3?DATA ?

?

还有一种途径是通过bbed工具观察

引用

?

  1. struct?kcvfhhdr,?76?bytes?@20 ?
  2. ub4?kccfhswv?@20?0x00000000 ?
  3. ub4?kccfhcvn?@24?0x0a200300 ?
  4. ub4?kccfhdbi?@28?0x00000000 ?

?

当然第一反应是重建控制文件,看看能不能恢复成功

引用

?

  1. SQL>?alter?database?backup?controlfile?to?trace; ?
  2. Database?altered. ?
  3. STARTUP?NOMOUNT ?
  4. CREATE?CONTROLFILE?REUSE?DATABASE?"LDBRA"?RESETLOGS?ARCHIVELOG ?
  5. MAXLOGFILES?16 ?
  6. MAXLOGMEMBERS?3 ?
  7. MAXDATAFILES?100 ?
  8. MAXINSTANCES?8 ?
  9. MAXLOGHISTORY?292 ?
  10. LOGFILE ?
  11. GROUP?1?'/ora10g/app/oradata/ldbra/redo01.log'?SIZE?50M, ?
  12. GROUP?2?'/ora10g/app/oradata/ldbra/redo02.log'?SIZE?50M, ?
  13. GROUP?3?'/ora10g/app/oradata/ldbra/redo03.log'?SIZE?50M ?
  14. --?STANDBY?LOGFILE ?
  15. DATAFILE ?
  16. '/ora10g/app/oradata/ldbra/system01.dbf', ?
  17. '/ora10g/app/oradata/ldbra/undotbs01.dbf', ?
  18. '/ora10g/app/oradata/ldbra/sysaux01.dbf', ?
  19. '/ora10g/app/oradata/ldbra/users01.dbf', ?
  20. '/ora10g/app/oradata/ldbra/example01.dbf', ?
  21. '/ora10g/app/product/10.2.0/db_1/dbs/company.dbf', ?
  22. '/ora10g/app/product/10.2.0/db_1/dbs/streams.dbf' ?
  23. CHARACTER?SET?ZHS16GBK

关键词标签:Oracle数据库恢复

相关阅读

文章评论
发表评论

热门文章 Oracle中使用alter table来增加,删除,修改列的语法 Oracle中使用alter table来增加,删除,修改列的语法 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 误删Oracle数据库实例的控制文件 误删Oracle数据库实例的控制文件 为UNIX服务器设置Oracle全文检索 为UNIX服务器设置Oracle全文检索

相关下载

    人气排行 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 Oracle中使用alter table来增加,删除,修改列的语法 ORACLE SQL 判断字符串是否为数字的语句 ORACLE和SQL语法区别归纳(1) oracle grant 授权语句 ORACLE修改IP地址后如何能够使用 如何加速Oracle大批量数据处理 Oracle删除表的几种方法