首页  >  文章  >  数据库  >  Oracle 使用 RMAN 复制数据库

Oracle 使用 RMAN 复制数据库

WBOY
WBOY原创
2016-06-07 15:51:121346浏览

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。

 

具体实验:

1.1. 复制数据库

1.1.1. 创建源库备份

[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.1.2。 目标服务器上复制数据库

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复制数据库

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn