- 最后登录
- 2017-5-4
- 在线时间
- 81 小时
- 威望
- 999
- 金钱
- 2391
- 注册时间
- 2013-9-11
- 阅读权限
- 150
- 帖子
- 1124
- 精华
- 5
- 积分
- 999
- UID
- 1220
|
1#
发表于 2017-4-17 11:33:08
|
查看: 1934 |
回复: 0
oracel 9.2 for windows
数据库在非归档情况下
由于操作问题一个表空间数据文件被删除,无冷备,无法启动
(oa表空间的oa1.dbf 丢失,oa表空间由oa1.dbf,oa2.dat,oa3.dat组成,oa2.dat,oa3.dat正常)
在mount方式下执行
ALTER DATABASE DATAFILE 'E:\ORACLE\ORA92\DATABASE\OA1.DBF' offline drop
数据库打开成功
但对表空间oa上的表进行操作,报
create table mylog as select * from oa_hislog
ORA-00376: 此时无法读取文件 16
ORA-01110: 数据文件 16: 'E:\ORACLE\ORA92\DATABASE\oa1.dbf'
使用
ALTER SESSION SET EVENTS '10233 trace name context forever, level 10';
同样后报错,现在想把其他数据文件中的表数据备份出.请问如何处理.
不能按坏数据块处理,现在是文件打不开,找不到最后的块号,所以也无法算出rowid
一个老数据库都不知什么时间被人删除了,现在只有一条路就是把其他数据文件中的读出来.
select * from dba_extents
WHERE segment_name = 'OA_LOG';
是空的,但其他数据文件中还有空间占用,我在本机进行了实验
建一个表空间
mytest由my1.dat,my2.dat,my3,dat组成,建MY表于mytest表空间,添加数据到三个数据文件全部有使用.
SHUTDOWN IMMEDIATE;
删除my1.dat
startup 数据报错
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 19 - 请参阅 DBWR 跟踪文
ORA-01110: 数据文件 19: 'E:\ORACLE\ORA92\DATABASE\MY1.DAT
ALTER DATABASE DATAFILE 'E:\ORACLE\ORA92\DATABASE\MY1.DAT' offline DROP'
alter database open;
select * from my
ORA-00376: 此时无法读取文件 19
ORA-01110: 数据文件 19: 'E:\ORACLE\ORA92\DATABASE\MY1.DAT'
select * from dba_extents WHERE segment_name = 'MY;
为空
select /*+ ROWID(A) */ * from MMY A where rowid<'AAAMlRAARAAAAABAAA'
方式也不能跳过
现在想恢复my表在其他数据文件中(my2,dat,my3,dat)的数据.
也就是说如果表的SEGMENT HEADER正好在丢失的文件中就没有办法把其他还保存在数据文件中数据导出了,如果丢失的不是SEGMENT HEADER所在的数据文件才可以导出其他文件? |
|