008.笔记:数据库的不完全恢复

delete obsolete

1.完全恢复练习
create tablespace rectest datafile '/home/oracle/rectest.dbf' size 2m;
create table t_recover (c1 varchar2(1)) tablespace rectest;
backup database;
mv /home/oracle/rectest.dbf /home/oracle/rectest2.dbf --linux4.8:使用RM,如果不重启DB,不报错
insert into t_recover values('a');
commit;

run {
sql "alter tablespace rectest offline immediate";
restore tablespace rectest;
recover tablespace rectest delete archivelog;
sql "alter tablespace rectest onlin";
}


2.不完全恢复的原因
(1)丢失了某个归档或当前联机重做日志的所有副本
(2)出现用户错误后,我们有意地丢失某些数据
(3)不完全恢复的一个特例是控制文件的恢复

3.不完全恢复的步骤
用SQLPLUS或RMAN恢复的步骤:
(1)加载数据库
(2)还原所有数据文件、同时可以选择还原控制文件
(3)将数据库恢复至某个时间点、序列或系统改变号
(4)使用resetlogs关键字打开数据库

4.不完全恢复与完全恢复的不同点
(1)只要受损文件不是关键文件就可以进行不完全恢复;不完全恢复只能在加载模式中进行。关键文件是指SYSTEM表空间及当前活动的撤消表空间的数据文件。
(2)所有不完全恢复操作都会首先还原所有的数据文件,数据文件不必从相同的备份中还原。
(3)数据库的物理结构如果有变化,例如删除了某个表空间,控制文件中没有表空间的记录。那么,还要还原控制文件。还原控制文件相关复杂
(4)使用RESETLOGS关键字打开数据库,重新初始化重做日志文件,从而创建数据库的一个新场景。

5.补充的注意事项
(1)不完全恢复必须作为SYSDBA用户进行连接。
(2)认定需要进行不完全恢复时就关闭数据库是至关重要的
(3)成功能完成不完全恢复后,应当进行另一个全部备份操作
startup restrict --仅限于执行此命令的SESSION能够连接数据库


6.使用用户托管的备份进行不完全恢复(使用SQLPLUS)
shutdown immediate;
startup mount;
--此步使用操作系统命令还原所有数据文件
recover databae until time '2004-12-10:18:31:00';--until time的格式是固定的,与nls_date_format设置无关;
--recover database until cancel;--如果归档或联机丢失,until cancel会恢复到不丢失的归档
--recover database until change 309121;--until change相当于rman中的until scn
alter database open resetlogs;


7.使用RMAN的不完全全恢复
run {
allocate channel d1 type disk;
allocate channel t1 type sbt_tape;
shutdown immediate;
startup mount;
sql "alter session st nls_date_format=''yyyy-mm-dd hh24:mi:ss''";--与SQLPLUS进行不完全恢复不同的是,RMAN知道参数NLS_DATE_FORMAT的设置
set until time '2004-12-31 18:31:00';
--set until sequence 10305 thread 1;--使用日志的序列号恢复(10305之前的,不包括10305)
--set until scn 309121;--使用scn恢复
resotre database;
recover database;
alter database open resetlogs;

}

8.练习:使用RMAN执行不完全恢复
select log_mode from v$datebase;
select archiver from v$instance;

--连接SQLPLUS
set time on;
create table test_rec as select * from all_users;

--使用rman
rman target /
backup database;

--SQLPLUS
drop table test_rec;
select count(*) from test_rec;

--RMAN
run{
shutdown immediate;
startup mount;
sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";
set until time '2012-09-26 17:32:00';
restore database;
recover database;
alter database open resetlogs;
}

--sqlplus
select count(*) from test_rec;
select * from v$log;

--执行一次备份

drop table test_rec;

9.使用手工备份还原控制文件

(1)备份
alter database backup controlfile to '';--备份二进制文件
--在操作系统上COPY控制文件,必须关闭数据库
--alter database backup controlfile to trace;--备份到文本形式的跟踪文件
(2)恢复控制文件
shutdown immediate
将备份复制到control_files指定的位置
STARTUP MOUNT
sqlplus: recover database until cancel using backup controlfile;--此时会提示输入归档日志

alter database open resetlogs;
--* resetlogs打开后,要做全库备份。ORACLE不允许跨场景恢复,一个场景(incarnation)具有专用的备份和归档日志。不同场景的备份和归档日志应该分离。


附:不完全恢复的语法
recover database until ... using backup controlfile;--此时必须还原控制文件以及所有的数据文件

ORA-19909错误是原执行了跨场景恢复控制文件

10.使用RMAN还原控制文件
(1)备份
backup as copy current controlfile;
backup as backupset current controlfile;
backup tablespace system include current controlfile;
configure controlfile autobackup on;--RMAN在运行其他备份时,自动备份控制文件和服务器参数文件

(2)恢复
run {
startup nomount;
set dbid 33388383;--多个数据库共享一个备份目的地时使用;select dbid from v$database;
restore controlfile from autobackup;
alter database mount;
recover database;
alter database open resetlogs;
}

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7901922/viewspace-1059526/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7901922/viewspace-1059526/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值