MiBDP,数据开发、项目团队、数据应用和产品在路上,金融保险、互联网网游、电商、新零售行业、大数据和AI在路上。对数仓、模型、ETL、数据产品应用了解。DTCC 2013演讲嘉宾,曾做过两款大获好评的数据产品平台。知识星球ID:35863277
分类: Oracle
2007-07-19 12:10:39
用户管理的备份中数据文件没有备份损坏情况下的恢复测试。这种情况下要求数据库必须运行在归档模式下,并且所有的归档日志文件及重做日志文件都存在。
首先新建一个数据文件模拟数据文件丢失的情况:
ALTER TABLESPACE USERS
ADD DATAFILE 'D:\ORACLE\PRODUCT\
SQL> alter table colin.emp
2 allocate extent(size 100k datafile 'D:\ORACLE\PRODUCT\
表已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
利用操作系统命令
删除新建的数据文件D:\ORACLE\PRODUCT\
这里我们就模拟了数据文件损坏/丢失的情况
我们再启动数据库,结果报错
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 83887460 bytes
Database Buffers 79691776 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'D:\ORACLE\PRODUCT\
查询动态视图查看需要恢复的文件
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_
---------- ------- -------
ERROR CHANGE#
----------------------------------------------------------------- ----------
TIME
--------------
6 ONLINE ONLINE
FILE NOT FOUND 0
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\
数据库已更改。
4)恢复损坏/丢失的数据文件:(这里要用到相应的归档日志文件及重做日志文件)
SQL> recover datafile 'D:\ORACLE\PRODUCT\
完成介质恢复。
5)最后再把相应的数据文件联机,就Ok了~
SQL> alter database datafile 'D:\ORACLE\PRODUCT\
数据库已更改。