以下的文章主要介绍的是由于一次误操作而引起的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中使用SQL语句修改字段类型-oracle修改SQL语句案例
误删Oracle数据库实例的控制文件
为UNIX服务器设置Oracle全文检索
人气排行 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 Oracle中使用alter table来增加,删除,修改列的语法 ORACLE SQL 判断字符串是否为数字的语句 ORACLE和SQL语法区别归纳(1) oracle grant 授权语句 ORACLE修改IP地址后如何能够使用 如何加速Oracle大批量数据处理 Oracle删除表的几种方法
查看所有1条评论>>