您的位置:首页 > 数据库 > Oracle

oracle RMAN克隆数据库

2015-09-06 12:07 661 查看
本文为离线方式克隆

一.环境介绍

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去试一下,登录密码跟原来的一样。两台机子的实例最好同名,不然会遇到很大麻烦.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle oracle rman