oracle RMAN克隆数据库

本文为离线方式克隆

一.环境介绍

1. 主数据库环境

  • 操作系统版本 : redhat5 x64
  • 数据库版本 : Oracle 11.2.0.3 x64
  • 数据库名 : dg1
  • 数据库SID : dg1
  • db_unique_name: dg1
  • IP:192.168.58.5
  • hostname:oradg1

2. 备库环境

  • 操作系统版本 : redhat5 x64
  • 数据库版本 : Oracle 11.2.0.3 x64 (只安装oracle数据库软件,no netca dbca)
  • 数据库名 : dg1
  • 数据库SID : dg1
  • db_unique_name: dg1
  • IP:192.168.58.6
  • hostname:oradg2

二.主数据库环境准备

1. 目标库环境重新创建口令文件

su - oracle

orapwd file='/u01/app/oracle/product/11.2.0/db_1/dbs/orapwdg1' password=oracle entries=10 force=y

2. lisener监听文件

$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dg1)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = dg1)
    )
  )
ADR_BASE_LISTENER = /u01/app

4. tnsname.ora

说明:dg1是主库的服务名
$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

TARGETORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dg1)
    )
  )
master =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))
      )
      (CONNECT_DATA =
        (SERVICE_NAME = dg1)
      )
    )
secondary =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dg1)
    )
  )

5. 检查数据库模式:

   sqlplus /nolog
   conn /as sysdba
   archive log list

(查看数据库是否处于归档模式中)若为非归档,则修改数据库归档模式。

   startup mount
   alter database archivelog
   alter database open

如果数据库打开了,这时要关闭才行:
shutdown immediate
改为归档模式后,再查看:

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     8
Next log sequence to archive   11
Current log sequence           11

为什么要修改为归档模式呢,因为会丢失数据的。不归档那就只有online redo的数据,没有archive redo的数据。

6. rman备份主库

创建rman备份目录
$ mkdir -p /u01/app/myrman
连接到target准备备份
$ rman target /
开始备份:
RMAN> backup format '/u01/app/myrman/fulldb_%d_%U' database include current controlfile plus archivelog delete input;
等待时间可能比较久,成功后会有:完成 backup 于 05-9月 -15
RMAN> quit
之后会将备份拷贝到oradg2服务器上。

三.目标库配置(要恢复的服务器)

1. 新建配置lisener监听文件

$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = dg1)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = dg1)
    )
  )
ADR_BASE_LISTENER = /u01/app

2. 新建tnsname.ora文件

说明:dg1是服务名,oradg1是master主机。
$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

TARGETORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = dg1)
    )
  )
master =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oradg1)(PORT = 1521))
      )
      (CONNECT_DATA =
        (SERVICE_NAME = dg1)
      )
    )
secondary =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oradg2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dg1)
    )
  )

测试服务名连通性:
tnsping orcl

3. 创建11g数据库基本目录

这里的具体路径,可能每个人的都不同不要照抄,要参考:$ORACLE_HOME/dbs/init+实例名.ora
我的文件是:$ORACLE_HOME/dbs/initdg1.ora
su - oracle

mkdir -p /u01/app/admin/dg1/{adump,dpdump,pfile,scripts}
mkdir -p /u01/app/oracle/oradata/dg1
mkdir -p /u01/app/fast_recovery_area/dg1/
mkdir -p /u01/app/archivelog

4. 拷贝主库口令文件(也可直接创建一个新的口令文件)

su -oracle

$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/
$ scp oracle@oradg1:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwdg1  $ORACLE_HOME/dbs/

5. 拷贝rman备份

$ scp -r oracle@oradg1:/u01/app/myrman /u01/app/

6. 启动到nomount状态

些时先创建一个文件:

$ echo 'db_name=dg1' > $ORACLE_HOME/dbs/initdg1.ora

启动nomount状态:

 sqlplus /nolog
SQL> conn / as sysdba;
SQL> startup nomount;

四.开始在RMAN duplicate数据库

1. RMAN同进连接主库与备库

$ rman auxiliary /

2. 开始duplicate数据库

RMAN> duplicate target database to dg1 backup location '/u01/app/myrman/' nofilenamecheck;

3. 查看备库状态

说明:duplicate数据库之后,备库只是处于mount状态,查看备库状态。
$ sqlplus / as sysdba
查看备库状态

SQL> select open_mode from v$database;

重启数据库、开启监听,可以看到跟原来的库一样。

五.结束语

些时复制数据已经成功了,可以用PL/SQL去试一下,登录密码跟原来的一样。两台机子的实例最好同名,不然会遇到很大麻烦.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值