无备份数据文件的恢复

本文详细介绍了在数据库环境中,当数据文件被意外删除后,如何通过一系列步骤进行恢复,确保数据完整性和数据库正常运行。从创建表空间、插入数据开始,到关闭数据库、删除数据文件,再到恢复数据文件并重新上线,每个步骤都配有关键操作的代码示例,帮助读者理解整个恢复过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无备份数据文件的恢复

流程:
1. 新建表空间及表,向表里插入一条数据;
2. 关闭数据库;
3. 在操作系统删除新建表空间的数据文件;
4. 重新启动数据库,报错;
5. 手动将数据文件下线;
6. 打开数据库,先让数据正常对外工作;
7. recover datafile ..(前提是从数据文件诞生起日志文件都存在)
8. 手动将数据文件上线;


--新建测试环境

create tablespace test
datafile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST01.DBF'
size 100m autoextend on next 10m maxsize unlimited
extent management local autoallocate
segment space management auto;


--新建测试表
create table t1
(
sid int not null primary key,
sname varchar2(10)
)
tablespace test;

--循环导入数据
declare
maxrecords constant int:=20000;
i int :=1;
begin
for i in 1..maxrecords loop
insert into t1 values(i,'ocpyang');
end loop;
dbms_output.put_line(' 成功录入数据! ');
commit;
end;
/

--2.模拟删除文件
shutdown immediate;

host del E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST01.DBF

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 843456512 bytes
Fixed Size 2180424 bytes
Variable Size 629148344 bytes
Database Buffers 205520896 bytes
Redo Buffers 6606848 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST01.DBF'


alter database datafile 5 offline;


shutdown immediate;


startup;


SQL> select file#,status,name from v$datafile;

FILE# STATUS NAME
---------- ------- --------------------------------------------------
1 SYSTEM E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF
2 ONLINE E:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF
3 ONLINE E:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF
4 ONLINE E:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF
5 OFFLINE E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST01.DBF

recover datafile 5;

ORA-00283: 恢复会话因错误而取消
ORA-01110: 数据文件 5: 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST01.DBF'
ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 5: 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST01.DBF'

--重构数据文件
alter database create datafile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEST01.DBF';

recover datafile 5;

完成介质恢复。

alter database datafile 5 online;

select count(*) from t1;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值