一.环境介绍
1. 主数据库环境
- 生产库称为master
- 操作系统版本 : redhat5 x64
- 数据库版本 : Oracle 11.2.0.3 x64
- 数据库名 : dg1
- 数据库SID : dg1
- db_unique_name: dg1
- IP:192.168.58.5
hostname:oradg1
2. 备库环境
- 备用库称为secondary
- 操作系统版本 : redhat5 x64
- 数据库版本 : Oracle 11.2.0.3 x64
- 数据库名 : dg1
- 数据库SID : dg1
- db_unique_name: dg1
- IP:192.168.58.6
- hostname:oradg2
3.前提条件
master: 1.安装oracle数据库软件,2.创建数据库,3.安装监听,4.开启归档模式
secondary:只安装oracle数据库软件,不用创建数据库也不安装监听
安装数据库参考考:静默安装oracle 11g r2
离线参考:
离线RMAN克隆
都是爷写的
二. 开始配置
1. 在secondary 创建pfile 参数文件:
dg1是实例名
[oracle@qs-dmm-rh2 dbs]$ vim /u01/app/oracle/product/11.2.0/db_1/dbs/initdg1.ora
db_name=dg1
只有一行.
2. 在secondary库上创建口令文件
注意修改成自己的密码
[oracle@qs-dmm-rh2 admin]$ orapwd file=?/dbs/orapwdg1 password=oracle
3. 在secondary库创建相关的目录结构:
路径一定要和生产库的一样,不然要做各种修改很麻烦。参考这个文件就知道目录了$ORACLE_HOME/dbs/initdg1.ora,dg1是实例名
[oracle@qs-dmm-rh2 trace]$ mkdir -p /u01/app/oracle/oradata/dg1
4. 在master 和secondary 都配置Listener.ora 、 tnsnames.ora
secondary因为没有创建数据库和安装监听,并没有这两个文件,故要新建。
1.分别在master,secondary配置lisener监听文件,secondary需要新建
下面master与secondary配置HOST不同,注意修改!
master:HOST = oradg1;secondary:HOST = oradg2
$ 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. 分别在master,secondary配置tnsname.ora文件,secondary需要新建
说明:dg1是服务名,oradg1是master主机。(以下master,secondary内容完全一样)
$ 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. 启动secondary 到nomout 状态:
[oracle@qs-dmm-rh2 admin]$
sqlplus /nolog
SQL> conn / as sysdba;
SQL> startup nomount pfile=?/dbs/initdg1.ora
三.开始克隆
说明:如果master和secondary库的目录结构相同,记得加上nofilenamecheck参数,不然会报如下错误:
如果目录不同,在pfile里加如下2个参数进行转换:具体怎么转换童鞋们查找资料.
db_file_name_convert
log_file_name_convert.
a.此时secondary要开启监听,不然会报没有监听的错误
su -oracle
lsnrctl start
b.连通两个库,开始克隆
[oracle@qs-dmm-rh2 dbs]$ rman target sys/oracle@master auxiliary sys/oracle@secondary
RMAN> duplicate target database to dg1 from active database nofilenamecheck;
Finished Duplicate Db at 06-SEP-15 看到这个代表克隆完成啦
四.测试
克隆完已经可以用PLSQL打开了。
因为已经自动nomount,mount,open了