最初在关闭状态下进行开启数据库恢复的实例:
以pioneer_data表空间为例:
============================制造假损坏=======================================
1、备份表空间:
sql> alter tablespace pioneer_data begin backup;
Tablespace altered
sql> host copy C:\ORCL1122\DISK8\PIONEER_DATA.DBF C:\orcl1122\beifen1;
1file(s) copied
sql> alter tablespace pioneer_data end backup;
Tablespace altered
2、 cmd -----sqlplus / as sysdba;登录dba
3、关闭数据库
sql> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
4、删除C:\ORCL1122\DISK8\PIONEER_DATA.DBF 文件,制造损坏。。
===============================开始修复============================================ 1、从头开始,cmd --sqlplus / as sysdba;登录dba Copyright (c) 1982,2010,Oracle. All rights reserved. 已连接到空闲例程。 sql> 2、启动数据库: sql> startup ORACLE 例程已经启动。 Total System Global Area 535662592 bytes Fixed Size 1375792 bytes Variable Size 272630224 bytes Database Buffers 255852544 bytes Redo Buffers 5804032 bytes 数据库装载完毕。 ORA-01157: 无法标识/锁定数据文件 8 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 8: 'C:\ORCL1122\DISK8\PIONEER_DATA.DBF' 注:可以看出 数据文件8 出现了问题。 3、将数据文件8脱机 sql> alter database datafile 8 offline; 数据库已更改。 4、启动数据库open,除了数据文件8,其他正常使用。 sql> alter database datafile 8 offline; 数据库已更改。 5、查看数据文件的状态: sql> select file#,status from v$datafile; FILE# STATUS ---------- ------- 1 SYSTEM 2 ONLINE 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 ONLINE 8 OFFLINE 9 ONLINE 10 ONLINE 11 ONLINE 注:数据文件8脱机了 6、查看恢复信息 sql> select * from v$recover_file; FILE# ONLINE ONLINE_ ---------- ------- ------- ERROR CHANGE# ----------------------------------------------------------------- ---------- TIME -------------- 8 OFFLINE OFFLINE FILE NOT FOUND 0 注:error:数据文件not found 丢了。 7、复制备份文件到原来的位置: sql> host copy C:\orcl1122\beifen1\PIONEER_DATA.DBF C:\orcl1122\disk8; 已复制 1 个文件。 8、恢复文件: sql> recover datafile 8; 完成介质恢复。 9、设置数据文件联机: sql> alter tablespace pioneer_data online; 表空间已更改。 10、查看数据文件状态: sql> select file#,status from v$datafile; FILE# STATUS ---------- ------- 1 SYSTEM 2 ONLINE 3 ONLINE 4 ONLINE 5 ONLINE 6 ONLINE 7 ONLINE 8 ONLINE 9 ONLINE 10 ONLINE 11 ONLINE 已选择11行。 11、检查数据: sql> conn nezha/nezha 已连接。 sql> select count(*) from sales; COUNT(*) ---------- 918843 ============================================OK============================================== 原文链接:https://www.f2er.com/oracle/207540.html