RMAN 复制数据库

Posted by Vincent on July 12, 2008

---------------------------------

实验环境:windows + oracle 10.2.0.1.0

原数据库:dgtest[归档模式] 服务名:primary
复制数据库:dgtest 服务名:standby (两个实例名一样,为了做DG)
---------------------------------

参考文章:http://blog.csdn.net/NinGoo/archive/2005/03/28/332324.aspx
http://yangtingkun.itpub.net/index.php

1. 在目标数据库上创建新实例
建立目标数据库所需的目录结构,包括udump、bdump、cdump、adump目录。

创建参数文件inittest.ini(可使用原库的pfile进行修改),主要参数如下:
DB_FILE_NAME_CONVERT=('E:\oracle\oradata\ning','E:\oracle\oradata\test')
LOG_FILE_NAME_CONVERT=('E:\oracle\oradata\ning','E:\oracle\oradata\test')
--如果实例名不变,不需要name convert

使用oradim创建新的instance

c:\>oradim -new -sid dgtest
例程已创建。

使用orapwd创建password文件
c:\>orapwd file=E:\oracle\product\10.2.0.1\db_1\database\PWDtest.ora password=test entries=5

设置网络配置文件tnsnames.ora和listener.ora,并启动监听,测试。

c:\>sqlplus /nolog

SQL> conn sys@test as sysdba
请输入口令:
已连接到空闲例程。

启动到 nomount状态
startup nomount pfile='c:\oracle\p.ora';

否则在源数据库RMAN连接的时候会遇到:
RMAN-03002: Duplicate Db 命令 (在 12/07/2008 02:52:39 上) 失败
RMAN-06403: 无法获得完全授权的会话
RMAN-04006: 来自辅助数据库的错误: ORA-01034: ORACLE 不可

--记得创建好 spfile

2.使用rman备份原库
RMAN> connect target /

RMAN> run
2> {
3> allocate channel c1 device type disk format 'c:/oracle/oraback/%U';
4> backup database plus archivelog; -- delete all input;
5> }

将备份拷贝之目标库对应位置

3.使用rman复制数据库

C:\WINDOWS>rman target sys/oracle@primary AUXILIARY sys/oracle@standby
恢复管理器: Release 10.2.0.1.0 - Production on 星期六 7月 12 17:24:14 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到目标数据库: DGTEST (DBID=3616354273)
已连接到辅助数据库: DGTEST (未装载)

RMAN> DUPLICATE TARGET DATABASE TO 'dgtest' nofilenamecheck; (如果两库文件路径相同需要加nofilenamecheck 参数
--在执行该命令时记得将目标库上的连接关闭
......
... ...
内存脚本的内容:
{
Alter clone database open resetlogs;
}
正在执行内存脚本

数据库已打开
完成 Duplicate Db 于 12-7月 -08

4.检查复制库的状态
C:\WINDOWS>sqlplus system/oracle@standby

--成功

-- EOF --


This work is licensed under a CC A-S 4.0 International License.