当前位置:Gxlcms > 数据库问题 > rman数据库恢复;关键/非重要文件、影像副本、控制文件、还原点、非归档、增量、新数据库、灾难性回复

rman数据库恢复;关键/非重要文件、影像副本、控制文件、还原点、非归档、增量、新数据库、灾难性回复

时间:2021-07-01 10:21:17 帮助过:22人阅读

alter database datafile 6 offline;

rman >switch datafile ‘/home/oracle/test.dbf‘ to copy;

recover datafile 6;

--回复后数据文件的路径和名称为 ‘/home/oracle/test.dbf‘。

 

alter database datafile 4 online;

select FILE#,STATUS from v$datafile;

select file_name from dba_data_files;

 

backup as copy datafile 4 format ‘/u01/app/oracle/oradata/orcln/users01.dbf‘;

alter database datafile 4 offline;

switch datafile ‘ /home/oracle/backup/db_data_D-ORCL_I-4115975543_TS-TEST_FNO-6_38otbf5q.bak‘ to copy;

switch datafile 4 to copy;

recover datafile 4;

alter database datafile 4 online;

select file_name from dba_data_files;

-----------------------------------------------------------------------------------------------------------------

 

4. set newname 改名字

backup as copy datafile 6;

list copy of datafile 6;

select FILE#,STATUS from v$datafile;

 

 

run{

   allocate channel c1 device type disk;

   sql "alter database datafile 6 offline";

   set newname for datafile ‘/home/oracle/test.dbf‘ to ‘/home/oracle/test_new.dbf‘;

   restore datafile 6;

   switch datafile all;

   recover datafile 6;

   sql "alter database datafile 6 online";

   }


--------------------------------------------------------------------------------------------------------------
从自己主动备份还原控制文件:

RMAN> STARTUP NOMOUNT;

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;

RMAN> ALTER DATABASE MOUNT;

RMAN> RECOVER DATABASE;

RMAN> ALTER DATABASE OPEN RESETLOGS;

 

7. 丢失控制文件,參数文件 --数据库必须在nomount状态

查看文件信息:

SQL>select name from v$controlfile;

SQL>show parameter spfile;

SQL> select name from v$datafile;

 

配置控制文件自己主动备份恢复控制文件

rman target /

connected to target database: ORCL (DBID=1353286769)

RMAN>show all; 

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;

 

数据库全备份:

RMAN>backup as compressed backupset full database;

 

删除,參数文件。控制文件,数据文件

rm /opt/oracle/oradata/orcl/control01.ctl

rm /opt/oracle/flash_recovery_area/orcl/control02.ctl

rm /opt/oracle/oradata/orcl/control03.ctl

rm /opt/oracle/product/11.2.2/dbs/spfileorcl.ora

rm /opt/oracle/oradata/orcl/system01.dbf

rm /opt/oracle/oradata/orcl/sysaux01.dbf

rm /opt/oracle/oradata/orcl/undotbs01.dbf

rm /opt/oracle/oradata/orcl/users01.dbf

rm /home/oracle/tbs_ctl01.dbf

 

rman target /

RMAN> set dbid 1353286769  --假设备份在

startup nomount  --尽管没有參数文件可是也能够启动实例

 

恢复參数文件:

restore spfile from ‘/data/backup/ctl_c-1353286769-20131102-04.bak‘;

 

/* 从高速恢复区恢复參数文件:

run { 

restore spfile from autobackup 

recovery area = ‘flash recovery area destination‘ 

db_name = ‘db_name‘; 

*/

 

查看是否有须要改的參数:主要看文件位置

SQL> create pfile from spfile; 

 

恢复控制文件:

restore controlfile to ‘/opt/oracle/oradata/orcl/control01.ctl‘ from ‘/data/backup/ctl_c-1353286769-20131102-04.bak‘;

 

恢复数据文件:

RMAN> shutdown immediate

RMAN> startup mount

RMAN> restore database;

RMAN> recover database;

RMAN> alter database open;

 

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of alter db command at 11/02/2013 12:10:46

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

 

RMAN> alter database open resetlogs;


--------------------------------------------------------------------------------------------------------------
使用增量备份恢复处于 NOARCHIVELOG 模式的数据库:

STARTUP FORCE NOMOUNT;

RESTORE CONTROLFILE; 

ALTER DATABASE MOUNT;

RESTORE DATABASE;

RECOVER DATABASE NOREDO;

ALTER DATABASE OPEN RESETLOGS;

8. 使用增量备份恢复处于NOARCHIVELOG 模式的数据库

   1) 撤销数据库archivelog模式

   SQL>shutdown immediate;

   SQL>startup mount;

   SQL>alter database noarchivelog;

   SQL>alter database open;

   SQL>archive log list;

 

   2) 创建測试用表及数据

   conn zhuxy/zhuxy

   create table c (id number);

   insert into c values(1);

   commit;

 

   3) 在noarchivelog模式下,0级备份

   RMAN> run{

    shutdown immediate;

    startup mount;

    backup as backupset incremental level 0 database;

    alter database open;

    }

 

   4) 在noarchivelog模式下,1级备份

   insert into c values(2);

   commit;

 

   RMAN> run{

    shutdown immediate;

    startup mount;

    backup as backupset incremental level 1 database;

    alter database open;

   }

 

   6) 删除全部日志文件,  某些数据文件 

 

   7) 运行恢复

   rman target /

   RMAN>startup mount;

 

   --运行全库的还原

   RMAN> restore database;

 

   -- 使用noredo子句进行恢复

   RMAN> recover database noredo;

 

   --恢复完毕,resetlogs方式打开数据库,完毕全部文件丢失的恢复

   RMAN> alter database open resetlogs;

 

   8)验证在測试前(增量备份前)插入的数据

    select * from c;

 

6.非归档丢失文件

不全然恢复: SCN, 时间,还原点,或日志序列号     

1确定目标还原点:SCN时间、还原点或日志序列号。 

2设置 NLS 环境变量。 

3装载数据库。

 

4使用 SET UNTIL、RESTORE 和 RECOVER 命令准备并执行 RUN 块。 

5用 RESETLOGS 打开数据库。

 

-----不全然恢复之--基于时间的恢复 

   1) 准备环境:RMAN全库备份

   RMAN> backup as compressed backupset full database;

   2) 准备环境:測试表及数据

   alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss‘;

   create table d (c date);

   insert into d values(sysdate);

   commit;

   create table ff (c date);

   insert into ff values(sysdate);

   commit;

 

   启动到mount模式,进行基于时间的恢复

   shutdown immediate;

   startup mount;

 

run

{sql ‘alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"‘;

set until time = ‘ 2014-03-30 00:39:34‘;

restore database;

recover database;

alter database open resetlogs;

}

时间也能够这么写:

set until time="to_date(‘2013-11-01 15:29:34‘,‘yyyy-mm-dd hh24:mi:ss‘)";

-----还原点:

select count(*)  from copy_emp; 

创建还原点:

create restore point before_delete;

delete from copy_emp where ID >=10;

commit;

alter table copy_emp enable row movement;

flashback table copy_emp to restore point b;

--------------------------------------------------------------------------------------------------------------
将数据库还原到新主机:

为了还原数据库。请在还原主机上运行下面步骤:

1.配置 ORACLE_SID 环境变量。

2.启动 RMAN 并在 NOCATALOG 模式下连接到目标实例。

3.设置数据库标识符 (DBID)。

4.在 NOMOUNT 模式下启动实例。
5.
从备份集中还原server參数文件。

6.关闭实例。


7.
编辑还原的初始化參数文件。
8.
在 NOMOUNT 模式下启动实例
9.创建 RUN 块以运行下列任务:

  --还原控制文件
  --
装载数据库

10.创建 RMAN 恢复脚本以还原和恢复数据库。

11.运行 RMAN 脚本。

12.使用 RESETLOGS 选项打开数据库。

利用备份将数据库还原到新主机:目标库须要有oracle软件

 

1)准备工作

   源库数据库全备及控制文件自己主动备份,当然也包含參数文件

   RMAN> backup as backupset database;

 

2)拷贝RMAN备份文件到目标库

  能够用scp

 

3)配置目标库

  目标库环境变量设置

  export ORACLE_SID=new_orcl

 

 启动rmannomount状态,设置dbid(即源库dbid)

 $ rman target /

 RMAN> set dbid 1357901988

 RMAN> startup nomount; --没有參数文件。会报错,可是能够启动实例

 

4)恢复參数文件

 

RMAN> restore spfile to pfile ‘‘ from ‘‘;

 

编辑pfile參数文件:文件位置。数据库实例名..,创建对应的文件夹

 

5) 启动数据库到nomount模式 

 SQL> create spfile from pfile;

 SQL> startup nomount;

 

6)还原控制文件

 

$ rman target /

 

RMAN> restore controlfile to ‘‘ from ‘‘;

 

RMAN> alter database mount;

 

7) 还原数据文件

   run{

SET NEWNAME FOR DATAFILE 1 TO ‘/u01/app/oracle/oradata/orcl/system01.dbf‘;

SET NEWNAME FOR DATAFILE 2 TO ‘/u01/app/oracle/oradata/orcl/sysaux01.dbf‘;

SET NEWNAME FOR DATAFILE 3 TO ‘/u01/app/oracle/oradata/orcl/undotbs01.dbf‘;

SET NEWNAME FOR DATAFILE 4 TO ‘/u01/app/oracle/oradata/orcl/users01.dbf‘;

SET NEWNAME FOR DATAFILE 5 TO ‘/u01/app/oracle/oradata/orcl/example01.dbf‘;

SET NEWNAME FOR DATAFILE 6 TO ‘/u01/app/oracle/oradata/orcl/test.dbf‘;

RESTORE DATABASE;

SWITCH DATAFILE ALL;

RECOVER DATABASE;}

 

--rename日志文件

run{

SQL "ALTER DATABASE RENAME FILE ‘‘/u01/app/oracle/oradata/ENMOEDU/redo01.log‘‘ TO 

‘‘/u01/app/oracle/oradata/orcl/redo01.log‘‘ ";

SQL "ALTER DATABASE RENAME FILE ‘‘/u01/app/oracle/oradata/ENMOEDU/redo02.log‘‘ TO 

‘‘/u01/app/oracle/oradata/orcl/redo02.log‘‘ ";

SQL "ALTER DATABASE RENAME FILE ‘‘/u01/app/oracle/oradata/ENMOEDU/redo03.log‘‘ TO 

‘‘/u01/app/oracle/oradata/orcl/redo03.log‘‘ ";

}

 

RMAN> alter database open resetlogs;

 

8)暂时文件位置不正确

SQL> select file_name from dba_temp_files;

SQL>create temporary tablespace tempa tempfile 

‘/u01/app/oracle/oradata/orcl/tempa01.dbf‘ size 10m reuse autoextend on  maxsize  200m;

SQL>alter database default temporary tablespace tempa;

SQL>drop tablespace temp;

SQL>select file_name from dba_temp_files;

 

:这个測试改变了实例名

 

 


--------------------------------------------------------------------------------------------------------------
运行灾难恢复 :

灾难意味着丢失了整个目标数据库、恢复文件夹数据库、全部当前控制文件、全部联机重做日志文件和全部參数文件。


灾难恢复包含还原和恢复目标数据库。


备份集的最低要求: 

1.数据文件的备份
2.
对应的归档重做日志文件
3.
至少一个控制文件自己主动备份

基本过程:
1.
还原server參数文件的自己主动备份。

2.启动目标数据库实例。

3.从自己主动备份还原控制文件。

4.装载数据库。

5.还原数据文件。

6.恢复数据文件。

7.使用 RESETLOGS 选项打开数据库。

 

 

 


 

rman数据库恢复;关键/非重要文件、影像副本、控制文件、还原点、非归档、增量、新数据库、灾难性回复

标签:tag   down   命令   erro   use   标识   环境   bsp   file   

人气教程排行