如题,在Oracle的维护过程中,可能会碰到数据文件误删,或者日志文件误删的情况。假如有一个持续性的备份习惯,比如一旦有新增日志文件或者数据文件就做控制文件备份,那么自然好办。
如果我们没有及时做控制文件备份,出现数据文件丢失或者日志文件丢失,应当如何进行数据库恢复?
个人愚见,还没有进行验证:
1、如果丢失的原因是误删,那么是否可以用恢复软件将文件恢复出来;
2、采用ALTER DATABASE指令,将相应的丢失的数据文件名,从日志文件中DROP;
3、SHUTDOWN ABORT数据库,先冷备以防万一,找出所有的数据文件名、日志文件名、控制文件名,重新创建控制文件,在重启数据库。
提出这个情况,供各位讨论,有砖只管拍!!!因为我不是大侠,可以钻石缝!!!!!
因为是讨论帖,所以就没有散分!!!关键是分不多!!!哈哈
如果我们没有及时做控制文件备份,出现数据文件丢失或者日志文件丢失,应当如何进行数据库恢复?
个人愚见,还没有进行验证:
1、如果丢失的原因是误删,那么是否可以用恢复软件将文件恢复出来;
2、采用ALTER DATABASE指令,将相应的丢失的数据文件名,从日志文件中DROP;
3、SHUTDOWN ABORT数据库,先冷备以防万一,找出所有的数据文件名、日志文件名、控制文件名,重新创建控制文件,在重启数据库。
提出这个情况,供各位讨论,有砖只管拍!!!因为我不是大侠,可以钻石缝!!!!!
因为是讨论帖,所以就没有散分!!!关键是分不多!!!哈哈
----(4)被刪除system文件及一個數据文件的恢复
------------------------------------------------------------------------SET NLS_LANG=AMERICAN
SET NLS_DATE_FORMAT=YYYY/mm/dd HH24:MI:SS
1)
rman target sys/1234@s8db_test catalog rman/5678@test 2)
run {
allocate channel dev1 type disk;
set limit channel dev1 kbytes= 20000;
set limit channel dev1 maxopenfiles = 10;
set limit channel dev1 readrate = 20;
backup
incremental level 0
tag sunday_level0
format '/tmp/test_rman/b_data/sunday_level0_%s_%p'
(database);
release channel dev1;
} 3)rm /data/oradata/s8db/S8TBS.dbf
rm /data/oradata/s8db/system01.dbf4) SQL>startup mount;5) 檢查需要恢复的文件
SQL>SELECT * FROM V$RECOVER_FILE;
SQL>select name, file#, tablespace_name, status, error, recover,fuzzy
from v$datafile_header;6)重新連接
rman target sys/1234@s8db_test catalog rman/5678@test run{
allocate channel dev1 type disk;
restore datafile '/data/oradata/s8db/system01.dbf';
restore datafile '/data/oradata/s8db/S8TBS.dbf';
recover datafile '/data/oradata/s8db/system01.dbf';
recover datafile '/data/oradata/s8db/S8TBS.dbf';
release channel dev1;
}
7)打開數据庫
SQL>ALTER DATABASE OPEN;