数据文件丢失的处理

数据文件被误删除后,启动的时候报错,提示文件丢失,如果是无所谓的数据库,那么可以如下折腾。

<!--more-->

sys@TEST> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE 例程已经启动。

Total System Global Area 523108352 bytes
Fixed Size 1337632 bytes
Variable Size 390072032 bytes
Database Buffers 125829120 bytes
Redo Buffers 5869568 bytes
数据库装载完毕。
数据库已经打开。
sys@TEST> create tablespace test datafile '/opt/oracle/db/oradata/TEST/test/test01.dmp' size 10m,'/opt/oracle/db/oradata/TEST/test/test02.dmp' size 10m;

表空间已创建。

sys@TEST> !ls /opt/oracle/db/oradata/TEST/test
test01.dmp test02.dmp

sys@TEST> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

sys@TEST> !mv /opt/oracle/db/oradata/TEST/test/test02.dmp /opt/oracle/db/oradata/TEST/test/test02.dmp.bak

sys@TEST> !ls /opt/oracle/db/oradata/TEST/test
test01.dmp test02.dmp.bak

sys@TEST> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE 例程已经启动。

Total System Global Area 523108352 bytes
Fixed Size 1337632 bytes
Variable Size 390072032 bytes
Database Buffers 125829120 bytes
Redo Buffers 5869568 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 8 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 8: '/opt/oracle/db/oradata/TEST/test/test02.dmp'


sys@TEST> alter database datafile '/opt/oracle/db/oradata/TEST/test/test02.dmp' offline drop;

数据库已更改。

sys@TEST> alter database open;

数据库已更改。

sys@TEST> select * from dual;

D
-
X

sys@TEST>
现在加入要重新添加刚才同名的数据文件怎么办呢?如下处理。
sys@TEST> alter tablespace test add datafile '/opt/oracle/db/oradata/TEST/test/test02.dmp' size 10m;
alter tablespace test add datafile '/opt/oracle/db/oradata/TEST/test/test02.dmp' size 10m
*
第 1 行出现错误:
ORA-01537: 无法添加文件 '/opt/oracle/db/oradata/TEST/test/test02.dmp' - 该文件已是数据库的一部分
sys@TEST> alter database create datafile '/opt/oracle/db/oradata/TEST/test/test02.dmp' as '/opt/oracle/db/oradata/TEST/test/test02.dmp' size 10m reuse;

数据库已更改。
sys@TEST> recover datafile '/opt/oracle/db/oradata/TEST/test/test02.dmp';
完成介质恢复。
sys@TEST> alter database datafile '/opt/oracle/db/oradata/TEST/test/test02.dmp' online;

数据库已更改。
sys@TEST> Select a.TABLESPACE_NAME,b.FILE_NAME From DBA_TABLESPACES a,dba_data_files b Where a.TABLESPACE_NAME=b.TABLESPACE_NAME And a.TABLESPACE_NAME='TEST';

TABLESPACE_NAME
------------------------------
FILE_NAME
----------------------------------------------------------------------------------------------------
TEST
/opt/oracle/db/oradata/TEST/test/test01.dmp

TEST
/opt/oracle/db/oradata/TEST/test/test02.dmp


sys@TEST>

小结

数据库的数据保护是个很重要的事情,如果是正式环境,千万不要这么干!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值