ITPub博客

首页 > 数据库 > Oracle > RMAN还原恢复

RMAN还原恢复

原创 Oracle 作者:d_ball_apple 时间:2014-08-06 11:03:03 0 删除 编辑

restore还原 recover恢复
临时文件丢失 重启数据库会自动重新创建

联机日志(内存里面的重铸日志项)
 
在有归档的情况下 丢失日志文件 直接
alter database clear logfile group 1;

select group#,sequence#,status,archived,members from v$log;
查看日志文件的分组,编号,状态,归档

alter system switch logfile;
转换日志组

alter system checkpoint;active切换到inactive

archive log list;开启归档(mount下);
alter database noarchivelog;关闭归档

select member from v$logfile where group#=2;该组日志文件查看位置


 . oraenv修改环境变量


alter database clear logfile group 2; clear日志文件

ALTER DATABASE CLEAR LOGFILE  group 2
ALTER DATABASE CLEAR UNARCHIVED LOGFILE  group 2 UNRECOVERABLE DATAFILE

口令文件:
cd $ORACLE_HOME/dbs
使用口令文件
cd $ORACLE_HOME/networ/admin

vi sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES=(NONE)

丢失口令文件后,重建口令文件

orapwd file=orapwsztech1 entries=5  (实例名要相同);

表空间

查看表空间位置:
select file_name from dba_data_files where tablespace_name='';
文件模式可以直接拷贝


控制文件恢复
 
控制文件丢失,关闭数据库,启动到nomount

进入rman
restore controlfile from autobackup(自动备份);
若没有:
cd /u01/app/oracle/fast_recovery_area/SZTECH1/BACKUPSET 到自动恢复区找备份

restore controlfile from ‘/u01/app/oracle/fast_recovery_area/SZTECH1/BACKUPSET...’

成功后
mount
recover database;

alter database open resetlogs;


创建控制文件脚本
sql>
alter database backup controlfile to trace;

alter database backup controlfile to trace as ''  resetlogs;

有控制文件脚本的情况下
启动到nomount
 直接进入脚本执行
(
先创建控制文件,
然后从备份控制文件里面recover恢复数据库
)

select status from V$instance 查看数据库实例状态

表空间还原
create tablespace tbsname datafile '文件路径及文件名' size 500m;创建表空间

RMAN> SQL 'ALTER TABLESPACE inv_tbs OFFLINE IMMEDIATE';
RMAN> RESTORE TABLESPACE inv_tbs;
RMAN> RECOVER TABLESPACE inv_tbs;
RMAN>  SQL 'ALTER TABLESPACE inv_tbs ONLINE';

增量更新备份

RMAN> recover copy of database with tag 'daily_inc';
RMAN> backup incremental level 1 for recover of copy
2> with tag 'daily_inc' database;

RMAN> backup incremental level 1 for recover of copy
2> with tag 'daily_inc' database;
RMAN> recover copy of database with tag 'daily_inc';

RMAN> SQL 'ALTER TABLESPACE inv_tbs OFFLINE IMMEDIATE';
RMAN> SWITCH DATAFILE 'filename' TO COPY;
RMAN> RECOVER TABLESPACE inv_tbs;
RMAN>  SQL 'ALTER TABLESPACE inv_tbs ONLINE';

RMAN>  report schema;


backup as copy datafile 6 format '/u01...';

恢复数据文件并放到新位置
RUN
{ ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
  ALLOCATE CHANNEL dev2 DEVICE TYPE sbt;
  SQL "ALTER TABLESPACE users OFFLINE IMMEDIATE";
  SET NEWNAME FOR DATAFILE '/disk1/oradata/prod/users01.dbf'
                        TO '/disk2/users01.dbf';
  RESTORE TABLESPACE users;
  SWITCH DATAFILE ALL;
  RECOVER TABLESPACE users;
  SQL "ALTER TABLESPACE users ONLINE";
}

创建还原时间点
SQL> CREATE RESTORE POINT before_mods;当前时间点

desc v$restore_point;查看还原事件点表信息
需要启动到mount
run{
 set until restore point rs_test;/set until TIME 'TIMESTAMP';
 restore database;
 recover database;
}

恢复到rs_test时间点


将数据库换到只读状态
alter database open read only;

打开数据库

alter database open resetlog

初始化文件
SQL> CREATE PFILE [= 'pfile_name' ]
   FROM { { SPFILE [= 'spfile_name'] } | MEMORY } ;
SQL> CREATE SPFILE [= 'spfile_name' ]
  FROM { { PFILE [= 'pfile_name' ] } | MEMORY } ;


{
set dbid
restore spfile from autobackup
}

restore spfile from 备份


归档模式下修复数据库
RMAN> STARTUP FORCE NOMOUNT;
RMAN> RESTORE SPFILE FROM AUTOBACKUP;
RMAN> STARTUP FORCE;


RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;

非归档模式下修复数据库
STARTUP FORCE NOMOUNT;
RESTORE CONTROLFILE;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE NOREDO;
ALTER DATABASE OPEN RESETLOGS;

backup database format '' plus archivelog format='';

startup pfile='' nomount;


RUN
{
SET NEWNAME FOR DATAFILE 1 TO '?/oradata/test/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '?/oradata/test/undotbs01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '?/oradata/test/sysaux.dbf';
SET NEWNAME FOR DATAFILE 4 TO '?/oradata/test/users01.dbf';
SET NEWNAME FOR DATAFILE 5 TO '?/oradata/test/example01.dbf';
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/orcl/redo01.log''
TO ''?/oradata/test/redo01.log'' ";
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/orcl/redo02.log''
TO ''?/oradata/test/redo02.log'' ";
SQL "ALTER DATABASE RENAME FILE ''/u01/app/oracle/oradata/orcl/redo03.log''
TO ''?/oradata/test/redo03.log'' ";
SET UNTIL SCN 4545727;
RESTORE DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE;
}
 

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

上一篇: rman备份相关
下一篇: 诊断数据库
请登录后发表评论 登录
全部评论

注册时间:2013-05-15

  • 博文量
    39
  • 访问量
    84862