环境说明:
1
2
3
源库:Oracle 11.2.0.4.0 RAC
目标库:Oracle 11.2.0.4.0 单机
操作系统:kylin v10 SP1
恢复过程:
1
2
3
4
5
6
7
8
9
10
11
1.检查备份文件
2.准备环境变量
3.准备参数文件
4.启动实例
5.恢复控制文件
6.文件路径
7.注册备份文件所在目录
8.执行restore
9.执行recover
10.修改 redo 路径
11.
open
数据库
将源库备份文件拷贝到目标服务器:
1.检查备份文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
oracle@cjc-db-01:
/home/oracle
$
ls
-lrht
/db/oracle/bak/test/rman/
total 727M
-rw-r--r-- 1 oracle oinstall 54M Jun 17 00:45 rman_cjc_db_20240617_ok2thsoj_1_1.bak
-rw-r--r-- 1 oracle oinstall 1.3M Jun 17 00:45 rman_cjc_db_20240617_ol2thsp3_1_1.bak
-rw-r--r-- 1 oracle oinstall 96K Jun 17 00:45 rman_cjc_db_20240617_om2thsp5_1_1.bak
-rw-r--r-- 1 oracle oinstall 208M Jun 17 00:45 rman_cjc_db_20240617_oi2thsoj_1_1.bak
-rw-r--r-- 1 oracle oinstall 208M Jun 17 00:45 rman_cjc_db_20240617_oj2thsoj_1_1.bak
-rw-r--r-- 1 oracle oinstall 213M Jun 17 00:45 rman_cjc_db_20240617_oh2thsoj_1_1.bak
-rw-r--r-- 1 oracle oinstall 2.5K Jun 17 00:46 rman_cjc_arch_20240617_oq2thsq8_1_1.bak
-rw-r--r-- 1 oracle oinstall 6.5K Jun 17 00:46 rman_cjc_arch_20240617_on2thsq8_1_1.bak
-rw-r--r-- 1 oracle oinstall 2.7M Jun 17 00:46 rman_cjc_arch_20240617_op2thsq8_1_1.bak
-rw-r--r-- 1 oracle oinstall 23M Jun 17 00:46 rman_cjc_arch_20240617_oo2thsq8_1_1.bak
-rw-r--r-- 1 oracle oinstall 19M Jun 17 00:46 rman_cjc_ctl_bak_20240617_or2thsqc_1_1.bak
-rw-r--r-- 1 oracle oinstall 13K Jun 17 00:46 rman_cjc_20240617.log
-rw-r--r-- 1 oracle oinstall 52K Jun 17 00:47 backup.log
2.准备环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
oracle@cjc-db-01:
/home/oracle
$
vi
.bash_profile
# Source /root/.bashrc if user has one
[ -f ~/.bashrc ] && . ~/.bashrc
export
ORACLE_BASE=
/db/oracle/app/oracle
export
ORACLE_HOME=
/db/oracle/app/oracle/product/11
.2
/db
export
PATH=$PATH:$ORACLE_HOME
/bin
:$ORACLE_HOME
/OPatch
export
LD_LIBRARY_PATH=$ORACLE_HOME
/lib
:$LD_LIBRARY_PATH
export
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export
ORACLE_SID=cjc2
alias
cdo=
'cd $ORACLE_HOME'
alias
cdb=
'cd $ORACLE_HOME/dbs'
alias
cdn=
'cd $ORACLE_HOME/network/admin'
alias
cdal=
'cd $ORACLE_BASE/diag/rdbms/*/cjc2/trace'
alias
sqp=
'sqlplus / as sysdba'
3.准备参数文件
1
2
3
4
5
6
7
8
9
10
11
12
13
oracle@cjc-db-01:
/db/oracle/app/oracle/product/11
.2
/db/dbs
$
vi
initcjc2.ora
*.compatible=
'11.2.0.4.0'
*.control_files=
'/db/oracle/oradata/cjc/control01.ctl'
*.db_block_size=8192
*.db_name=
'cjc'
*.diagnostic_dest=
'/db/oracle/app/oracle'
*.open_cursors=300
*.pga_aggregate_target=1593835520
*.processes=150
*.sga_target=4783603712
*.undo_tablespace=
'UNDOTBS1'
#*.log_archive_dest_1='location=/db/oracle/arch'
#*.log_archive_format='cjc_%t_%s_%r.arc'
4. 启动实例
5.恢复控制文件
1
2
rman target /
RMAN> restore controlfile from
'/db/oracle/bak/test/rman/rman_cjc_ctl_bak_20240617_or2thsqc_1_1.bak'
;
挂载数据库
1
RMAN> alter database
mount
;
6.文件路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
oracle@cjc-db-01:
/home/oracle
$sqlplus / as sysdba
set
line 300
set
pagesize 100;
col name
for
a60
select
* from
v
$dbfile;
FILE
# NAME
---------- ------------------------------------------------------------
1 +DATA
/cjc/datafile/system
.259.1038241499
2 +DATA
/cjc/datafile/sysaux
.260.1038241501
3 +DATA
/cjc/datafile/undotbs1
.261.1038241503
4 +DATA
/cjc/datafile/undotbs2
.263.1038241509
5 +DATA
/cjc/datafile/users
.264.1038241509
6 +DATA
/cjc/datafile/cjc
.279.1038246921
7 +DATA
/cjc/datafile/cjc_ind
.280.1038246923
8 +DATA
/cjc/datafile/cjc
.281.1038246945
9 +DATA
/cjc/datafile/cjc
.282.1038246949
10 +DATA
/cjc/datafile/cjc
.283.1038246959
11 +DATA
/cjc/datafile/cjc
.284.1038246961
12 +DATA
/cjc/datafile/cjc_ind
.285.1038246995
13 +DATA
/cjc/datafile/xxx
.381.1062437923
13 rows selected
临时文件:
1
2
3
4
select
name from
v
$tempfile;
NAME
------------------------------------------------------------
+DATA
/cjc/tempfile/temp
.262.1038241505
日志文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SET LINE 300
col MEMBER FOR A55
SELECT GROUP
#,MEMBER FROM V$LOGFILE ORDER BY 1;
GROUP
# MEMBER
---------- -------------------------------------------------------
1 +DATA
/cjc/onlinelog/rlog_1_2_512m
1 +DATA
/cjc/onlinelog/group_1
.257.1038241495
2 +DATA
/cjc/onlinelog/group_2
.258.1038241497
2 +DATA
/cjc/onlinelog/rlog_2_2_512m
3 +DATA
/cjc/onlinelog/group_3
.265.1038241847
3 +DATA
/cjc/onlinelog/rlog_3_2_512m
4 +DATA
/cjc/onlinelog/group_4
.266.1038241849
4 +DATA
/cjc/onlinelog/rlog_4_2_512m
5 +DATA
/cjc/onlinelog/rlog_5_1_512m
5 +DATA
/cjc/onlinelog/rlog_5_2_512m
6 +DATA
/cjc/onlinelog/rlog_6_1_512m
6 +DATA
/cjc/onlinelog/rlog_6_2_512m
12 rows selected.
批量生成 SET NEWNAME ......语句
将 +DATA/cjc/datafile 转换为 /db/oracle/oradata/cjc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
set
line 300
set
pagesize 100
col new_datafile
for
a100
select
'SET NEWNAME FOR DATAFILE '
||
file
#||' to '''||replace(name, '+DATA/cjc/datafile', '/db/oracle/oradata/cjc')||''';' as new_datafile from v$datafile order by file#;
NEW_DATAFILE
----------------------------------------------------------------------------------------------------
SET NEWNAME FOR DATAFILE 1 to
'/db/oracle/oradata/cjc/system.259.1038241499'
;
SET NEWNAME FOR DATAFILE 2 to
'/db/oracle/oradata/cjc/sysaux.260.1038241501'
;
SET NEWNAME FOR DATAFILE 3 to
'/db/oracle/oradata/cjc/undotbs1.261.1038241503'
;
SET NEWNAME FOR DATAFILE 4 to
'/db/oracle/oradata/cjc/undotbs2.263.1038241509'
;
SET NEWNAME FOR DATAFILE 5 to
'/db/oracle/oradata/cjc/users.264.1038241509'
;
SET NEWNAME FOR DATAFILE 6 to
'/db/oracle/oradata/cjc/cjc.279.1038246921'
;
SET NEWNAME FOR DATAFILE 7 to
'/db/oracle/oradata/cjc/cjc_ind.280.1038246923'
;
SET NEWNAME FOR DATAFILE 8 to
'/db/oracle/oradata/cjc/cjc.281.1038246945'
;
SET NEWNAME FOR DATAFILE 9 to
'/db/oracle/oradata/cjc/cjc.282.1038246949'
;
SET NEWN