1.使用 RMAN 创建数据库副本 使用 RMAN 的 DUPLICATE 命令可根据目标数据库备份创建数据库副本。 创建数据库副本: 1.创建辅助实例的 Oracle 口令文件。 2. 建立到辅助实例的 Oracle Net 连接。 3. 创建辅助实例的初始化参数文件。 4.在 NOMOUNT 模式下启动
1.使用 RMAN 创建数据库副本
使用 RMAN 的 DUPLICATE 命令可根据目标数据库备份创建数据库副本。
创建数据库副本:
1.创建辅助实例的 Oracle 口令文件。
2.
建立到辅助实例的 Oracle Net 连接。
3.
创建辅助实例的初始化参数文件。
4.在 NOMOUNT 模式下启动辅助实例。
5.
装载或打开目标数据库。
6.确保备份和归档重做日志文件可用。
7.根据需要分配辅助通道。
8.执行 DUPLICATE 命令。
创建辅助实例的初始化参数文件 :
请按如下方式指定参数:
DB_NAME
如果数据库副本与目标数据库在同一 Oracle 主目录中,则它们的名称必须不同。
在 DUPLICATE 命令中使用相同值。
DB_BLOCK_SIZE
指定的值应与为目标数据库设置的值相同。
指定用于控制文件命名的参数:
指定下列参数可控制辅助数据库的文件命名:
CONTROL_FILES
DB_FILE_NAME_CONVERT
LOG_FILE_NAME_CONVERT
在 NOMOUNT 模式下启动实例 :
在 NOMOUNT 模式下启动辅助实例。
根据用来启动实例的文本初始化参数文件创建服务器参数文件 (SPFILE)。
确保备份和归档重做日志文件可用 :
在副本主机上必须能访问所有目标数据库数据文件的备份。
备份可以是完全备份和增量备份的组合。
在副本主机上必须能访问恢复数据库副本所需的归档重做日志文件。
归档重做日志文件可以是:
--介质管理器上的备份
--映像副本
--实际的归档重做日志文件
分配辅助通道 :
使用 RMAN 的 DUPLICATE 命令:
RMAN> RUN
{ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK;
…
DUPLICATE TARGET DATABASE to auxdb;
}
当您执行 DUPLICATE 命令时,RMAN 会执行下列操作:
1.创建数据库副本的控制文件
2.
将目标数据文件还原到数据库副本
3.使用所有可用的增量备份和归档重做日志文件执行不完全恢复
4.关闭辅助实例后又重新启动它
5.通过 RESETLOGS 选项打开数据库副本
6.创建联机重做日志文件
7.为数据库副本生成新的唯一 DBID
指定 DUPLICATE 命令的选项
请在执行 DUPLICATE 命令时根据需要指定其它选项。
SKIP READONLY:用于排除只读表空间数据文件。
SKIP TABLESPACE:用于从目标数据库中排除表空间。不能排除 SYSTEM 表空间或包含还原段或回退段的表空间。
NOFILENAMECHECK:用于防止 RMAN 检查目标数据库数据文件是否与正在使用的数据库副本数据文件同名。当目标数据库和数据库副本的数据文件和重做日志文件使用相同的名称时,必须指定此选项。当创建数据库副本的主机具有与目标数据库主机一样的磁盘配置、目录结构和文件名时,通常使用此选项。如果这种情况下未指定 NOFILENAMECHECK,RMAN 会返回错误。
OPEN RESTRICTED:用于在数据库打开之后自动启用 RESTRICTED SESSION。
具体实验:
[oracle@ocmu ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Sun Mar 31 15:39:16 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORA11GR2 (DBID=116453860)
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
using target database control file instead of recovery catalog
new RMAN configuration parameters:
配置控制文件自动备份;
新的 RMAN 配置参数已成功存储
RMAN> 备份数据库和存档日志;
于 2013 年 3 月 31 日开始备份
当前日志已存档
分配的通道:ORA_DISK_1
通道 ORA_DISK_1:SID=20 设备类型=DISK
通道 ORA_DISK_1:开始归档日志备份集
通道 ORA_DISK_1:指定备份集中的存档日志
输入存档日志线程=1 序列=8 RECID=1 STAMP=811520735
输入存档日志线程=1 序列=9 RECID=2 STAMP=811520750
输入存档日志线程=1 序列=10 RECID=3 STAMP=811520772
输入存档日志线程=1 序列=11 RECID=4 STAMP=811520783
输入存档日志线程=1 序列=12 RECID=5 STAMP=811520796
输入存档日志线程=1 序列=13 RECID=6 STAMP=811525192
频道 ORA_DISK_1:从 2013 年 3 月 31 日开始播放第 1 部分
频道 ORA_DISK_1:于 2013 年 3 月 31 日完成第 1 部分
件句柄=/u01/app/FRA/ORA11GR2/backupset/2013_03_31/o1_mf_annnn_TAG20130331T153953_8oht29yn_.bkp tag=TAG20130331T153953 comment=NONE
通道 ORA_DISK_1:备份集已完成,已用时间:00:01:04
于 2013 年 3 月 31 日完成备份
于 2013 年 3 月 31 日开始备份
使用通道 ORA_DISK_1
通道 ORA_DISK_1:开始完整数据文件备份集
通道 ORA_DISK_1:指定备份集中的数据文件
输入数据文件文件号=00001名称=/u01/app/oracle/oradata/ORA11GR2/system01.dbf
输入数据文件文件号=00002名称=/u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf
输入数据文件文件编号=00003名称=/u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf
输入数据文件文件号=00005名称=/u01/app/oracle/oradata/ORA11GR2/example01.dbf
输入数据文件文件号=00004名称=/u01/app/oracle/oradata/ORA11GR2/users01.dbf
频道 ORA_DISK_1:从 2013 年 3 月 31 日开始播放第 1 部分
频道 ORA_DISK_1:于 2013 年 3 月 31 日完成第 1 部分
件句柄=/u01/app/FRA/ORA11GR2/backupset/2013_03_31/o1_mf_nnndf_TAG20130331T154059_8oht4jr1_.bkp tag=TAG20130331T154059 comment=NONE
通道 ORA_DISK_1:备份集已完成,已用时间:00:04:33
于 2013 年 3 月 31 日完成备份
于 2013 年 3 月 31 日开始备份
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1:开始归档日志备份集
通道 ORA_DISK_1:指定备份集中的归档日志
输入存档日志线程=1 序列=14 RECID=7 STAMP=811525533
频道 ORA_DISK_1:从 2013 年 3 月 31 日开始播放第 1 部分
频道 ORA_DISK_1:于 2013 年 3 月 31 日完成第 1 部分
件句柄=/u01/app/FRA/ORA11GR2/backupset/2013_03_31/o1_mf_annnn_TAG20130331T154533_8ohtdxrl_.bkp tag=TAG20130331T154533 comment=NONE
通道 ORA_DISK_1:备份集已完成,已用时间:00:00:01
于 2013 年 3 月 31 日完成备份
于 2013 年 3 月 31 日开始控制文件和 SPFILE 自动备份
片句柄=/u01/app/FRA/ORA11GR2/autobackup/2013_03_31/o1_mf_s_811525535_8ohtf2n9_.bkp comment=NONE
已于 2013 年 3 月 31 日完成控制文件和 SPFILE 自动备份
RMAN>
1) 创建密码文件
[oracle@ocmu ~]$ cd $ORACLE_HOME/dbs
[oracle@ocmu dbs]$ orapwd 文件=orapwORA11GR2 密码=oracle 条目=10
[oracle@ocmu dbs]$ ls orapw*
orapwORA11GR2
[oracle@ocmu dbs]$
2) 编辑tnsnames
[oracle@ocmu ~]$ cd $ORACLE_HOME/network/admin
[oracle@ocmu admin]$ vi tnsnames.ora
ORA11GR2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ocmu)(PORT = 1521)) ) (CONNECT_DATA = (ORACLE_SID = ORA11GR2) ) ) |
3) 将源库的pfile文件拷贝到目标数据库
[oracle@ocmu ~]$ cd $ORACLE_HOME/dbs
[oracle@ocmu dbs]$
scp 192.168.1.200:/u01/app/oracle/product/11.2.0/db_1/dbs/initORA11GR2.ora .
The authenticity of host '192.168.1.200 (192.168.1.200)' can't be established.
RSA key fingerprint is 35:b3:59:37:e6:a1:3b:34:7d:01:84:ee:5d:9b:48:24.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.200' (RSA) to the list of known hosts.
oracle@192.168.1.200's password:
initORA11GR2.ora 100% 948 0.9KB/s 00:00
[oracle@ocmu dbs]$
4) 创建相关目录
--创建数据文件存放目录
[oracle@ocmu ~]$ mkdir -p /u01/app/oracle/oradata/ORA11GR2
--创建快速恢复区目录
[oracle@ocmu ~]$ mkdir -p /u01/app/FRA/ORA11GR2
--创建admup转储目录
[oracle@ocmu ~]$ mkdir -p /u01/app/oracle/admin/ORA11GR2/adump
5) 将源库快速恢复区内容拷贝到目标库
[oracle@ocmu ~]$ cd /u01/app/FRA/ORA11GR2
[oracle@ocmu ORA11GR2]$ ls
[oracle@ocmu ORA11GR2]$
scp -r 192.168.1.200:/u01/app/FRA/ORA11GR2/archivelog .
oracle@192.168.1.200's password:
o1_mf_1_12_8ohorqkc_.arc 100% 48MB 24.1MB/s 00:02
o1_mf_1_11_8ohorc4n_.arc 100% 48MB 24.1MB/s 00:02
o1_mf_1_9_8ohoq8dx_.arc 100% 46MB 3.8MB/s 00:12
o1_mf_1_14_8ohtdx3d_.arc 100% 357KB 357.0KB/s 00:00
o1_mf_1_13_8oht26d8_.arc 100% 21MB 21.1MB/s 00:01
o1_mf_1_10_8ohoqxot_.arc 100% 48MB 24.1MB/s 00:02
o1_mf_1_8_8ohops0g_.arc 100% 44MB 3.1MB/s 00:14
[oracle@ocmu ORA11GR2]$
scp -r 192.168.1.200:/u01/app/FRA/ORA11GR2/autobackup .
oracle@192.168.1.200's password:
o1_mf_s_811525535_8ohtf2n9_.bkp 100% 9600KB 9.4MB/s 00:01
[oracle@ocmu ORA11GR2]$
scp -r 192.168.1.200:/u01/app/FRA/ORA11GR2/backupset .
oracle@192.168.1.200's password:
o1_mf_annnn_TAG20130331T153953_8oht29yn_.bkp 100% 256MB 9.8MB/s 00:26
o1_mf_nnndf_TAG20130331T154059_8oht4jr1_.bkp 100% 1142MB 7.7MB/s 02:29
o1_mf_annnn_TAG20130331T154533_8ohtdxrl_.bkp 100% 359KB 358.5KB/s 00:00
[oracle@ocmu ORA11GR2]$
6) 目标库启动到nomount模式
[oracle@ocmu ~]$ export ORACLE_SID=ORA11GR2
[oracle@ocmu ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Sun Mar 31 16:29:42 2013
版权所有 (c) 1982、2009,Oracle。 保留所有权利。
已连接到空闲实例。
SQL> 启动 nomount;
ORACLE 实例已启动。
系统全局区域总计 841162752 字节
固定大小 1339768 字节
可变大小 532680328 字节
数据库缓冲区 301989888 字节
重做缓冲区 5152768 字节
SQL>
7) 目标库运行重复命令
[oracle@ocmu ~]$ 导出 ORACLE_SID=ORA11GR2
[oracle@ocmu ~]$ rman 目标 sys/oracle@ora11gr2 辅助 /
恢复管理器:发布 11.2.0.1.0 - 于 2013 年 3 月 31 日星期日 16:48:18 发布
版权所有 (c) 1982、2009,Oracle 和/或其附属公司。 保留所有权利。
已连接到目标数据库:ORA11GR2 (DBID=116453860)
已连接到辅助数据库:ORA11GR2(未安装)
RMAN> 将目标数据库复制到 ORA11GR2 pfile =/u01/app/oracle/product/11.2.0/db_1/dbs/initORA11GR2.ora
日志文件
'/u01/app/oracle/oradata/ORA11GR2/redo01.log' 大小 50m,
'/u01/app/oracle/oradata/ORA11GR2/redo02.log' 大小 50m,
'/u01/app/oracle/oradata/ORA11GR2/redo03.log' 大小 50m
NOFILENAMECHECK;
于 2013 年 3 月 31 日开始复制 Db
使用目标数据库控制文件而不是恢复目录
分配的通道:ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1:SID=20 设备类型=DISK
内存脚本的内容:
{
sql 克隆 “更改系统设置 db_name =
''ORA11GR2'' 评论=
''由 RMAN 修改重复'' scope=spfile";
sql 克隆 “更改系统设置 db_unique_name =
''ORA11GR2'' 评论=
''由 RMAN 修改重复'' scope=spfile";
立即关闭克隆;
启动克隆强制 nomount
恢复克隆主控制文件;
更改克隆数据库挂载;
}
执行内存脚本
sql语句:alter system set db_name=''ORA11GR2''comment=''由RMAN修改重复''scope=spfile
sql 语句:alter system set db_unique_name=''ORA11GR2''comment=''由 RMAN 修改重复''scope=spfile
Oracle 实例关闭
Oracle 实例已启动
系统全局区域总计 841162752 字节
固定大小 1339768 字节
可变大小 536874632 字节
数据库缓冲区 297795584 字节
重做缓冲区 5152768 字节
于 2013 年 3 月 31 日开始恢复
分配的通道:ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1:SID=18 设备类型=DISK
通道 ORA_AUX_DISK_1:开始数据文件备份集恢复
通道 ORA_AUX_DISK_1:正在恢复控制文件
通道 ORA_AUX_DISK_1:从备份片段读取 /u01/app/FRA/ORA11GR2/autobackup/2013_03_31/o1_mf_s_811525535_8ohtf2n9_.bkp
通道ORA_AUX_DISK_1:片柄=/u01/app/FRA/ORA11GR2/autobackup/2013_03_31/o1_mf_s_811525535_8ohtf2n9_.bkp标记=TAG20130331T154535
通道 ORA_AUX_DISK_1:已恢复备份片段 1
通道 ORA_AUX_DISK_1:恢复完成,已用时间:00:00:03
输出文件名=/u01/app/oracle/oradata/ORA11GR2/control01.ctl
输出文件名=/u01/app/oracle/oradata/ORA11GR2/control02.ctl
已于 2013 年 3 月 31 日完成恢复
数据库已安装
内存脚本的内容:
{
设置为 scn 893076;
将数据文件 1 的新名称设置为
“/u01/app/oracle/oradata/ORA11GR2/system01.dbf”;
将数据文件 2 的新名称设置为
“/u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf”;
将数据文件 3 的新名称设置为
“/u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf”;
将数据文件 4 的新名称设置为
“/u01/app/oracle/oradata/ORA11GR2/users01.dbf”;
将数据文件 5 的新名称设置为
“/u01/app/oracle/oradata/ORA11GR2/example01.dbf”;
恢复
克隆数据库
;
}
执行内存脚本
执行命令:设置直到子句
执行命令:SET NEWNAME
执行命令:SET NEWNAME
执行命令:SET NEWNAME
执行命令:SET NEWNAME
执行命令:SET NEWNAME
于 2013 年 3 月 31 日开始恢复
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1:开始数据文件备份集恢复
通道 ORA_AUX_DISK_1:指定要从备份集恢复的数据文件
通道 ORA_AUX_DISK_1:将数据文件 00001 恢复到 /u01/app/oracle/oradata/ORA11GR2/system01.dbf
通道 ORA_AUX_DISK_1:将数据文件 00002 恢复到 /u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf
通道 ORA_AUX_DISK_1:将数据文件 00003 恢复到 /u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf
通道 ORA_AUX_DISK_1:将数据文件 00004 恢复到 /u01/app/oracle/oradata/ORA11GR2/users01.dbf
通道 ORA_AUX_DISK_1:将数据文件 00005 恢复到 /u01/app/oracle/oradata/ORA11GR2/example01.dbf
通道 ORA_AUX_DISK_1:从备份片段读取 /u01/app/FRA/ORA11GR2/backupset/2013_03_31/o1_mf_nnndf_TAG20130331T154059_8oht4jr1_.bkp
通道 ORA_AUX_DISK_1:件句柄=/u01/app/FRA/ORA11GR2/backupset/2013_03_31/o1_mf_nnndf_TAG20130331T154059_8oht4jr1_.bkp 标签=TAG20130331T154059
通道 ORA_AUX_DISK_1:已恢复备份片段 1
通道 ORA_AUX_DISK_1:恢复完成,已用时间:00:02:36
已于 2013 年 3 月 31 日完成恢复
内存脚本的内容:
{
切换所有克隆数据文件;
}
执行内存脚本
数据文件 1 已切换到数据文件副本
输入数据文件副本 RECID=2 STAMP=811529474 文件名=/u01/app/oracle/oradata/ORA11GR2/system01.dbf
数据文件 2 已切换到数据文件副本
输入数据文件副本 RECID=3 STAMP=811529474 文件名=/u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf
数据文件 3 已切换到数据文件副本
输入数据文件副本RECID=4 STAMP=811529474 文件名=/u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf
数据文件 4 已切换到数据文件副本
输入数据文件副本RECID=5 STAMP=811529474 文件名=/u01/app/oracle/oradata/ORA11GR2/users01.dbf
数据文件 5 已切换到数据文件副本
输入数据文件副本 RECID=6 STAMP=811529474 文件名=/u01/app/oracle/oradata/ORA11GR2/example01.dbf
内存脚本的内容:
{
设置为 scn 893076;
恢复
克隆数据库
删除存档日志
;
}
执行内存脚本
执行命令:设置直到子句
于 2013 年 3 月 31 日开始恢复
使用通道 ORA_AUX_DISK_1
开始媒体恢复
线程 1 的归档日志(序列 14)已作为文件 /u01/app/FRA/ORA11GR2/archivelog/2013_03_31/o1_mf_1_14_8ohtdx3d_.arc
归档日志文件名称=/u01/app/FRA/ORA11GR2/archivelog/2013_03_31/o1_mf_1_14_8ohtdx3d_.arc thread=1 sequence=14
媒体恢复完成,已用时间:00:00:04
于 2013 年 3 月 31 日完成恢复
内存脚本的内容:
{
立即关闭克隆;
启动克隆 nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initORA11GR2.ora';
}
执行内存脚本
数据库已卸载
Oracle 实例关闭
已连接到辅助数据库(未启动)
Oracle 实例已启动
系统全局区域总计 841162752 字节
固定大小 1339768 字节
可变大小 532680328 字节
数据库缓冲区 301989888 字节
重做缓冲区 5152768 字节
sql语句:CREATE CONTROLFILE REUSE SET DATABASE "ORA11GR2" RESETLOGS ARCHIVELOG
最大日志文件 16
MAXLOGMEMBERS 3
最大数据文件数 100
最大实例数 8
MAXLOGHISTORY 292
日志文件
组 1 '/u01/app/oracle/oradata/ORA11GR2/redo01.log' 大小 50 M ,
组 2 '/u01/app/oracle/oradata/ORA11GR2/redo02.log' 大小 50 M ,
组 3 '/u01/app/oracle/oradata/ORA11GR2/redo03.log' 大小 50 M
数据文件
'/u01/app/oracle/oradata/ORA11GR2/system01.dbf'
字符集 AL32UTF8
内存脚本的内容:
{
将临时文件 1 的新名称设置为
“/u01/app/oracle/oradata/ORA11GR2/temp01.dbf”;
切换克隆临时文件全部;
目录克隆数据文件复制“/u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf”,
“/u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf”,
“/u01/app/oracle/oradata/ORA11GR2/users01.dbf”,
“/u01/app/oracle/oradata/ORA11GR2/example01.dbf”;
切换所有克隆数据文件;
}
执行内存脚本
执行命令:SET NEWNAME
在控制文件中将临时文件 1 重命名为 /u01/app/oracle/oradata/ORA11GR2/temp01.dbf
编目数据文件副本
数据文件复制文件名=/u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf RECID=1 STAMP=811529493
编目数据文件副本
数据文件复制文件名=/u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf RECID=2 STAMP=811529493
编目数据文件副本
数据文件复制文件名=/u01/app/oracle/oradata/ORA11GR2/users01.dbf RECID=3 STAMP=811529493
编目数据文件副本
数据文件复制文件名=/u01/app/oracle/oradata/ORA11GR2/example01.dbf RECID=4 STAMP=811529493
数据文件 2 已切换到数据文件副本
输入数据文件副本 RECID=1 STAMP=811529493 文件名=/u01/app/oracle/oradata/ORA11GR2/sysaux01.dbf
数据文件 3 已切换到数据文件副本
输入数据文件副本 RECID=2 STAMP=811529493 文件名=/u01/app/oracle/oradata/ORA11GR2/undotbs01.dbf
数据文件 4 已切换到数据文件副本
输入数据文件副本RECID=3 STAMP=811529493 文件名=/u01/app/oracle/oradata/ORA11GR2/users01.dbf
数据文件 5 已切换到数据文件副本
输入数据文件副本RECID=4 STAMP=811529493 文件名=/u01/app/oracle/oradata/ORA11GR2/example01.dbf
内存脚本的内容:
{
更改克隆数据库打开重置日志;
}
执行内存脚本
数据库已打开
于 2013 年 3 月 31 日完成复制 Db
RMAN>
2.使用EM复制数据库