通过RMAN 异机克隆数据库

使用RMAN进行复制时,RMAN会连接目标数据库和辅助实例,如果使用了catalog备份的还会连接恢复目录。RMAN连接了目标数据库才能够访问其控制文件中记录的备份的详细信息,连接辅助实例才能够在辅助实例上分配一个或多个通道进程,9i开始会自动创建通道; 要连接辅助实例就先要启动辅助实例,就需要一个pfile参数文件,由目标数据库creata pfile from spfile得来,由于没有控制文件,所以只能启动到nomount阶段,RMAN会生成到这个辅助实例的sysdba连接。连接了目标库和辅助实例后,就可以使用duplicate命令,复制数据库,复制过程一般分为以下阶段:1,rman确定备份的状态和位置2,rman在辅助实例上分配辅助通道,3,在辅助实例上还原数据文件,4,构建新的控制文件 5,rman还原归档日志,并进行恢复 6,rman重置辅助库的DBID(唯一标识一个数据库),并以open resetlogs打开数据库。

平台准备:
      OracleLinux  +  Oracle 11G
    目标库:
       ORACLE_HOME=/uoracle/app
       ORACLE_BASE=/orabase
       ORACLE_SID= orcl
       IP : 192.168.0.45
    辅助库:
       ORACLE_HOME=/uoracle/app
       ORACLE_BASE=/orabase
       ORACLE_SID=orcl
       IP : 192.168.0.46

操作步骤(异机和同机复制,步骤基本一样):
       1:运行辅助实例的服务器需要先安装好相应的oracle客户端,且ORACLE_BASE 和ORACLE_HOME目录和目标库相同;
       2:构建辅助数据库目录结构;
       3:创建参数文件,复制过来,并进行相应修改;
       4:创建辅助实例口令文件,orapwd
       5:配置监听及tnsname文件
       6:目标库进行备份,并拷贝到辅助实例服务其上,或同NFS挂载过去;
       7:使用pfile启动辅助实例到nomount,并退出会话;
       8:duplicate命令复制数据库;
       9: 创建spfile

具体实现:
1:安装客户端
 2:构建辅助数据库目录结构(根据参数文件中涉及到的目录来构建辅助库的目录结构)

[[email protected] ~]$ echo $ORACLE_BASE
/orabase
[[email protected] ~]$ cd /orabase
[[email protected] orabase]$ mkdir ./oradata/orcl -p
[[email protected] orabase]$mkdir ./fast_recovery_area/orcl -p # 重新构建控制文件,存放控制文件
[[email protected] orabase]$ pwd
/orabase
[[email protected] orabase]$ mkdir ./admin/orcl -p
[[email protected] orabase]$ cd ./admin/orcl/
[[email protected] orcl]$ mkdir {a,b,c,d,u}dump
[[email protected] orcl]$ mkdir pfile

3:创建参数文件,复制过来,并进行相应修改
  3.1: 目标库上创建pfile,并拷贝到辅助库上 ?/dbs 目录下(必须是$ORACLE_HOME/dbs 目录下,否则识别不到)
           SQL> create pfile=‘/tmp/initorcl.ora‘ from spfile;
           SQL> scp  /tmp/initorcl.ora  192.168.0.46:/oracle/home/dbs 
  3.2: 对参数文件进行相应修改
         由于这里是进行异机复制,目录结构及实例名都一样,所以没有进行修改
  3.3: 使用pfile启动数据库到nomount 状态,进行测试,并创建spfile
                     
SQL> startup pfile=‘/uoracle/app/dbs/initorcl.ora‘>ORACLE instance started.
Total System Global Area 1.0055E+10 bytes
Fixed Size                  2237008 bytes
Variable Size            3154120112 bytes
Database Buffers         6878658560 bytes
Redo Buffers               19767296 bytes
Database mounted.
Database opened.
SQL> create spfile from pfile;
File created.

4:为辅助实例创建口令文件,密码与源库一致
[[email protected] bin]$ pwd
/uoracle/app/bin
[[email protected] bin]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=admin123;
[[email protected] bin]$ 
[[email protected] bin]$ ls /uoracle/app/dbs/orapworcl 
/uoracle/app/dbs/orapworcl


5:配置监听及tnsname文件

源库上:
[[email protected] ~]# cat /uoracle/app/network/admin/listener.ora 
# listener.ora Network Configuration File: /uoracle/app/network/admin/listener.ora
# Generated by Oracle configuration tools.

orcl =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.45)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /orabase

[[email protected] ~]# cat /uoracle/app/network/admin/tnsnames.ora 
# tnsnames.ora Network Configuration File: /uoracle/app/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.0.45)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

AUXORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.46)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

辅助库上:
TARGETORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.45)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.78)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

6:目标库进行备份,并拷贝到辅助实例服务其上,或同NFS挂载过去;  
RMAN> RUN {
2>  allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup database format ‘/backup/orcl_%U_%T‘ skip inaccessible filesperset 5 tag orcl_bak;
5> sql ‘alter system archive log current‘;
6> backup archivelog all delete input  format ‘/backup/arch_%U_%T‘  skip inaccessible filesperset 5;
7> backup current controlfile format ‘/backup/ctl_%U_%T‘  tag=‘ctl_BAK‘;
8> backup  spfile format ‘/backup/orcl_spfile_%U_%T‘ tag=‘spfile‘;
9> release channel c2;
10> release channel c1;
11> }
注: 因为这里使用的是nocatalog备份方式,备份信息会写入到控制文件中,所以,控制文件要单独备份

目标库上:
                     
[[email protected] ~]# cat /etc/exports 
/backup  192.168.0.78(rw,async)
[[email protected] ~]# /etc/init.d/nfs start
Starting NFS services: [  OK  ]
Starting NFS mountd: [  OK  ]
Stopping RPC idmapd: [  OK  ]
Starting RPC idmapd: [  OK  ]
Starting NFS daemon: [  OK  ]
辅助库上:
# 建立与目标库上相同的目录
mkdir   /backup
chown oracle.oinstall   /backup  -R
chmod 775   /backup
showmount -e 192.168.0.45
mount -t nfs 192.168.0.45:/backup   /bakup

7:使用pfile启动辅助实例到nomount,并退出会话;
SQL> startup nomount pfile=‘/uoracle/app/dbs/initorcl.ora‘
ORACLE instance started.
Total System Global Area 1.0055E+10 bytes
Fixed Size                  2237008 bytes
Variable Size            3154120112 bytes
Database Buffers         6878658560 bytes
Redo Buffers               19767296 bytes
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

8:duplicate命令复制数据库;
目标库上:
[[email protected] ~]$ rman target sys/[email protected] auxiliary sys/[email protected];
Recovery Manager: Release 10.2.0.1.0 - Production on Sun Jul 18 20:41:19 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: ORCL (DBID=1248423599)
connected to auxiliary database: ORCL (not mounted)
RMAN> duplicate target database to ORCL nofilenamecheck
logfile
‘/orabase/oradata/orcl/redo01.log‘ size 100M,
‘/orabase/oradata/orcl/redo02.log‘ size 100M,
‘/orabase/oradata/orcl/redo03.log‘ size 100M;

9:创建spfile,并重新启动
create spfile from pfile;
shutdown immeidate;
startup
验证数据库是否复制成功

时间: 2024-10-14 20:42:21

通过RMAN 异机克隆数据库的相关文章

使用rman异机复制数据库

源端数据库:192.168.1.210 sid:orcl hostname:Nagiostest ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/11.2 目标数据库:192.168.1.211 sid:orcl hostname:OEL6 ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 这里是相同实例名的复制,如果实例

基于RMAN从活动数据库异机克隆(rman duplicate from active DB)

Oracle 11g RMAN能够实现基于活动数据库进行异机克隆,从而省去需要先备份再ftp到辅助服务器的过程.这一切可以全部交给Oracle来搞定.在克隆期间,Oracle会读取Target DB的所有数据结构,无须人为的干预(不同的磁盘系统,文件路径与文件名要指定转换方式).尽管如此,对于生产环境数据库在整个克隆期间性能会下降,其次在Target Server与Auxiliary Server中会产生较大的网络流量.如果这些可以接受的话,从活动数据库进行异机克隆是一个不错的选择.本文首先描述

RMAN异机恢复实验---转载

一.RMAN异机恢复实验 2011年3月23日00:44 1.环境介绍: 主机1: 操作系统 REDHAT5.5 IP地址 172.16.1.120 主机名 sigle 数据库版本 10.2.0.4 数据库名 orcl DBID 1305151947 catalog win_yjr catalog用户 sigle/sigle 主机2: 操作系统 REDHAT5.5 IP地址 172.16.1.121 主机名 clone_sigle 数据库版本 10.2.0.4     2.本次恢复实验目的: 主

rman异机恢复

rman异机恢复 注意事项: 1.源数据库与目标数据库的目录结构相同 2.目标数据库只需要安装ORACLE软件(但是参数文件中指定的目录要创建) 3.要将源数据库的数据文件,参数文件,控制文件,密码文件,归档日志统统备份 1.源数据库备份 参数文件与控制文件自动备份 CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/r

Oracle 单实例 迁移到 RAC 实例 -- 使用RMAN 异机恢复

Oracle 官网有关单实例迁移到RAC的一个步骤说明: How to Convert 10g Single-Instance database to 10g RAC using Manual Conversion procedure [ID 747457.1] http://blog.csdn.net/tianlesoftware/archive/2010/12/09/6065903.aspx   RMAN 备份异机恢复 并创建新DBID http://blog.csdn.net/tianle

RMAN异机还原遭遇ORA-19698错误案例

实验环境: 操作系统    :Oracle Linux Server release 5.7 64 bit 数据库版本:Oracle Database 10g Release 10.2.0.4.0 - 64bit Production 案例说明: 为了测试.验证备份的有效性,需要将服务器A上的数据库的备份集还原到服务器B上,服务器B上已经创建了相同名称的ORACLE_SID和DB Name,对应数据文件目录环境完全一致 Step 1: startup nomount Step 2:  resto

window Oracle 10g RMAN异机异目录恢复

1.实验环境简介                                  1.1  SOA原数据库                                                                                                                                                           数据库名        COMSOA 实例名          COMSOA DB

Linux平台下RMAN异机恢复总结

下面总结.整理一下RMAN异机恢复这方面的知识点,这篇笔记在个人笔记里面躺了几年了,直到最近偶然被翻看到,遂整理.总结一下.如下所示,个人将整个RMAN异机恢复分为准备工作和操作步骤两大部分.当然,准备工作里面,有些步骤不是必须的,可以跳过或忽略的.这个取决于你的实际环境和你对RMAN异机恢复的熟悉程度. 准备工作 1:了解一下目标服务器与源服务器的操作系统版本信息 需要对比一下目标服务器与源服务器的操作系统版本是否一致,具体来说,操作系统版本信息.内核信息(例如Oracle Linux是否使用

Oracle12c RAC RMAN异机恢复

######################################################## #编辑pfile文件initspdb.ora vi /oracle/app/oracle/product/12.2.0/db_1/dbs/initspdb.ora audit_file_dest='/oracle/app/oracle/admin/spdb/adump' audit_trail='db' compatible='12.2.0' control_files='/orac