oracle没什么没有备份,Oracle丢失无备份数据文件时的恢复过程

用户管理的备份中数据文件没有备份损坏情况下的恢复测试。这种情况下要求数据库必须运行在归档模式下,并且所有的归档日志文件及重做日志文件都存在。

首先新建一个数据文件模拟数据文件丢失的情况:

ALTER TABLESPACE USERS

ADD DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\COLIN\users02.dbf' SIZE 5120K REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE 32767M;

SQL> alter table colin.emp

2 allocate extent(size 100k datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\COLIN\USERS02.DBF');

表已更改。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

利用操作系统命令

删除新建的数据文件D:\ORACLE\PRODUCT\10.2.0\ORADATA\COLIN\users02.dbf

这里我们就模拟了数据文件损坏/丢失的情况

我们再启动数据库,结果报错

SQL> startup

ORACLE例程已经启动。

Total System Global Area167772160 bytes

Fixed Size1247900 bytes

Variable Size83887460 bytes

Database Buffers79691776 bytes

Redo Buffers2945024 bytes

数据库装载完毕。

ORA-01157:无法标识/锁定数据文件6 -请参阅DBWR跟踪文件

ORA-01110:数据文件6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\COLIN\USERS02.DBF'

查询动态视图查看需要恢复的文件

SQL> select * from v$recover_file;

FILE# ONLINEONLINE_

---------- ------- -------

ERRORCHANGE#

----------------------------------------------------------------- ----------

TIME

--------------

6 ONLINEONLINE

FILE NOT FOUND0

SQL> select * from v$recovery_log;

未选定行

这里相应的日志文件还没有生成。

下面我们开始恢复损坏/丢失的数据文件:

1)离线丢失的数据文件:

SQL> alter database datafile 6 offline;

数据库已更改。

2)重新打开数据库:

SQL> alter database open;

数据库已更改。

--这时数据库已打开,不要影响到其他的正常使用(其他无丢失损坏的文件)

3)重新创建损坏/丢失的数据文件:

SQL> alter database create datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\COLIN\USERS02.DBF' as 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\COLIN\USERS02.DBF';

数据库已更改。

4)恢复损坏/丢失的数据文件:(这里要用到相应的归档日志文件及重做日志文件)

SQL> recover datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\COLIN\USERS02.DBF';

完成介质恢复。

5)最后再把相应的数据文件联机,就Ok了~

SQL> alter database datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\COLIN\USERS02.DBF' online;

数据库已更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值