下面文章主要介绍一次误操作导致的oracle数据库大恢复。前两天在Oracle 10g的手工建库脚本中看到dbms_backup_restore.zerodbid(0)的过程,它的主要作用是修改Oracle数据库的dbid。
所以我想通过这个存储直接在sqlplus中修改dbid。
之前修改其dbid
引用
SQL>selectdbidfromv$database; DBID 1488207495修改dbid
引用
SQL>execdbms_backup_restore.zerodbid(0); PL/SQLproceduresuccessfullycompleted.执行似乎是成功的,但是警报日志显示ckpt进程终止了数据实例。
引用
TueMar901:43:222010 CKPT:terminatinginstanceduetoerror1242 InstanceterminatedbyCKPT,pid=16653TueMar901:43:532010再次启动Oracle数据库时出错
引用
TueMar901:56:092010 Errorsinfile/ora10g/app/admin/ldbra/udump/ldbra_ora_12275.trc: ORA-01221:datafile1isnotthesamefiletoabackgroundprocess ORA-1221signalledduring:ALTERDATABASEOPEN...转储Oracle数据文件头
引用
SQL>ALTERSESSIONSETEVENTS'immediatetracenamefile_hdrslevel3';您可以通过跟踪文件看到dbid被重置为0。
引用
V10STYLEFILEHEADER: CompatibilityVsn=169870080=0xa200300 DbID=0=0x0,DbName='LDBRA'ActivationID=0=0x0 ControlSeq=8122=0x1fba,Filesize=65280=0xff00 FileNumber=1,Blksiz=8192,FileType=3DATA另一种方法是通过bbed工具观察。
引用
structkcvfhhdr,76bytes@20 ub4kccfhswv@200x00000000 ub4kccfhcvn@240x0a200300 ub4kccfhdbi@280x00000000当然第一反应是重建控制文件,看能不能恢复成功。
引用
SQL>alterdatabasebackupcontrolfiletotrace; Databasealtered. STARTUPNOMOUNT CREATECONTROLFILEREUSEDATABASE"LDBRA"RESETLOGSARCHIVELOG MAXLOGFILES16 MAXLOGMEMBERS3 MAXDATAFILES100 MAXINSTANCES8 MAXLOGHISTORY292 LOGFILE GROUP1'/ora10g/app/oradata/ldbra/redo01.log'SIZE50M, GROUP2'/ora10g/app/oradata/ldbra/redo02.log'SIZE50M, GROUP3'/ora10g/app/oradata/ldbra/redo03.log'SIZE50M --STANDBYLOGFILE 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' CHARACTERSETZHS16GBK关键词:Oracle数据库恢复
优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。本文链接:http://www.123down.cn/gonglue/227407.html