ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Rman duplicate数据库远程不同路径复制

Rman duplicate数据库远程不同路径复制

原创 Linux操作系统 作者:qq19398962 时间:2009-10-26 10:25:44 0 删除 编辑

Rman duplicate数据库远程不同路径复制

一、实验环境:

1.       虚拟机:VMware-workstation-5.5.1-19175

2.       数据库:oracle10g R2

3.       操作系统:windows 2003 Enterprise 32bit

4.       数据库环境:主数据库—ORCL、复制数据库----TEST

5.       网络环境:主数据库IP192.168.1.202、复制数据库IP192.168.1.203

 

 

二、整体框图:

三、创建并启动辅助(复制)数据库实例

2.1 创建口令文件

cmd下输入创建密码文件的命令如下:

 

2.2 创建辅助数据库实例

创建一个test的实例名,命令如下:

 

2.3 配置监听程序

在这里我们需要配置的监听有两个分别是原数据库和复制数据库的监听。

TEST实例的监听

Listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

     (SID_DESC =

      (GLOBAL_DBNAME = test)

      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)

      (SID_NAME = test))

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.203)(PORT = 1521))

     

    )

  )

 

 

Tnsname.ora

orcl =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = orcl))

  )

 

test =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.203)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = test))

  )

 

ORCL实例监听配置:

Listener.ora

SID_LIST_LISTENER =

  (SID_LIST =

     (SID_DESC =

      (GLOBAL_DBNAME = test)

      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)

      (SID_NAME = test))

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))

     

    )

  )

 

 

Tnsname.ora

orcl =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.202)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = orcl))

  )

 

test =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.203)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = test))

  )

 

注意:配置完监听记得重新启动监听的服务进程,并使用lsnrctl stoplsnrctl start来重新启动监听。

 

2.4创建辅助(复制)数据库的相关目录

1.创建告警日志目录

2.创建oradata数据目录

3.创建一个rmanbak的目录(路径和你在原数据库上的路径一致)

 

2.5创建辅助(复制)数据库的参数文件

创建一个文件形式的参数文件,命令如下:

拷贝这个参数文件到复制数据库上。

修改c:\test2.ora文件里面的相关参数:

需要修改的参数如下:

Adumpbdumpcdumpudumpddumpdb_name和控制文件路径。

还需要添加两个参数:

db_file_name_convert=(¨c:\oracle\product\10.2.0\oradata\orcl¨,¨E:\oracle\product\10.2.0\oradata\test2¨)

log_file_name_convert=(¨c:\oracle\product\10.2.0\oradata\orcl¨,¨E:\oracle\product\10.2.0\oradata\test2¨)

解释:上面两个参数括号里面的第一个参数代表原数据库的数据目录,第二个参数代表复制数据库的数据目录(即复制的目标地址)。

注意:一定不要去修改db_block_size的大小。

 

完成以上步骤后我们可以开始创建我们真正想要的参数文件:

SQL>create spfile=’E:\oracle\product\10.2.0\db_1\database\spfiletest.ora’ from pfile=’c:\abc.ora’

 

2.6启动辅助实例

打开CMD窗口:启动辅助实例到nomount状态下。

 

 

四、复制数据库

3.1开始原数据库到归档模式

 

注意:如果你不打开归档模式等下在复制的时候会提示找不到相应的数据文件。

 

3.2使用RMAN完全备份原数据库

打开CMD窗口,输入如下命令:

Set oracle_sid=orcl

Rman target  sys/abc.123@orcl  nocatalog

输入如下命令进行完全备份:

全库备份(包括数据库,控制文件,归档日志)

 RMAN> run {

2> backup full database format 'e:\rmanbak\full_%U.bak';

3> backup archivelog all format 'e:\rmanback\arc_%U.bak' ;

4> copy current controlfile to ‘e:\rmanbak\control_bak.ctl';

5> }

 

我们可以使用RMAN>list  backup;来查看我们的备份详细信息。

备份完如下现实:

 

NOTE:复制这个备份文件到复制数据库的相同目录下。

 

3.3复制数据库到辅助数据库上

打开CMD输入如下命令:

Set oracle_sid=orcl  -----其实这一步也可以不做,因为系统默认的sid就是我们的第一个数据库。当然你也可以去注册表里面修改它。

Rman target  sys/abc.123@orcl  auxiliary  sys/abc.123@test

 

rman窗口中输入如下命令进行复制:

Run{

Allocate   auxiliary  channel  d1  type  disk;

Duplicate target  database  to  “test”;  -------这里的复制目标数据库一定要用双引号。

Release  channel  d1;

}

 

出现错误:

原因是:由于我这个备份是比较早,一些SCN好比较老。故我做如下修改做不完全恢复。

Run{

Allocate   auxiliary  channel  d1  type  disk;

Set until  scn 577827;

Duplicate target  database  to  “test”;

Release  channel  d1;

}

这样做就可以了。

 

3.4启动辅助(复制)数据库

打开cmd窗口:

Set  oracle_sid=test2

Sqlplus /nolog

Conn sys/abc.123 as sysdba

Startup force;

 

 

五、总结

我们在前面2.5提到的两个参数主要是用来指定我们要复制的数据库的数据文件的存放地址。

db_file_name_convert=(¨c:\oracle\product\10.2.0\oradata\orcl¨,¨c:\oracle\product\10.2.0\oradata\test2¨)

log_file_name_convert=(¨c:\oracle\product\10.2.0\oradata\orcl¨,¨c:\oracle\product\10.2.0\oradata\test2¨)

当然如果我们想到后面才定义数据文件的地址的话也是可以的:

Rman target  sys/abc.123@orcl  auxiliary  sys/abc.123@test2

run{
allocate auxiliary channel t1 type disk;
set newname for datafile 1 to 'D:\ORADATA\CLONE\SYSTEM01.DBF';
set newname for datafile 2 to 'D:\ORADATA\CLONE\UNDOTBS01.DBF';
set newname for datafile 3 to 'D:\ORADATA\CLONE\TOOLS01.DBF';
DUPLICATE TARGET DATABASE TO 'CLONE'
LOGFILE
GROUP 1 ('D:\ORADATA\CLONE\REDO01.DBF') SIZE 5M,
GROUP 2 ('D:\ORADATA\CLONE\REDO02.DBF') SIZE 5M,
GROUP 3 ('D:\ORADATA\CLONE\REDO03.DBF') SIZE 5M;
}

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13062352/viewspace-617399/,如需转载,请注明出处,否则将追究法律责任。

下一篇: database link
请登录后发表评论 登录
全部评论

注册时间:2009-08-08

  • 博文量
    22
  • 访问量
    31202