当前位置:  数据库>oracle

一次误操作引起的Oracle数据库大恢复

    来源: 互联网  发布时间:2017-03-24

    本文导语:   事情起由是在Oracle 10g手动建库脚本中看到dbms_backup_restore.zerodbid(0)过程,其中作用是修改数据库的dbid。于是想通过该存储直接在sqlplus中执行修改dbid。   修改之前记录其dbid   引用   SQL> select dbid from v$database;   DBID ...

  事情起由是在Oracle 10g手动建库脚本中看到dbms_backup_restore.zerodbid(0)过程,其中作用是修改数据库的dbid。于是想通过该存储直接在sqlplus中执行修改dbid。

  修改之前记录其dbid

  引用

  SQL> select dbid from v$database;

  DBID

  ----------

  1488207495

  修改dbid

  引用

  SQL> exec dbms_backup_restore.zerodbid(0);

  PL/SQL procedure successfully completed.

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

  引用

  Tue Mar  9 01:43:22 2010

  CKPT: terminating instance due to error 1242

  Instance terminated by CKPT, pid = 16653

  Tue Mar  9 01:43:53 2010

  再次启动数据库报错

  引用

  Tue Mar  9 01:56:09 2010

  Errors in file /ora10g/app/admin/ldbra/udump/ldbra_ora_12275.trc:

  ORA-01221: data file 1 is not the same file to a background process

  ORA-1221 signalled during: ALTER DATABASE OPEN...

  dump Oracle数据文件头

  引用

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

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

  引用

  V10 STYLE FILE HEADER:

  Compatibility Vsn = 169870080=0xa200300

  Db ID=0=0x0, Db Name='LDBRA'

  Activation ID=0=0x0

  Control Seq=8122=0x1fba, File size=65280=0xff00

  File Number=1, Blksiz=8192, File Type=3 DATA

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

  引用

  struct kcvfhhdr, 76 bytes                @20

  ub4 kccfhswv                          @20       0x00000000

  ub4 kccfhcvn                          @24       0x0a200300

  ub4 kccfhdbi                          @28       0x00000000

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

  引用

  SQL> alter database backup controlfile to trace;

  Database altered.

  STARTUP NOMOUNT

  CREATE CONTROLFILE REUSE DATABASE "LDBRA" RESETLOGS  ARCHIVELOG

  MAXLOGFILES 16

  MAXLOGMEMBERS 3

  MAXDATAFILES 100

  MAXINSTANCES 8

  MAXLOGHISTORY 292

  LOGFILE

  GROUP 1 '/ora10g/app/oradata/ldbra/redo01.log'  SIZE 50M,

  GROUP 2 '/ora10g/app/oradata/ldbra/redo02.log'  SIZE 50M,

  GROUP 3 '/ora10g/app/oradata/ldbra/redo03.log'  SIZE 50M

  -- STANDBY LOGFILE

  DATAFILE

  '/ora10g/app/oradata/ldbra/system01.dbf',

  '/ora10g/app/oradata/ldbra/undotbs01.dbf',

  '/ora10g/app/oradata/ldbra/sysaux01.dbf',

  '/ora10g/app/oradata/ldbra/users01.dbf',

  '/ora10g/app/oradata/ldbra/example01.dbf',

  '/ora10g/app/product/10.2.0/db_1/dbs/company.dbf',

  '/ora10g/app/product/10.2.0/db_1/dbs/streams.dbf'

  CHARACTER SET ZHS16GBK


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • 要实现同样的一个问题,例如数据库的查询操作,并将结果返回到页面中,在Servlet与JavaBean中都可以写相同的数据库查询操作的代码,那么
  • 小妹求教!!关于jsp操作oracle数据库操作的问题(文件读取,插入数据库表相应字段中)
  • JAVA与数据库操作问题
  • Linux 下的C语言实现数据库连接池操作。
  • 如何关闭窗口时触发执行数据库操作?急!请帮忙!
  • Python Mysql数据库操作 Perl操作Mysql数据库
  • C++数据库操作接口 SmartDB
  • 讨论ejb中数据库操作问题
  • applet如何实现对数据库(access)的操作,征求设计方案。
  • Linux下提高数据库操作速度
  • PHP数据库操作类 ezSQL
  • 如何创建日志文件?并且纪录对数据库的操作???
  • 求助 关于LONG VARCHAR 或 数据库insert 操作
  • BMP 进行数据库操作,与bean本身有什么关系。。
  • Linux下如何用C语言操作Oracle数据库相关的图书推荐
  • 请问,如果连接一个Mssql的数据库。并操作里面的数据。谢谢了:)
  • unix下C++代码中如何进行数据库操作?给个完整代码学习学习
  • 关于ubuntu系统下数据库操作工具
  • 关于数据库和操作系统的问题
  • jsp中如何操作数据库(给100分)
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • C++ I/O 成员 flags():操作flags
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • C++ I/O 成员 width():操作域宽度
  • 什么样的操作最耗费服务器的IO操作?
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • 无操作系统下对U盘的操作


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3