一步一步学DataGuard(25)RMAN备份来创建之实践

目标:通过rman备份,在同一台服务器创建standby,primary数据库名为jssweb,要创建的standby,db_unique_name命名为jssrman,因为是在同一台服务器,所以需要对standby的数据文件和日志文件路径做下重定义,这里我们选择通过初始化参数的形式重定义文件路径。

一、做好准备工作

1、创建standby实例

需要首先通过ORADIM命令创建一个新的OracleService,非windows环境可以跳过这一步。

E:/ora10g>oradim -new -sid jssrman

实例已创建。

E:/ora10g>set oracle_sid=jssrman

E:/ora10g>sqlplus "/ as sysdba"

.............

顺手配置一下监听,修改tnsname.ora之类,此处不做演示。

2、创建standby的初始化参数文件

没必要完全重建,首先根据primary的spfile生成一个pfile出来,然后比着改改就是了。例如:

在primary数据库执行,注意是primary数据库:

SQL> create pfile='E:/ora10g/product/10.2.0/db_1/database/INITjssrman.ora' from spfile;

用任意文本编辑器打开INITjssrman.ora,注意修改相关的化参数,此例中主要修改下列属性:

*.audit_file_dest='e:/ora10g/product/10.2.0/admin/jssrman/adump'

*.background_dump_dest='e:/ora10g/product/10.2.0/admin/jssrman/bdump'

*.control_files='E:/ora10g/oradata/jssrman/control01.ctl','E:/ora10g/oradata/jssrman/control02.ctl','E:/ora10g/oradata/jssrman/control03.ctl'

*.core_dump_dest='e:/ora10g/product/10.2.0/admin/jssrman/cdump'

*.DB_FILE_NAME_CONVERT='oradata/jssweb','oradata/jssrman'

*.db_name='jssweb'

*.DB_UNIQUE_NAME='jssrman'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(jssweb,jsspdg,jssrman)'

*.LOG_ARCHIVE_DEST_1='LOCATION=E:/ora10g/oradata/jssrman/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jssrman'

*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'

*.LOG_FILE_NAME_CONVERT='oradata/jssweb','oradata/jssrman'

*.standby_file_management='AUTO'

*.user_dump_dest='e:/ora10g/product/10.2.0/admin/jssrman/udump'

注意,由于此standby数据库不考虑切换,因为不再配置fal_*,等相关初始化参数。

然后通过该pfile创建standby的spfile,注意是在standby数据库执行:

SQL> create spfile from pfile='E:/ora10g/product/10.2.0/db_1/database/initjssrman.ora';

3、启动standby到nomount状态

SQL> startup nomount

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

.....................

4、创建standby的密码文件

注意保持密码与primary数据库相同,非常重要。

E:/ora10g>orapwd file=e:/ora10g/product/10.2.0/db_1/database/PWDjssrman.ora password=verysafe entries=30

二、进行创建工作

1、连接primary和standby

注意连接standby的时候前面指定auxiliary

E:/ora10g>set oracle_sid=jssweb

E:/ora10g>rman target / auxiliary sys/tfad04@jssrman

恢复管理器: Release 10.2.0.3.0 - Production on 星期三 1月 30 13:53:13 2008

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

已连接到目标数据库: JSSWEB (DBID=3408827880, 未打开)

已连接到辅助数据库: JSSWEB (未装载)

2、创建standby的控制文件。

我们之前都操作过通过sql命令创建standby的控制文件,这次换一换,在rman中创建standby的控制文件。

RMAN> copy current controlfile for standby to 'e:/ora10g/oradata/jssrman/control01.ctl';

启动 backup 于 29-1月 -08

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 启动数据文件副本

复制备用控制文件

输出文件名 = E:/ORA10G/ORADATA/JSSRMAN/CONTROL01.CTL 标记 = TAG20080129T150422 recid = 6 时间戳 = 645289463

通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03

完成 backup 于 29-1月 -08

启动 Control File and SPFILE Autobackup 于 29-1月 -08

段 handle=D:/BACKUP/C-3408827880-20080129-00 comment=NONE

完成 Control File and SPFILE Autobackup 于 29-1月 -08

3、生成standby数据库

由于我们此时的备份集是刚刚的,所以在执行duplicate命令时并不需要指定dorecover子句,而且我们采用了通过db_file_name_convert等初始化参数的方式重定义数据文件和日志文件路径,因为执行的命令就非常简单,就这是我们前面说的,不同路径下创建standby中,最简单的方式:

RMAN> duplicate target database for standby;

启动 Duplicate Db 于 30-1月 -08

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=155 devtype=DISK

内存脚本的内容:

{

   restore clone standby controlfile;

   sql clone 'alter database mount standby database';

}

正在执行内存脚本

启动 restore 于 30-1月 -08

使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 正在复原控制文件

通道 ORA_AUX_DISK_1: 已复制控制文件副本

输出文件名=E:/ORA10G/ORADATA/JSSRMAN/CONTROL01.CTL

输出文件名=E:/ORA10G/ORADATA/JSSRMAN/CONTROL01.CTL

输出文件名=E:/ORA10G/ORADATA/JSSRMAN/CONTROL02.CTL

输出文件名=E:/ORA10G/ORADATA/JSSRMAN/CONTROL03.CTL

完成 restore 于 30-1月 -08

sql 语句: alter database mount standby database

释放的通道: ORA_AUX_DISK_1

内存脚本的内容:

{

   set newname for tempfile  1 to

 "E:/ORA10G/ORADATA/JSSRMAN/TEMP01.DBF";

   switch clone tempfile all;

   set newname for datafile  1 to

 "E:/ORA10G/ORADATA/JSSRMAN/SYSTEM01.DBF";

   set newname for datafile  2 to

 "E:/ORA10G/ORADATA/JSSRMAN/UNDOTBS01.DBF";

   set newname for datafile  3 to

 "E:/ORA10G/ORADATA/JSSRMAN/SYSAUX01.DBF";

   set newname for datafile  4 to

 "E:/ORA10G/ORADATA/JSSRMAN/USERS01.DBF";

   set newname for datafile  5 to

 "E:/ORA10G/ORADATA/JSSRMAN/TBSWEB01.DBF";

   restore

   check readonly

   clone database

   ;

}

正在执行内存脚本

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为 E:/ORA10G/ORADATA/JSSRMAN/TEMP01.DBF

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 30-1月 -08

分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=155 devtype=DISK

通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_AUX_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到E:/ORA10G/ORADATA/JSSRMAN/SYSTEM01.DBF

正将数据文件00002恢复到E:/ORA10G/ORADATA/JSSRMAN/UNDOTBS01.DBF

正将数据文件00003恢复到E:/ORA10G/ORADATA/JSSRMAN/SYSAUX01.DBF

正将数据文件00004恢复到E:/ORA10G/ORADATA/JSSRMAN/USERS01.DBF

正将数据文件00005恢复到E:/ORA10G/ORADATA/JSSRMAN/TBSWEB01.DBF

通道 ORA_AUX_DISK_1: 正在读取备份段 D:/BACKUP/04J6V1SJ_1_1

通道 ORA_AUX_DISK_1: 已恢复备份段 1

段句柄 = D:/BACKUP/04J6V1SJ_1_1 标记 = TAG20080124T111011

通道 ORA_AUX_DISK_1: 恢复完成, 用时: 00:00:57

完成 restore 于 30-1月 -08

内存脚本的内容:

{

   switch clone datafile all;

}

正在执行内存脚本

数据文件 1 已转换成数据文件副本

输入数据文件副本 recid=11 stamp=645372185 文件名=E:/ORA10G/ORADATA/JSSRMAN/SYSTEM01.DBF

数据文件 2 已转换成数据文件副本

输入数据文件副本 recid=12 stamp=645372185 文件名=E:/ORA10G/ORADATA/JSSRMAN/UNDOTBS01.DBF

数据文件 3 已转换成数据文件副本

输入数据文件副本 recid=13 stamp=645372186 文件名=E:/ORA10G/ORADATA/JSSRMAN/SYSAUX01.DBF

数据文件 4 已转换成数据文件副本

输入数据文件副本 recid=14 stamp=645372186 文件名=E:/ORA10G/ORADATA/JSSRMAN/USERS01.DBF

数据文件 5 已转换成数据文件副本

输入数据文件副本 recid=15 stamp=645372186 文件名=E:/ORA10G/ORADATA/JSSRMAN/TBSWEB01.DBF

完成 Duplicate Db 于 30-1月 -08

4、重建standby临时表空间数据文件

提示:本步非必须,如果该standby不会切换为primary并且也不会有查询需求,就不必创建!

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值