目的:迁移单实例数据库到oracle rac asm环境下。即迁移原系统hrdbprim数据库到oracle rac ASM环境下hrdb数据库,实现数据库的迁移,转为后的实例为hrdb3。
具体过程如下
1,配置tnsnames.ora文件,实现两个数据库的互相访问
-
<p>1,配置tnsnames.ora文件,实现两个数据库的互相访问</p>vi tnsnames.ora
-
-
-
hrdb_source =
-
(DESCRIPTION =
-
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.×.×)(PORT = 1521))
-
(CONNECT_DATA =
-
(SERVER = DEDICATED)
-
(SERVICE_NAME = hrdbprim)
-
)
-
)
-
hrdb =
-
(DESCRIPTION =
-
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.×.×)(PORT = 1521))
-
(CONNECT_DATA =
-
(SERVER = DEDICATED)
-
(SERVICE_NAME = hrdb)
-
)
-
)
-
2,设置备库pfile文件,常见备库的初始化pfile文件,根据参数建立相应的目录。
asm使用asmcmd命令进行创建。
-
vi /oracle/app/oracle/admin/hrdb/inithrdb.ora
-
*.audit_file_dest='/oracle/app/oracle/admin/hrdbb/adump'
-
*.audit_trail='db'
-
*.cluster_database=false
-
*.compatible='11.2.0.0.0'
-
*.control_files='+DATA/hrdb/controlfile/control01.ctl','+FRA/hrdb/controlfile/control02.ctl'
-
*.db_block_size=8192
-
*.db_create_file_dest='+DATA'
-
*.db_domain=''
-
*.db_name='hrdb'
-
*.db_recovery_file_dest='+FRA'
-
*.db_recovery_file_dest_size=107374182400
-
*.diagnostic_dest='/oracle/app/oracle'
-
hrdbb3.instance_number=3
-
hrdbb2.instance_number=2
-
hrdbb1.instance_number=1
-
*.log_archive_format='%t_%s_%r.dbf'
-
*.nls_language='SIMPLIFIED CHINESE'
-
*.nls_territory='CHINA'
-
*.open_cursors=1000
-
*.pga_aggregate_target=1610612736
-
*.processes=500
-
*.remote_listener='dtydb-scan2:1521'
-
*.remote_login_passwordfile='exclusive'
-
*.resource_manager_plan='default_plan'
-
*.result_cache_mode='MANUAL'
-
*.sga_target=4399824896
-
hrdb3.thread=3
-
hrdb2.thread=2
-
hrdb1.thread=1
-
hrdb3.undo_tablespace='UNDOTBS1'
-
hrdb1.undo_tablespace='UNDOTBS3'
-
hrdb2.undo_tablespace='UNDOTBS2'
-
-
-
*.standby_file_management='auto'
注意:cluster_database必须是false,undo_tablespace要和生产保持一致
3,启动备库的监听,新建pfile,spfile文件
startup pfile = '/oracle/app/oracle/admin/hrdb/inithrdb.ora' nomount;
create spfile from pfile='/oracle/app/oracle/admin/hrdb/inithrdb.ora';
startup nomount 启动到mount状态
4,登录到备份数据库,开始rman备份
-
alter system switch log file;
-
多运行几次
-
-
rman target /
-
run {
-
allocate channel c1 type disk;
-
allocate channel c2 type disk;
-
backup database format '/data/backup/hrdbprim-%U' ;
-
backup archivelog all delete all input format '/data/backup/ARC_%U';
-
}
-
-
backup database format '/data/backup/hrdbprim-%U';
-
backup current controlfile format '/data/backup/%d_control_%s_%c_%p_%T.ctl';
-
backup archivelog all format '/data/backup/%d_arch_%s_%c_%p_%T.bak';
-
-
backup current controlfile format '/data/backup/%d_control_%s_%c_%p_%T.ctl';
-
5,传输备份文件到备库 ,注意最好在同一个目录,要不还需要地址转换,包括备份的控制文件,备份的数据文件和密码文件等
6,备份主机运行如下命令,开始备份
-
rman target sys/oracle@hrdb_source auxiliary sys/oracle
-
-
-
RUN
-
{
-
# The DUPLICATE command uses an automatic sbt channel.
-
# Because the target datafiles are spread across multiple directories,
-
# run SET NEWNAME rather than DB_FILE_NAME_CONVERT
-
SET NEWNAME FOR DATAFILE 1 TO '+DATA/hrdb/datafile/system01.dbf';
-
SET NEWNAME FOR DATAFILE 2 TO '+DATA/hrdb/datafile/sysaux01.dbf';
-
SET NEWNAME FOR DATAFILE 3 TO '+DATA/hrdb/datafile/undotbs03.dbf';
-
SET NEWNAME FOR DATAFILE 4 TO '+DATA/hrdb/datafile/users01.dbf';
-
# Do not set a newname for datafile 7, because it is in the tools tablespace,
-
# and you are excluding tools from the duplicate database.
-
#SET NEWNAME FOR DATAFILE 8 TO '/oradata7/users01.dbf';
-
DUPLICATE TARGET DATABASE TO hrdb
-
LOGFILE
-
GROUP 7 ('+DATA/tyolap/onlinelog/redo31a') SIZE 50m REUSE,
-
GROUP 8 ('+DATA/tyolap/onlinelog/redo32a') SIZE 50m REUSE;
-
}
-
-
duplicate target database to hrdb nofilenamecheck;
-
-
-
run {
-
allocate channel c1 device type disk;
-
restore controlfile from '/oracle/app/oracle/product/11.2.0/db_1/dbs/c-4034584542-20120802-01';
-
alter database mount;
-
}
7,运行结果如下,显示rman恢复成功
-
[oracle@dtydb5 ~]$ rman target sys/oracle@hrdb_source auxiliary sys/oracle
-
-
恢复管理器: Release 11.2.0.2.0 - Production on 星期五 8月 3 15:02:31 2012
-
-
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
-
-
已连接到目标数据库: HRDBPRIM (DBID=4034584542)
-
已连接到辅助数据库: HRDB (未装载)
-
-
RMAN> RUN
-
2> {
-
3> # The DUPLICATE command uses an automatic sbt channel.
-
4> # Because the target datafiles are spread across multiple directories,
-
5> # run SET NEWNAME rather than DB_FILE_NAME_CONVERT
-
6> SET NEWNAME FOR DATAFILE 1 TO '+DATA/hrdb/datafile/system01.dbf';
-
7> SET NEWNAME FOR DATAFILE 2 TO '+DATA/hrdb/datafile/sysaux01.dbf';
-
8> SET NEWNAME FOR DATAFILE 3 TO '+DATA/hrdb/datafile/undotbs03.dbf';
-
9> SET NEWNAME FOR DATAFILE 4 TO '+DATA/hrdb/datafile/users01.dbf';
-
10> # Do not set a newname for datafile 7, because it is in the tools tablespace,
-
11> # and you are excluding tools from the duplicate database.
-
12> #SET NEWNAME FOR DATAFILE 8 TO '/oradata7/users01.dbf';
-
13> DUPLICATE TARGET DATABASE TO hrdb
-
14> LOGFILE
-
15> GROUP 7 ('+DATA/tyolap/onlinelog/redo31a') SIZE 50m REUSE,
-
16> GROUP 8 ('+DATA/tyolap/onlinelog/redo32a') SIZE 50m REUSE;
-
17> }
-
-
正在执行命令: SET NEWNAME
-
-
正在执行命令: SET NEWNAME
-
-
正在执行命令: SET NEWNAME
-
-
正在执行命令: SET NEWNAME
-
-
启动 Duplicate Db 于 2012-08-03 15:02:44
-
使用目标数据库控制文件替代恢复目录
-
分配的通道: ORA_AUX_DISK_1
-
通道 ORA_AUX_DISK_1: SID=26 设备类型=DISK
-
-
内存脚本的内容:
-
{
-
sql clone "alter system set db_name =
-
''HRDBPRIM'' comment=
-
''Modified by RMAN duplicate'' scope=spfile";
-
sql clone "alter system set db_unique_name =
-
''HRDB'' comment=
-
''Modified by RMAN duplicate'' scope=spfile";
-
shutdown clone immediate;
-
startup clone force nomount
-
restore clone primary controlfile;
-
alter clone database mount;
-
}
-
正在执行内存脚本
-
-
sql 语句: alter system set db_name = ''HRDBPRIM'' comment= ''Modified by RMAN duplicate'' scope=spfile
-
-
sql 语句: alter system set db_unique_name = ''HRDB'' comment= ''Modified by RMAN duplicate'' scope=spfile
-
-
Oracle 实例已关闭
-
-
Oracle 实例已启动
-
-
系统全局区域总计 4392697856 字节
-
-
Fixed Size 2233616 字节
-
Variable Size 838863600 字节
-
Database Buffers 3539992576 字节
-
Redo Buffers 11608064 字节
-
-
启动 restore 于 2012-08-03 15:03:08
-
分配的通道: ORA_AUX_DISK_1
-
通道 ORA_AUX_DISK_1: SID=1 设备类型=DISK
-
-
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
-
通道 ORA_AUX_DISK_1: 正在还原控制文件
-
通道 ORA_AUX_DISK_1: 正在读取备份片段 /oracle/app/oracle/product/11.2.0/db_1/dbs/c-4034584542-20120803-07
-
通道 ORA_AUX_DISK_1: ORA-19870: 还原备份片段 /oracle/app/oracle/product/11.2.0/db_1/dbs/c-4034584542-20120803-07 时出错
-
ORA-19505: 无法识别文件"/oracle/app/oracle/product/11.2.0/db_1/dbs/c-4034584542-20120803-07"
-
ORA-27037: 无法获得文件状态
-
Linux-x86_64 Error: 2: No such file or directory
-
Additional information: 3
-
-
故障转移到上一个备份
-
-
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
-
通道 ORA_AUX_DISK_1: 正在还原控制文件
-
通道 ORA_AUX_DISK_1: 正在读取备份片段 /data/backup/HRDBPRIM_control_48_1_1_20120803.ctl
-
通道 ORA_AUX_DISK_1: 段句柄 = /data/backup/HRDBPRIM_control_48_1_1_20120803.ctl 标记 = TAG20120803T142924
-
通道 ORA_AUX_DISK_1: 已还原备份片段 1
-
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:03
-
输出文件名=+DATA/hrdb/controlfile/control01.ctl
-
输出文件名=+FRA/hrdb/controlfile/control02.ctl
-
完成 restore 于 2012-08-03 15:03:12
-
-
数据库已装载
-
-
内存脚本的内容:
-
{
-
set until scn 1076103;
-
set newname for datafile 1 to
-
"+DATA/hrdb/datafile/system01.dbf";
-
set newname for datafile 2 to
-
"+DATA/hrdb/datafile/sysaux01.dbf";
-
set newname for datafile 3 to
-
"+DATA/hrdb/datafile/undotbs03.dbf";
-
set newname for datafile 4 to
-
"+DATA/hrdb/datafile/users01.dbf";
-
restore
-
clone database
-
;
-
}
-
正在执行内存脚本
-
-
正在执行命令: SET until clause
-
-
正在执行命令: SET NEWNAME
-
-
正在执行命令: SET NEWNAME
-
-
正在执行命令: SET NEWNAME
-
-
正在执行命令: SET NEWNAME
-
-
启动 restore 于 2012-08-03 15:03:17
-
使用通道 ORA_AUX_DISK_1
-
-
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
-
通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
-
通道 ORA_AUX_DISK_1: 将数据文件 00001 还原到 +DATA/hrdb/datafile/system01.dbf
-
通道 ORA_AUX_DISK_1: 将数据文件 00002 还原到 +DATA/hrdb/datafile/sysaux01.dbf
-
通道 ORA_AUX_DISK_1: 将数据文件 00003 还原到 +DATA/hrdb/datafile/undotbs03.dbf
-
通道 ORA_AUX_DISK_1: 将数据文件 00004 还原到 +DATA/hrdb/datafile/users01.dbf
-
通道 ORA_AUX_DISK_1: 正在读取备份片段 /data/backup/hrdbprim-1anhnl0f_1_1
-
通道 ORA_AUX_DISK_1: 段句柄 = /data/backup/hrdbprim-1anhnl0f_1_1 标记 = TAG20120803T142830
-
通道 ORA_AUX_DISK_1: 已还原备份片段 1
-
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:16
-
完成 restore 于 2012-08-03 15:03:33
-
-
内存脚本的内容:
-
{
-
switch clone datafile all;
-
}
-
正在执行内存脚本
-
-
数据文件 1 已转换成数据文件副本
-
输入数据文件副本 RECID=5 STAMP=790355013 文件名=+DATA/hrdb/datafile/system01.dbf
-
数据文件 2 已转换成数据文件副本
-
输入数据文件副本 RECID=6 STAMP=790355013 文件名=+DATA/hrdb/datafile/sysaux01.dbf
-
数据文件 3 已转换成数据文件副本
-
输入数据文件副本 RECID=7 STAMP=790355013 文件名=+DATA/hrdb/datafile/undotbs03.dbf
-
数据文件 4 已转换成数据文件副本
-
输入数据文件副本 RECID=8 STAMP=790355013 文件名=+DATA/hrdb/datafile/users01.dbf
-
-
内存脚本的内容:
-
{
-
set until scn 1076103;
-
recover
-
clone database
-
delete archivelog
-
;
-
}
-
正在执行内存脚本
-
-
正在执行命令: SET until clause
-
-
启动 recover 于 2012-08-03 15:03:33
-
使用通道 ORA_AUX_DISK_1
-
-
正在开始介质的恢复
-
-
通道 ORA_AUX_DISK_1: 正在开始将归档日志还原到默认目标
-
通道 ORA_AUX_DISK_1: 正在还原归档日志
-
归档日志线程=1 序列=18
-
通道 ORA_AUX_DISK_1: 正在读取备份片段 /data/backup/HRDBPRIM_arch_46_1_1_20120803.bak
-
通道 ORA_AUX_DISK_1: 段句柄 = /data/backup/HRDBPRIM_arch_46_1_1_20120803.bak 标记 = TAG20120803T142917
-
通道 ORA_AUX_DISK_1: 已还原备份片段 1
-
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:01
-
归档日志文件名=+FRA/hrdb/archivelog/2012_08_03/thread_1_seq_18.490.790355017 线程=1 序列=18
-
通道 clone_default: 正在删除归档日志
-
归档日志文件名=+FRA/hrdb/archivelog/2012_08_03/thread_1_seq_18.490.790355017 RECID=15 STAMP=790355016
-
介质恢复完成, 用时: 00:00:01
-
完成 recover 于 2012-08-03 15:03:38
-
Oracle 实例已启动
-
-
系统全局区域总计 4392697856 字节
-
-
Fixed Size 2233616 字节
-
Variable Size 838863600 字节
-
Database Buffers 3539992576 字节
-
Redo Buffers 11608064 字节
-
-
内存脚本的内容:
-
{
-
sql clone "alter system set db_name =
-
''HRDB'' comment=
-
''Reset to original value by RMAN'' scope=spfile";
-
sql clone "alter system reset db_unique_name scope=spfile";
-
shutdown clone immediate;
-
startup clone nomount;
-
}
-
正在执行内存脚本
-
-
sql 语句: alter system set db_name = ''HRDB'' comment= ''Reset to original value by RMAN'' scope=spfile
-
-
sql 语句: alter system reset db_unique_name scope=spfile
-
-
Oracle 实例已关闭
-
-
已连接到辅助数据库 (未启动)
-
Oracle 实例已启动
-
-
系统全局区域总计 4392697856 字节
-
-
Fixed Size 2233616 字节
-
Variable Size 838863600 字节
-
Database Buffers 3539992576 字节
-
Redo Buffers 11608064 字节
-
sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "HRDB" RESETLOGS ARCHIVELOG
-
MAXLOGFILES 16
-
MAXLOGMEMBERS 3
-
MAXDATAFILES 100
-
MAXINSTANCES 8
-
MAXLOGHISTORY 292
-
LOGFILE
-
GROUP 7 ( '+DATA/tyolap/onlinelog/redo31a' ) SIZE 50 M REUSE,
-
GROUP 8 ( '+DATA/tyolap/onlinelog/redo32a' ) SIZE 50 M REUSE
-
DATAFILE
-
'+DATA/hrdb/datafile/system01.dbf'
-
CHARACTER SET ZHS16GBK
-
-
-
内存脚本的内容:
-
{
-
set newname for clone tempfile 1 to new;
-
switch clone tempfile all;
-
catalog clone datafilecopy "+DATA/hrdb/datafile/sysaux01.dbf",
-
"+DATA/hrdb/datafile/undotbs03.dbf",
-
"+DATA/hrdb/datafile/users01.dbf";
-
switch clone datafile all;
-
}
-
正在执行内存脚本
-
-
正在执行命令: SET NEWNAME
-
-
临时文件 1 在控制文件中已重命名为 +DATA
-
-
已将数据文件副本列入目录
-
数据文件副本文件名=+DATA/hrdb/datafile/sysaux01.dbf RECID=1 STAMP=790355060
-
已将数据文件副本列入目录
-
数据文件副本文件名=+DATA/hrdb/datafile/undotbs03.dbf RECID=2 STAMP=790355060
-
已将数据文件副本列入目录
-
数据文件副本文件名=+DATA/hrdb/datafile/users01.dbf RECID=3 STAMP=790355060
-
-
数据文件 2 已转换成数据文件副本
-
输入数据文件副本 RECID=1 STAMP=790355060 文件名=+DATA/hrdb/datafile/sysaux01.dbf
-
数据文件 3 已转换成数据文件副本
-
输入数据文件副本 RECID=2 STAMP=790355060 文件名=+DATA/hrdb/datafile/undotbs03.dbf
-
数据文件 4 已转换成数据文件副本
-
输入数据文件副本 RECID=3 STAMP=790355060 文件名=+DATA/hrdb/datafile/users01.dbf
-
-
内存脚本的内容:
-
{
-
Alter clone database open resetlogs;
-
}
-
正在执行内存脚本
-
-
数据库已打开
-
完成 Duplicate Db 于 2012-08-03 15:04:26