oracle复制文件后多一字节,对oracle使用rman duplicate管理复制数据库的一点理解

使用rman duplicate创建复制数据库是非常方便的,但是也有很多的让人容易误解的地方。我在网上也看了很多个别人写的 文章,发现使用的方法都是一样的,但是我使用同样的方法实验时,无论如何都不能成功,看来我的理解能力太差劲了,但是我可以使用其它的方法完成我的实验。

1,当复制数据库为nomout状态时,监听的状态如下:

[oracle@redhat6 tmp]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 30-12月-2010 21:13:39

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=redhat6)(PORT=1521)))

LISTENER 的 STATUS

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

别名                      LISTENER

版本                      TNSLSNR for Linux: Version 10.2.0.5.0 - Production

启动日期                  30-12月-2010 20:18:40

正常运行时间              0 天 0 小时 54 分 59 秒

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          /u01/soft/product/10.2.0/db_1/network/admin/listener.ora

监听程序日志文件          /u01/soft/product/10.2.0/db_1/network/log/listener.log

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=redhat6)(PORT=1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "demo" 包含 1 个例程。

例程 "demo", 状态 BLOCKED, 包含此服务的 1 个处理程序...

服务 "demo_XPT" 包含 1 个例程。

例程 "demo", 状态 BLOCKED, 包含此服务的 1 个处理程序...

命令执行成功

以上是我看到的,当监听的状态为blocked时,我通过rman target sys/sys@gbk auxiliary sys/sys@demo是连接不了复制数据库的,报错如下:

[oracle@redhat6 tmp]$ rman target sys/sys@gbk auxiliary sys/sys@demo

恢复管理器: Release 10.2.0.5.0 - Production on 星期四 12月 30 21:21:24 2010

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

连接到目标数据库: GBK (DBID=1872796505)

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-00554: 内部恢复管理器程序包初始化失败

RMAN-04006: 来自辅助数据库的错误: ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接

但是这样连接却是可以的rman target sys/sys@gbk auxiliary /

[oracle@redhat6 tmp]$ rman target sys/sys@gbk auxiliary /

恢复管理器: Release 10.2.0.5.0 - Production on 星期四 12月 30 21:22:17 2010

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

连接到目标数据库: GBK (DBID=1872796505)

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

RMAN>

2,run命令集执行recover失败后,可以通过resetlogs方式打开数据库。

run命令集执行报错如下:

内存脚本的内容:

{

set until scn  420273;

recover

clone database

delete archivelog

;

}

正在执行内存脚本

正在执行命令: SET until clause

启动 recover 于 30-12月-10

使用通道 ORA_AUX_DISK_1

MAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: Duplicate Db 命令 (在 12/30/2010 20:54:08 上) 失败

RMAN-03015: 在存储的脚本Memory Script中出现错误

RMAN-06136: 来自辅助数据库的 ORACLE 错误: RMAN-20021: 数据库尚未设置

RMAN-06031: 无法转换数据库关键字

应该是介质恢复失败了,需要重新执行介质恢复,但是我直接使用resetlogs命令打开了数据库,甚是不解。

SQL>alter database open resetlogs;

数据库已更改。

3,成功的创建复制数据库的过程是这样的,在备用机器上创建监听,必要的目录、参数文件,然后启动数据库到nomout模式,rman target sys/sys@gbk auxiliary /同时连接两个数据库,在rman模式下执行

run {

set newname for datafile 1 to '/u01/soft/oradata/standby/system01.dbf';

set newname for datafile 2 to '/u01/soft/oradata/standby/undotbs01.dbf';

set newname for datafile 3 to '/u01/soft/oradata/standby/sysaux01.dbf';

set newname for datafile 4 to '/u01/soft/oradata/standby/users01.dbf';

duplicate target database to demo nofilenamecheck logfile

'/u01/soft/oradata/standby/redo01.log' size 50m,

'/u01/soft/oradata/standby/redo02.log' size 50m,

'/u01/soft/oradata/standby/redo03.log' size 50m;

}

恢复显示内容如下:

RMAN> run {

2> set newname for datafile 1 to '/u01/soft/oradata/standby/system01.dbf';

3> set newname for datafile 2 to '/u01/soft/oradata/standby/undotbs01.dbf';

4> set newname for datafile 3 to '/u01/soft/oradata/standby/sysaux01.dbf';

5> set newname for datafile 4 to '/u01/soft/oradata/standby/users01.dbf';

6> duplicate target database to demo nofilenamecheck logfile

7> '/u01/soft/oradata/standby/redo01.log' size 50m,

8> '/u01/soft/oradata/standby/redo02.log' size 50m,

9> '/u01/soft/oradata/standby/redo03.log' size 50m;

10> }

正在执行命令: SET NEWNAME

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

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 Duplicate Db 于 30-12月-10

分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=155 devtype=DISK

内存脚本的内容:

{

set until scn  420273;

set newname for datafile  1 to

"/u01/soft/oradata/standby/system01.dbf";

set newname for datafile  2 to

"/u01/soft/oradata/standby/undotbs01.dbf";

set newname for datafile  3 to

"/u01/soft/oradata/standby/sysaux01.dbf";

set newname for datafile  4 to

"/u01/soft/oradata/standby/users01.dbf";

restore

check readonly

clone database

;

}

正在执行内存脚本

正在执行命令: SET until clause

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 30-12月-10

使用通道 ORA_AUX_DISK_1

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

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

正将数据文件00001还原到/u01/soft/oradata/standby/system01.dbf

正将数据文件00002还原到/u01/soft/oradata/standby/undotbs01.dbf

正将数据文件00003还原到/u01/soft/oradata/standby/sysaux01.dbf

正将数据文件00004还原到/u01/soft/oradata/standby/users01.dbf

通道 ORA_AUX_DISK_1: 正在读取备份片段 /app/oracle/flash_recovery_area/GBK/backupset/2011_01_05/o1_mf_nnndf_TAG20110105T145212_6l858y89_.bkp

通道 ORA_AUX_DISK_1: 已还原备份片段 1

段句柄 = /app/oracle/flash_recovery_area/GBK/backupset/2011_01_05/o1_mf_nnndf_TAG20110105T145212_6l858y89_.bkp 标记 = TAG20110105T145212

通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:35

完成 restore 于 30-12月-10

sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DEMO" RESETLOGS ARCHIVELOG

MAXLOGFILES     16

MAXLOGMEMBERS      3

MAXDATAFILES      100

MAXINSTANCES     8

MAXLOGHISTORY      292

LOGFILE

GROUP  1 '/u01/soft/oradata/standby/redo01.log' SIZE 50 M ,

GROUP  2 '/u01/soft/oradata/standby/redo02.log' SIZE 50 M ,

GROUP  3 '/u01/soft/oradata/standby/redo03.log' SIZE 50 M

DATAFILE

'/u01/soft/oradata/standby/system01.dbf'

CHARACTER SET ZHS16GBK

内存脚本的内容:

{

switch clone datafile all;

}

正在执行内存脚本

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

输入数据文件副本 recid=1 stamp=739141659 文件名=/u01/soft/oradata/standby/undotbs01.dbf

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

输入数据文件副本 recid=2 stamp=739141659 文件名=/u01/soft/oradata/standby/sysaux01.dbf

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

输入数据文件副本 recid=3 stamp=739141659 文件名=/u01/soft/oradata/standby/users01.dbf

内存脚本的内容:

{

set until scn  420273;

recover

clone database

delete archivelog

;

}

正在执行内存脚本

正在执行命令: SET until clause

启动 recover 于 30-12月-10

使用通道 ORA_AUX_DISK_1

正在开始介质的恢复

通道 ORA_AUX_DISK_1: 正在启动到默认目标的存档日志恢复

通道 ORA_AUX_DISK_1: 正在恢复存档日志

存档日志线程 =1 序列=4

通道 ORA_AUX_DISK_1: 正在读取备份片段 /tmp/GBK_4.bak

通道 ORA_AUX_DISK_1: 已还原备份片段 1

段句柄 = /tmp/GBK_4.bak 标记 = TAG20110105T145502

通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:01

存档日志文件名 =/u01/soft/flash_recovery_area/DEMO/archivelog/2010_12_30/o1_mf_1_4_6ks10ws5_.arc 线程 =1 序列 =4

通道 clone_default: 正在删除存档日志

存档日志文件名 =/u01/soft/flash_recovery_area/DEMO/archivelog/2010_12_30/o1_mf_1_4_6ks10ws5_.arc 记录 ID=2 时间戳 =739141660

介质恢复完成, 用时: 00:00:01

完成 recover 于 30-12月-10

内存脚本的内容:

{

shutdown clone;

startup clone nomount ;

}

正在执行内存脚本

数据库已卸装

Oracle 实例已关闭

已连接到辅助数据库 (未启动)

Oracle 实例已启动

系统全局区域总计     209715200 字节

Fixed Size                     1272840 字节

Variable Size                 75498488 字节

Database Buffers             130023424 字节

Redo Buffers                   2920448 字节

sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "DEMO" RESETLOGS ARCHIVELOG

MAXLOGFILES     16

MAXLOGMEMBERS      3

MAXDATAFILES      100

MAXINSTANCES     8

MAXLOGHISTORY      292

LOGFILE

GROUP  1 '/u01/soft/oradata/standby/redo01.log' SIZE 50 M ,

GROUP  2 '/u01/soft/oradata/standby/redo02.log' SIZE 50 M ,

GROUP  3 '/u01/soft/oradata/standby/redo03.log' SIZE 50 M

DATAFILE

'/u01/soft/oradata/standby/system01.dbf'

CHARACTER SET ZHS16GBK

内存脚本的内容:

{

set newname for tempfile  1 to

"/app/oracle/oradata/gbk/temp01.dbf";

switch clone tempfile all;

catalog clone datafilecopy  "/u01/soft/oradata/standby/undotbs01.dbf";

catalog clone datafilecopy  "/u01/soft/oradata/standby/sysaux01.dbf";

catalog clone datafilecopy  "/u01/soft/oradata/standby/users01.dbf";

switch clone datafile all;

}

正在执行内存脚本

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为 /app/oracle/oradata/gbk/temp01.dbf

已将数据文件副本列入目录

数据文件副本 filename=/u01/soft/oradata/standby/undotbs01.dbf recid=1 stamp=739141731

已将数据文件副本列入目录

数据文件副本 filename=/u01/soft/oradata/standby/sysaux01.dbf recid=2 stamp=739141731

已将数据文件副本列入目录

数据文件副本 filename=/u01/soft/oradata/standby/users01.dbf recid=3 stamp=739141731

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

输入数据文件副本 recid=1 stamp=739141731 文件名=/u01/soft/oradata/standby/undotbs01.dbf

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

输入数据文件副本 recid=2 stamp=739141731 文件名=/u01/soft/oradata/standby/sysaux01.dbf

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

输入数据文件副本 recid=3 stamp=739141731 文件名=/u01/soft/oradata/standby/users01.dbf

内存脚本的内容:

{

Alter clone database open resetlogs;

}

正在执行内存脚本

数据库已打开

完成 Duplicate Db 于 30-12月-10

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值