2-oracle-rac-rman恢复到单库操作记录(全备、全备+增备)

备份脚本:点击

概述:

1、数据恢复文件有三:参数文件,控制文件,数据文件
2、全备恢复:三个数据文件路劲均指定全备数据的文件夹路径:即(/data/backup/qgcs/20250518的具体文件名)
3、全备+增备恢复:参数文件、控制文件均指定最后一个增量文件夹的对应文件(/data/backup/qgcs/20250522的具体文件名),数据文件指定全局目录即(/data/backup/qgcs/20250522)

 

1、数据备份目录

将备份的全备含后续的增量备份文件同步到灾备环境的指定目录,即:
[oracle@db1 ~]$ ll /data/backup/qgcs/
总用量 20
drwxr-xr-x 7 oracle oinstall 4096  5月 18 01:00 20250518
drwxr-xr-x 7 oracle oinstall 4096  5月 19 01:00 20250519
drwxr-xr-x 7 oracle oinstall 4096  5月 20 01:00 20250520
drwxr-xr-x 7 oracle oinstall 4096  5月 21 01:00 20250521
drwxr-xr-x 7 oracle oinstall 4096  5月 22 01:00 20250522

备份数据授权
chown -R oracle.oinstall /data/backup/qgcs/

2、数据存储目录

[oracle@db1 ~]$ cp .bash_profile .bash_profile_qgcs
[oracle@db1 ~]$ sed -i 's#icdc#qgcs#g' .bash_profile_qgcs

[oracle@db1 ~]$ source .bash_profile_qgcs
mkdir -p $ORACLE_BASE/admin/qgcs/adump/
mkdir -p /data/oracle/oradata/qgcs/
mkdir -p /data/oracle/fast_recovery_area/qgcs/
mkdir /data/oracle/oradata/qgcs/archive-qgcs
mkdir /data/oracle/oradata/qgcs/controlfile/

 3、恢复数据

3.1恢复参数文件

添加临时参数文件
cat > $ORACLE_HOME/dbs/1.ora << !
db_name='qgcs'
!
启动到nomount状态
cd $ORACLE_HOME/dbs/
sqlplus / as sysdba
startup nomount pfile='$ORACLE_HOME/dbs/1.ora'
_-------------------------------参数文件恢复----------------------------------
[oracle@db1 ~]$ source .bash_profile_qgcs 
[oracle@db1 ~]$ rman target /

-- 以 PFILE 形式恢复,以便手动修改参数
RESTORE SPFILE TO '/tmp/spfile_rac.ora' FROM '/data/backup/qgcs/20250522/spfile/spfile_r33q27pt_1_1_20250522_20250522010001.bak';
从恢复出的 SPFILE 创建 PFILE
sqlplus / as sysdba
SQL> CREATE PFILE='/tmp/init_qgcs.ora' FROM SPFILE='/tmp/spfile_rac.ora';
修改 PFILE 内容适配单机
打开 /tmp/init_qgcs.ora 文件,重点修改以下参数:
参数名                                     | 原 RAC 值(示例) | 单机值修改建议
cluster_database                           | TRUE | FALSE(必须改)
instance_number                            | 2 | 1
undo_tablespace                            | UNDOTBS2 | 改为 UNDOTBS1(或 RAC 中第 1 节点使用的)
thread                                     | 2 | 1
control_files                              | +DATA/... ASM 路径 | 改为本地路径,如 /u01/oradata/orcl/control01.ctl
db_create_file_dest                        | +DATA | 改为如 /u01/oradata/orcl
remote_listener                            | 存在 | 注释或删除
log_archive_config、fal_server、fal_client | RAC/DG 用 | 注释或删除
*.memory_target=26852982784                |  注释或删除
修改后的配置
[oracle@db1 ~]$ cat /tmp/init_qgcs.ora 
qgcs1.__db_cache_size=603979776
qgcs2.__db_cache_size=637534208
qgcs1.__java_pool_size=16777216
qgcs2.__java_pool_size=16777216
qgcs1.__large_pool_size=33554432
qgcs2.__large_pool_size=33554432
qgcs1.__pga_aggregate_target=419430400
qgcs2.__pga_aggregate_target=419430400
qgcs1.__sga_target=1258291200
qgcs2.__sga_target=1258291200
qgcs1.__shared_io_pool_size=0
qgcs2.__shared_io_pool_size=0
qgcs1.__shared_pool_size=570425344
qgcs2.__shared_pool_size=536870912
qgcs1.__streams_pool_size=0
qgcs2.__streams_pool_size=0
*.audit_file_dest='/opt/app/oracle/admin/qgcs/adump'
*.audit_trail='db'
*.cluster_database=false
*.compatible='11.2.0.4.0'
*.control_files='/data/oracle/oradata/qgcs/controlfile/control01.ctl'
*.db_block_size=8192
*.db_create_file_dest='/data/oracle/oradata/qgcs'
*.db_domain=''
*.db_name='qgcs'
*.db_recovery_file_dest='/data/oracle/oradata/qgcs'
*.db_recovery_file_dest_size=32212254720
*.diagnostic_dest='/opt/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=qgcsXDB)'
qgcs.instance_number=1
*.log_archive_dest_1='LOCATION=/data/oracle/oradata/qgcs/archive-qgcs'
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=415236096
*.processes=150
*.remote_login_passwordfile='exclusive'
*.sga_target=1245708288
qgcs.thread=1
qgcs.undo_tablespace='UNDOTBS1'

使用修改后的 PFILE 启动 NOMOUNT
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP NOMOUNT PFILE='/tmp/init_qgcs.ora';
创建新 SPFILE
SQL> CREATE SPFILE FROM PFILE='/tmp/init_qgcs.ora';
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP NOMOUNT;  -- 此时用的就是新生成的 SPFILE

 3.2恢复控制文件

RMAN> startup force nomount;
 RMAN> restore controlfile from '/data/backup/qgcs/20250522/control/control_r43q27pu_1_1_20250522_20250522010001.bak';

控制文件恢复后就可以启动到mount状态了,
RMAN> alter database mount;

3.3、数据文件恢复(全备)

启动到mount状态先别着急恢复数据库,需要先将备份集注册到rman中

RMAN> catalog start with '/data/backup/qgcs/20250518';

注册完成后,先交叉校验备份集:

RMAN> crosscheck backupset;

删除过期的备份,因为你备份是异地备份,所以在RAC中记录的备份全部过期,进行清除

RMAN> delete expired backup;

现在开始恢复数据库文件,因为RAC数据库数据文件、日志文件等存储路径时在ASM磁盘中,路径基本是以 ‘+DATA’ 开头,在执行restore database 命令前需要进行文件路径转换。
先在原库上生成关于数据文件路径转换的脚本,便于恢复操作,脚本如下(在原库查询得出脚本)

查询脚本
select 'set newname for datafile ' || a.FILE# || ' to "' || a.NAME || '";' from v$datafile a
union all
select 'set newname for tempfile ' || a.FILE# || ' to "' || a.NAME || '";' from v$tempfile a;

结果

1    set newname for datafile 1 to "+DATA/qgcs/datafile/system.258.1155087435";
2    set newname for datafile 2 to "+DATA/qgcs/datafile/sysaux.290.1155087435";
3    set newname for datafile 3 to "+DATA/qgcs/datafile/undotbs1.291.1155087435";
4    set newname for datafile 4 to "+DATA/qgcs/datafile/users.256.1155087435";
5    set newname for datafile 5 to "+DATA/qgcs/datafile/undotbs2.289.1155087569";
…… 会将所有涉及到的数据文件全部显示,得到以上脚本后进行简单的编辑: ramn> run{ allocate channel ch1 device type disk; set newname
for datafile 1 to "+DATA/qgcs/datafile/system.258.1155087435"; set newname for datafile 2 to "+DATA/qgcs/datafile/sysaux.290.1155087435"; set newname for datafile 3 to "+DATA/qgcs/datafile/undotbs1.291.1155087435"; set newname for datafile 4 to "+DATA/qgcs/datafile/users.256.1155087435"; …… restore database; switch datafile all; switch tempfile all; } 然后就可以在rman中运行以上修改好的 run 块(脚本)进行数据库恢复。 此处我并没有生成关于redo日志的转换语句,因为我在讲redo日志转换放到 run脚本块中执行总会提示 +DATA开头的路径不存在, 所以就省略了redo,但是我发现数据库恢复并未受影响,而且在恢复后redo日志路径已经转换了 数据库文件恢复后,执行recover database会报错,提示缺少归档文件: RMAN> recover database; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 05/20/2025 16:36:12 RMAN-06054: media recovery requesting unknown archived log for thread 2 with sequence 9229 and starting SCN of 119623030 RMAN> recover database until sequence 39595; RMAN> alter database open resetlogs;

3.3、数据文件恢复(全备+增备)

启动到mount状态先别着急恢复数据库,需要先将备份集注册到rman中

RMAN> catalog start with '/data/backup/qgcs/';

注册完成后,先交叉校验备份集:

RMAN> crosscheck backupset;

删除过期的备份,因为你备份是异地备份,所以在RAC中记录的备份全部过期,进行清除

RMAN> delete expired backup;

rman> run{
SET UNTIL TIME "TO_DATE('2025-05-22 02:00:00', 'YYYY-MM-DD HH24:MI:SS')";
set newname for datafile 1 to "+DATA/qgcs/datafile/system.258.1150758321";
set newname for datafile 2 to "+DATA/qgcs/datafile/sysaux.257.1150758323";
set newname for datafile 3 to "+DATA/qgcs/datafile/undotbs1.264.1150758325";
……
SWITCH DATAFILE ALL;
RECOVER DATABASE;
}


RMAN> alter database open resetlogs;

 

posted on 2025-05-26 15:03  !!雪莲花!!  阅读(81)  评论(0)    收藏  举报