目的:迁移单实例数据库到oracle rac asm环境下。即迁移原系统hrdbprim数据库到oracle rac ASM环境下hrdb数据库,实现数据库的迁移,转为后的实例为hrdb3。
具体过程如下
1,配置tnsnames.ora文件,实现两个数据库的互相访问
1,配置tnsnames.ora文件,实现两个数据库的互相访问
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
分享到:
相关推荐
Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
Oracle Rman Active Database Duplicate 迁移方案V1.1.pdf
使用RMAN工具跨平台迁移数据库
RMAN高级应用之Duplicate复制数据库 1.基本概述 2.创建辅助实例 3.不同环境下的复制流程 4.实战 5.附录
Oracle RMAN DUPLICATE教程
RMAN高级应用之Duplicate复制数据库
基于rman的数据库迁移(ASMRAC数据库).pdf
使用RMAN实现ORACLE数据库的增量备份.pdf
丢失全部数据库文件及全部redolog的恢复方法,可用作RMAN数据库迁移.doc
RMAN高级应用之Duplicate复制数据库
使用RMAN DUPLICATE...FROM ACTIVE DATABASE 创建物理备库 简化standby创建过程,提高效率
使用RMAN实现ORACLE数据库的增量备份
LINUX-下ORACLE利用rman备份迁移数据库.docx
用RMAN COPY实现ORACLE数据库的存储迁移.pdf
该文档介绍了如何利用rman工具对oracle数据库进行备份和恢复。
LINUX-下ORACLE利用rman备份迁移数据库.doc
试谈利用RMAN实现Oracle数据库备份.pdf
利用RMAN实现Oracle数据库的备份与恢复
利用RMAN实现Oracle数据库的备份与恢复.pdf
rman duplicate 搭建dg 一步步向你展示如何不停机搭建dg