- 最后登录
- 2017-5-4
- 在线时间
- 81 小时
- 威望
- 999
- 金钱
- 2391
- 注册时间
- 2013-9-11
- 阅读权限
- 150
- 帖子
- 1124
- 精华
- 5
- 积分
- 999
- UID
- 1220
|
1#
发表于 2017-4-13 20:29:07
|
查看: 1363 |
回复: 0
单位一台win2003上的oracle 9i 数据库最近因为磁盘故障系统崩了,用的同事告诉我oracle是缺省安装,没有配归档模式,也没做过完全备份,只有一些dmp的逻辑备份文件。哎~~
没办法,我搭了一台同样配置的虚拟机安装了win2003并安装了oracle 9i,并通过工具盘将原系统中的oracle目录整个拷了出来,并将admin目录和oradata目录拷到虚拟机下面,启动sqlplus:
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 9月 9 16:02:47 2014
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01122: 数据库文件 3 验证失败
ORA-01110: 数据文件 3: 'D:\ORACLE\ORADATA\ORAGEO\CWMLITE01.DBF'
ORA-01251: 文件号3的未知文件标题版本读取
SQL>
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orageo MOUNTED
SQL>
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- --------------- ---------- ----------
3 ONLINE ONLINE WRONG FILE TYPE 0
5 ONLINE ONLINE WRONG FILE TYPE 0
SQL>
SQL> select t.name tablespace, f.file# f_no, f.name datafile, f.status, f.creation_time
creation from v$tablespace t, v$datafile f where t.ts# = f.ts# order by t.name;
TABLESPACE F_NO DATAFILE STATUS CREATION
---------- ---- ---------------------------------------- ------- ----------
CWMLITE 3 D:\ORACLE\ORADATA\ORAGEO\CWMLITE01.DBF ONLINE 12-5月 -02
DRSYS 4 D:\ORACLE\ORADATA\ORAGEO\DRSYS01.DBF ONLINE 12-5月 -02
EXAMPLE 5 D:\ORACLE\ORADATA\ORAGEO\EXAMPLE01.DBF ONLINE 12-5月 -02
GEOS 11 D:\ORACLE\ORADATA\ORAGEO\GEOS.DBF ONLINE 17-4月 -13
INDX 6 D:\ORACLE\ORADATA\ORAGEO\INDX01.DBF ONLINE 12-5月 -02
ODM 7 D:\ORACLE\ORADATA\ORAGEO\ODM01.DBF ONLINE 12-5月 -02
SYSTEM 1 D:\ORACLE\ORADATA\ORAGEO\SYSTEM01.DBF SYSTEM 12-5月 -02
TOOLS 8 D:\ORACLE\ORADATA\ORAGEO\TOOLS01.DBF ONLINE 12-5月 -02
UNDOTBS1 2 D:\ORACLE\ORADATA\ORAGEO\UNDOTBS01.DBF ONLINE 12-5月 -02
USERS 9 D:\ORACLE\ORADATA\ORAGEO\USERS01.DBF ONLINE 12-5月 -02
XDB 10 D:\ORACLE\ORADATA\ORAGEO\XDB01.DBF ONLINE 12-5月 -02
已选择12行。
SQL>
-----到这里我知道是CWMLITE01.DBF和EXAMPLE01.DBF数据文件有问题了,庆幸不是我所需要的GEOS表空间数据文件出了错。
-----所以我打算直接将这两个出了问题的数据文件离线,但是没有成功。因为数据库打不开,表空间自然也删不掉。
SQL> alter database datafile 'd:\oracle\oradata\ORAGEO\CWMLITE01.DBF' offline;
alter database datafile 'd:\oracle\oradata\ORAGEO\CWMLITE01.DBF' offline
*
ERROR 位于第 1 行:
ORA-01145: 除非启用了介质恢复,否则不允许紧急脱机
-----因为没有可用的完全备份和归档日志,也没法做介质恢复。可以直接删除该数据文件吗?
SQL> alter database datafile 'd:\oracle\oradata\ORAGEO\CWMLITE01.DBF' offline drop;
数据库已更改。
SQL> alter database datafile 'd:\oracle\oradata\ORAGEO\EXAMPLE01.DBF' offline drop;
数据库已更改。
SQL>
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
----- ------- ------- --------------- ---------- ----------
3 OFFLINE OFFLINE WRONG FILE TYPE 0
5 OFFLINE OFFLINE WRONG FILE TYPE 0
SQL>
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> conn /as sysdba
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-00368: 重做日志块中的校验和错误
ORA-00353: 日志损坏接近块 112 更改 95660348 时间 07/14/2014 09:47:23
ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\ORADATA\ORAGEO\REDO02.LOG'
SQL> select group#, sequence#, thread#, members, status from v$log;
GROUP# SEQUENCE# THREAD# MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
1 368 1 1 INACTIVE
2 369 1 1 CURRENT
3 367 1 1 INACTIVE
SQL> select group#, status, member from v$logfile;
GROUP# STATUS MEMBER
---------- ------- ----------------------------------------
3 D:\ORACLE\ORADATA\ORAGEO\REDO03.LOG
2 D:\ORACLE\ORADATA\ORAGEO\REDO02.LOG
1 D:\ORACLE\ORADATA\ORAGEO\REDO01.LOG
-----在参数文件中添加_allow_resetlogs_corruption=TRUE,并重启数据库,运行recover database until cancel;:
SQL> recover database until cancel;
ORA-00279: 更改 95660200 (在 07/14/2014 09:46:19 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ORA92\RDBMS\ARC00369.001
ORA-00280: 更改 95660200 对于线程 1 是按序列 # 369 进行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\ORAGEO\SYSTEM01.DBF'
ORA-01112: 未启动介质恢复
SQL>
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01092: ORACLE 例程终止。强行断开连接
-----到这里数据库直接崩了,查看报警文件:
Media Recovery Log
ORA-279 signalled during: ALTER DATABASE RECOVER database until cancel ...
Tue Sep 09 23:20:34 2014
ALTER DATABASE RECOVER CANCEL
Tue Sep 09 23:20:34 2014
ORA-1547 signalled during: ALTER DATABASE RECOVER CANCEL ...
Tue Sep 09 23:20:34 2014
ALTER DATABASE RECOVER CANCEL
ORA-1112 signalled during: ALTER DATABASE RECOVER CANCEL ...
Tue Sep 09 23:21:45 2014
alter database open resetlogs
Tue Sep 09 23:21:45 2014
RESETLOGS is being done without consistancy checks. This may result
in a corrupted database. The database should be recreated.
RESETLOGS after incomplete recovery UNTIL CHANGE 95660200
Resetting resetlogs activation ID 3842846172 (0xe50d2ddc)
Tue Sep 09 23:21:46 2014
Assigning activation ID 3887689109 (0xe7b96d95)
Thread 1 opened at log sequence 1
Current log# 2 seq# 1 mem# 0: D:\ORACLE\ORADATA\ORAGEO\REDO02.LOG
Successful open of redo thread 1.
Tue Sep 09 23:21:46 2014
SMON: enabling cache recovery
Tue Sep 09 23:21:46 2014
Errors in file d:\oracle\admin\orageo\udump\orageo_ora_2560.trc:
ORA-00704: 引导程序进程失败 在网上查了下,这个好像是蛮严重的错误
ORA-00604: 递归 SQL 层 1 出现错误
ORA-08103: 对象不再存在
Tue Sep 09 23:21:46 2014
Error 704 happened during db open, shutting down database
USER: terminating instance due to error 704
Instance terminated by USER, pid = 2560
ORA-1092 signalled during: alter database open resetlogs...
-----实在搞不定了,初涉备份恢复领域,学艺不精,请各位专家帮忙看看哪里做得不对,该怎么修改,万分感激!!谢谢!
不行,数据库打开了才能offline表空间。
SQL> alter tablespace example offline;
alter tablespace example offline
*
ERROR 位于第 1 行:
ORA-01109: 数据库未打开
SQL>
|
|