暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

rman异机异目录恢复

原创 Z·A·Q 2022-12-20
848

1.收集源库信息

1.1 备份策略

  • 周日全备 周一、周二增量
  • 周三全备 周四、周五、周六增量,每天凌晨 1 点执行备份,同时备份数据文件、归档日志
  • 备份脚本如下
#!/usr/bin/ksh
export date=`date +%Y-%m-%d-%H-%M`
export dir=/data01/orcl/backupset/$date  
mkdir -p $dir
mkdir -p $dir/log

rman target / nocatalog log="$dir/log/backup.log" << EOF
run {
show all;
CONFIGURE RETENTION POLICY TO recovery window of 15 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '$dir/control_%F'; 
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
backup as compressed backupset incremental level 0 tag 'db_level0' database format '$dir/db_%n_%T_%U';
sql 'alter system archive log current';
backup  archivelog all not backed up format '$dir/arch_%n_%T_%U' delete all input;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
EOF
  • 恢复需求:要求恢复截止 2018-08-31 (周五)的所有数据,因此,本次恢复需要使用 8.29 - 9.1 的备份

1.2 物理结构

  • 1)控制文件
SYS@orcl> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/oradata02/orcl/control01.ctl
/oradata02/fast_recovery_area/orcl/control02.ctl
  • 2)数据文件
SYS@orcl> select name,BYTES/1024/1024 from v$datafile;

NAME                                      BYTES/1024/1024
----------------------------------------- ------------------
/oradata02/orcl/system01.dbf                        2048
/oradata02/orcl/sysaux01.dbf                        2048
/oradata02/orcl/undotbs01.dbf                       4096
/oradata02/orcl/users01.dbf                          500
/oradata02/orcl/NNC_DATA01_01.dbf                  30720
/oradata02/orcl/NNC_INDEX01.dbf                    30720
  • 3)临时文件
SYS@orcl> select name,BYTES/1024/1024 from v$tempfile;

NAME                               BYTES/1024/1024
---------------------------------  -----------------
/oradata02/orcl/temp01.dbf                      20
/oradata02/orcl/temp02.dbf                   10240
  • 4)redo 日志文件
SYS@orcl> select l.GROUP#,l.BYTES/1024/1024,lf.MEMBER from v$log l,v$logfile lf where l.GROUP#=lf.GROUP#;

    GROUP# L.BYTES/1024/1024   MEMBER
---------- -----------------   --------------------------------------------------------
         1              200     /oradata02/orcl/redo/redo01a.log
         1              200     /oradata02/fast_recovery_area/orcl/redo/redo01b.log
         2              200     /oradata02/orcl/redo/redo02a.log
         2              200     /oradata02/fast_recovery_area/orcl/redo/redo02b.log
         3              200     /oradata02/orcl/redo/redo03a.log
         3              200     /oradata02/fast_recovery_area/orcl/redo/redo03b.log
         4              200     /oradata02/orcl/redo/redo04a.log
         4              200     /oradata02/fast_recovery_area/orcl/redo/redo04b.log
         5              200     /oradata02/orcl/redo/redo05a.log
         5              200     /oradata02/fast_recovery_area/orcl/redo/redo05b.log
         6              200     /oradata02/orcl/redo/redo06a.log
         6              200     /oradata02/fast_recovery_area/orcl/redo/redo06b.log
  • 5)因此,控制文件+数据文件+临时文件+重做日志文件+归档日志文件,至少需要 80G 存储空间

2. 异机恢复

2.1 配置参数文件

  • 1)拷贝源库的 pfile 文件到目标主机,根据目标主机的环境进行修改(文件路径、监听、内存等)
*._PX_use_large_pool=TRUE
*._serial_direct_read='FALSE'
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='none'
*.compatible='11.2.0.4.0'
*.control_files='/oradata/orcl/control01.ctl','/oradata/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/oradata/fast_recovery_area'
*.db_recovery_file_dest_size=5218762752
*.db_securefile='PERMITTED'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.event='28401 trace name context forever,level 1'
*.local_listener=''
*.log_archive_dest_1='location=/oradata/archivelog/orcl'
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=1000
*.pga_aggregate_target=2G
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_limit=TRUE
*.session_cached_cursors=300
*.sessions=1105
*.sga_target=4G
*.undo_tablespace='UNDOTBS1'
  • 2)创建所需目录
[oracle@db11g ~]$ mkdir -p /u01/app/oracle/admin/orcl/adump
[oracle@db11g ~]$ mkdir -p /oradata/orcl
[oracle@db11g ~]$ mkdir -p /oradata/fast_recovery_area/orcl
[oracle@db11g ~]$ mkdir -p /oradata/archivelog/orcl
  • 3)启动数据库到 nomount
[oracle@db11g ~]$ export ORACLE_SID=orcl
[oracle@db11g ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat Sep 29 10:41:12 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SYS@orcl> create spfile from pfile='/home/oracle/initorcl.ora';

File created.

SYS@orcl> startup nomount
ORACLE instance started.

Total System Global Area 4275781632 bytes
Fixed Size          2260088 bytes
Variable Size        1157628808 bytes
Database Buffers     3103784960 bytes
Redo Buffers           12107776 bytes

SYS@orcl> show parameter control_files

NAME                         TYPE    VALUE
-------------------   -----------   ------------------------------------------------------------------------
control_files              string   /oradata/orcl/control01.ctl, /oradata/fast_recovery_area/orcl/control02.ctl

2.2 恢复控制文件

  • 使用rman恢复控制文件
[oracle@db11g ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sat Sep 29 10:44:57 2018

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: orcl (not mounted)

RMAN> restore controlfile from '/backup/2018-08-29/control_c-1572781485-20180829-01';

Starting restore at 29-SEP-18
using channel ORA_DISK_1

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output file name=/oradata/orcl/control01.ctl
output file name=/oradata/fast_recovery_area/orcl/control02.ctl
Finished restore at 29-SEP-18

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

2.3 更新控制文件元数据

  • 1)检查是否存在 expired 及 obsolete 的备份片
crosscheck backup;
report obsolete;
  • 2)如果有,删除过期备份
delete expired backup;
delete obsolete;
  • 3)注册备份片
RMAN> catalog start with '/backup/';
  • 4)查看 v$logfile ,指定到新路径(sqlplus 操作)
select member from v$logfile;

-- 先创建 redo 目录
alter database rename file '/oradata02/orcl/redo/redo01a.log' to '/oradata/orcl/redo/redo01a.log';
alter database rename file '/oradata02/fast_recovery_area/orcl/redo/redo01b.log' to '/oradata/fast_recovery_area/orcl/redo/redo01b.log';
alter database rename file '/oradata02/orcl/redo/redo02a.log' to '/oradata/orcl/redo/redo02a.log';                                   
alter database rename file '/oradata02/fast_recovery_area/orcl/redo/redo02b.log' to '/oradata/fast_recovery_area/orcl/redo/redo02b.log';
alter database rename file '/oradata02/orcl/redo/redo03a.log' to '/oradata/orcl/redo/redo03a.log';                                  
alter database rename file '/oradata02/fast_recovery_area/orcl/redo/redo03b.log' to '/oradata/fast_recovery_area/orcl/redo/redo03b.log';
alter database rename file '/oradata02/orcl/redo/redo04a.log' to '/oradata/orcl/redo/redo04a.log';                                   
alter database rename file '/oradata02/fast_recovery_area/orcl/redo/redo04b.log' to '/oradata/fast_recovery_area/orcl/redo/redo04b.log';
alter database rename file '/oradata02/orcl/redo/redo05a.log' to '/oradata/orcl/redo/redo05a.log';                                  
alter database rename file '/oradata02/fast_recovery_area/orcl/redo/redo05b.log' to '/oradata/fast_recovery_area/orcl/redo/redo05b.log';
alter database rename file '/oradata02/orcl/redo/redo06a.log' to '/oradata/orcl/redo/redo06a.log';                                  
alter database rename file '/oradata02/fast_recovery_area/orcl/redo/redo06b.log' to '/oradata/fast_recovery_area/orcl/redo/redo06b.log';
  • 5)查看 v$tempfile ,指定到新路径(sqlplus 操作)
select name from v$tempfile;

alter database rename file '/oradata02/orcl/temp01.dbf' to '/oradata/orcl/temp01.dbf';
alter database rename file '/oradata02/orcl/temp02.dbf' to '/oradata/orcl/temp02.dbf';

2.4 还原数据库

  • 基于时间点的不完全恢复
run{
ALLOCATE CHANNEL C1 DEVICE TYPE DISK;
ALLOCATE CHANNEL C2 DEVICE TYPE DISK;
set newname for datafile 1 to '/oradata/orcl/system01.dbf';
set newname for datafile 2 to '/oradata/orcl/sysaux01.dbf';
set newname for datafile 3 to '/oradata/orcl/undotbs01.dbf';
set newname for datafile 4 to '/oradata/orcl/users01.dbf';
set newname for datafile 5 to '/oradata/orcl/NNC_DATA01_01.dbf';
set newname for datafile 6 to '/oradata/orcl/NNC_INDEX01.dbf';
restore database UNTIL TIME "to_date('2018-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss')";
switch datafile all; 
RELEASE CHANNEL C1;
RELEASE CHANNEL C2;
}

2.5 恢复数据库

  • 恢复数据库
run
{
ALLOCATE CHANNEL C1 DEVICE TYPE DISK;
ALLOCATE CHANNEL C2 DEVICE TYPE DISK;
recover database until time "TO_DATE('2018-09-01 00:00:00','yyyy-mm-dd hh24:mi:ss')";
RELEASE CHANNEL C1;
RELEASE CHANNEL C2;
}

2.6 开启数据库

  • RMAN 不恢复 redo 和临时文件,开库过程中会自动创建重做日志和临时文件
SYS@orcl> alter database open resetlogs;

Database altered.
  • 查看物理结构
RMAN> report schema;

using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name orcl

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    2048     SYSTEM               ***     /oradata/orcl/system01.dbf
2    2048     SYSAUX               ***     /oradata/orcl/sysaux01.dbf
3    4096     UNDOTBS1             ***     /oradata/orcl/undotbs01.dbf
4    500      USERS                ***     /oradata/orcl/users01.dbf
5    30720    NNC_DATA01           ***     /oradata/orcl/NNC_DATA01_01.dbf
6    30720    NNC_INDEX01          ***     /oradata/orcl/NNC_INDEX01.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    20       TEMP                 20          /oradata/orcl/temp01.dbf
2    10240    TEMP                 10240       /oradata/orcl/temp02.dbf
  • 数据库异机恢复完成
最后修改时间:2024-11-15 14:45:59
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论