您的位置:首页 > 其它

RMAN还原与恢复2(RMAN Incomplete Recovery)

2013-02-23 10:33 483 查看
---恢复内容开始---

一.RMAN实现不完全恢复

步骤:

a.加载数据到mount状态(建议恢复前先做备份);

b.为高并发分配多个通道;

c.还原所有(所需)的数据文件;

d.使用until time,until sequence,until scn来恢复数据库;

e.使用resetlogs打开数据库;

f.全备数据库;

演示RMAN基于until time的例子:

SQL> insert into user1.t select 9,'polestar' from dual;
1 row created.
SQL> commit;                                                --注意commit是将日志缓冲内容写入到日志文件

-bash-3.00$ strings redo03.log |grep polestar               --查看联机日志文件中不存在刚刚插入的记录
polestar
-bash-3.00$

SQL> alter system switch logfile;
System altered.
SQL>

--全备
RMAN> run{
2> allocate channel ch1 type disk;
3> allocate channel ch2 type disk;
4> backup as compressed backupset database plus archivelog delete input
5> format '/tmp/backup/Whole_lg_%U'
6> tag='Wholebak_Pluslog';
7> release channel ch1;
8> release channel ch2;
9> }

--系统时间
SQL> select to_char(sysdate,'YYYY-MM-DD  HH24:MI:SS') as TO_CHAR  from dual;

TO_CHAR
--------------------
2013-01-26  17:50:13

--删除表
SQL> drop table user1.t;

Table dropped.

SQL>

--将数据库打开到mount状态
SQL> startup mount

--恢复
RMAN> run{
2> allocate channel ch1 type disk;
3> allocate channel ch2 type disk;
4> set until time "to_date('2013-01-26 17:50:13','yyyy-mm-dd hh24:mi:ss')";
5> restore database;
6> recover database;
7> alter database open resetlogs;
8> release channel ch1;
9> release channel ch2;
10> }

--检验恢复结果
SQL> select * from user1.t order by 1;

ID NAME
---------- ----------------
0 oracle
1 oracle
2 oracle
3 oracle
4 oracle
5 oracle
6 oracle
7 myrman
8 inspur
9 polestar

10 rows selected.

SQL>


二. SPFILE文件丢失的恢复

  SPFILE参数文件可以在RMAN中进行备份,因此可以使用RMAN来恢复SPFILE文件。可以自动备份SPFILE。

  SPFILE的自动备份是随着控制文件的备份一起被完成的,因此可以通过自动备份控制文件来实现自动备份SPFILE文件的目的。其次,在备份系统表空间时将引发控制文件的自动备份,而不论是否设置自动备份参数为ON,此时同样也备份SPFILE文件。

SPFILE文件恢复步骤:

a. startup nomount [force];

b. set dbid=dbid_no;

c. restore spfile from autobackup | '<dir>'

d. startup force; 如果d执行失败则转到e,f,否则不用执行e,f。

e. set dbid=dbid_no;

f. startup;

--下面设定控制文件的自动备份以及设置其备份路径(注意要预先知道目标数据库的DBID,此次演示的DBID为)
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

RMAN> configure controlfile autobackup format for device type disk to '/tmp/backup/ctl_%d_%F';

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/tmp/backup/ctl_%d_%F';
new RMAN configuration parameters are successfully stored

RMAN>

SQL> alter tablespace users add datafile '/u01/oradata/sunbak/users03.dbf' size 5m

-bash-3.00$ ls /tmp/backup           --执行上一条alter tablespace users add datafile 语句将引发控制文件的自动备份
ctl_SUN_c-1913551800-20130222-01
-bash-3.00$

--关机
SQL> shutdown immediate;

--模拟损坏spfile文件
-bash-3.00$ mv spfilesun.ora spfilesun.ora.bak   --将原来的spfile文件重命名

--恢复
[oracle@oradb ~]$ rman target / nocatalog

RMAN> startup nomount force;

RMAN> set dbid=1913551800;

RMAN> restore spfile from autobackup;   --此处并没有找到文件路径,按Oracle联机文档,在nomount状态应该可以找到
RMAN-06172: no autobackup found or specified handle is not a valid copy or piece

RMAN> restore spfile from '/u01/bk/rmbk/auto_ctl_ORCL_c-1263182651-20101124-00';    --手动指定路径
RMAN> startup force;


三.控制文件的恢复处理

  控制文件中描述了数据库的相关物理信息,如创建时间、DBID、数据文件、日志文件等相关信息,因此一旦控制文件丢失数据库将不能启动,鉴于其重要性,控制文件的备份与恢复将单独列出。

--将原来的控制文件重命名
-bash-3.00$ mv control01.ctl.bak control01.ctl
-bash-3.00$ mv control02.ctl.bak control02.ctl
-bash-3.00$ mv control03.ctl.bak control03.ctl

--Nocatalog状态下控制文件的恢复同Spfile文件及其相似(详情请查文档)
[oracle@oradb ~]$ rman target / nocatalog

RMAN> startup nomount force;

RMAN> set dbid=1913551800;

RMAN> RESTORE CONTROLFILE FROM '/tmp/backup/ctl_SUN_c-1913551800-20130222-01';
RMAN>  ALTER DATABASE MOUNT;

--此时参考:用户管理的完全恢复6:控制文件损坏(控制文件前后内容改变)
SQL> recover database using backup controlfile;
ORA-01507: database not mounted

SQL> recover database using backup controlfile;
ORA-00279: change 831957 generated at 02/22/2013 20:46:02 needed for thread 1
ORA-00289: suggestion : /u01/admin/sun/arch/1_2_805747372.dbf
ORA-00280: change 831957 for thread 1 is in sequence #2

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/oradata/sunbak/redo01.log
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;

Database altered.

SQL>


---恢复内容结束---
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: