ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 利用RMAN迁移表空间碰到的问题(一)

利用RMAN迁移表空间碰到的问题(一)

原创 Linux操作系统 作者:zhengbao_jun 时间:2009-04-23 16:39:03 0 删除 编辑

尝试10.2的新特性RMANTRANSPORT TABLESPACE进行表空间的迁移过程,其中碰到了不少问题,简单总结一下。

这一篇介绍TRANSPORT TABLESPACE命令碰到的RMAN-5001错误。

 

 

在执行TRANSPORT TABLESPACE命令时,出现了这个错误:

RMAN> RUN
_S o]zM*Q,Am4F$T2355072> {
PK#Ki6V2355073> ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT '/data1/backup/%U';ITPUB个人空间2[^:_5AeBuW4P
4> TRANSPORT TABLESPACE "TEST" DATAPUMP DIRECTORY D_OUTPUTITPUB个人空间gMe+wjl.R:W
5> DUMP FILE 'test_meta.dp' EXPORT LOG 'test_meta.log' IMPORT SCRIPT. 'test_import.src'ITPUB个人空间/Y u |qy}8Jj
6> TABLESPACE DESTINATION '/data1/backup';
o @{~Dm+f1yy2355077> }

分配的通道: C1ITPUB个人空间)s(Fdlp4}:`
通道C1: sid=289实例=testrac2 devtype=DISK

RMAN-05026:警告:假定以下表空间集适用于指定的时间点

表空间列表要求具有UNDO
a+e RK q'q5H235507
表空间SYSTEM
*F(Bf3\O/DL235507
表空间UNDOTBS1
O)A J$mA?235507
表空间UNDOTBS2

使用SID='mxak'创建自动实例

供自动实例使用的初始化参数:
9g"t"MI$a235507db_name=TESTRACITPUB个人空间 Qu/i;b gUX
compatible=10.2.0.1.0ITPUB个人空间OyoH(c j%n
db_block_size=8192
4JvA#EK6vw235507db_files=200ITPUB个人空间3g)w9?:Mn0`G.f
db_unique_name=tspitr_TESTRAC_mxakITPUB个人空间:[%H~O.T!d1ux
large_pool_size=1MITPUB个人空间tJQ5H-c3Q;r!y7Lw)]
shared_pool_size=110M
JjV/?$q-U3c235507#No auxiliary parameter file usedITPUB个人空间K;[,VYm
#No auxiliary destination in useITPUB个人空间+C/C8T8Nip6BM
#Use default controlfile

ITPUB个人空间 f9SjYa%E
启动自动实例TESTRAC

Oracle实例已启动

系统全局区域总计     205520896字节

Fixed Size                     2028912字节
@,hCu _B7h5^235507Variable Size                146803344
字节
y A H-O3A$W#[.\nI235507Database Buffers              50331648
字节ITPUB个人空间 w3JE9W3}@~
Redo Buffers                   6356992
字节
0~^-x-F l235507
自动实例已创建

删除自动实例ITPUB个人空间3B2KS%{(n5P'm
关闭自动实例
O Ykc({235507Oracle
实例已关闭ITPUB个人空间 ~'Uy$[6VZ o*_]
自动实例已删除
R Go ^2R)gm235507
释放的通道: C1
&yG[6|9i[:Eo9d)r235507MAN-00571: ===========================================================
T"I7Q2l0u235507RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
/Gy(C c,Y!AM A4|235507RMAN-00571: ===========================================================
C'qy2c m6V ?)[3W235507RMAN-03002: tranport tablespace
命令(01/09/2009 01:01:27)失败
{'v Zi2S+N5}2tM235507RMAN-20202:
在恢复目录中未找到表空间ITPUB个人空间.WXIz&H6^
RMAN-06019:
无法转换表空间名称"TEST"ITPUB个人空间D_!gjATyb XTi,Q
RMAN-05517:
临时文件+DISK/testrac/tempfile/temp.265.618591239与目标数据库所使用的文件冲突
o1Q Ck7N lEJ8sh235507RMAN-05001:
辅助文件名+DISK/testrac/datafile/sysaux.264.618591225与正由目标数据库使用的文件发生冲突
J1d$CV%E9g"\235507RMAN-05001:
辅助文件名+DISK/testrac/datafile/undotbs2.266.618591249与正由目标数据库使用的文件发生冲突
xRVxZ:}235507RMAN-05001:
辅助文件名+DISK/testrac/datafile/undotbs1.263.618591197与正由目标数据库使用的文件发生冲突
J?.fe+Z0o}6st235507RMAN-05001:
辅助文件名+DISK/testrac/datafile/system.262.618591167与正由目标数据库使用的文件发生冲突

RMAN> exit

ITPUB个人空间!|0Y9R&_)i2o-e
恢复管理器完成。

其实造成这个错误的原因很简单,就是没有设置AUXILIARY DESTINATION

由于Oracle会创建一个辅助实例,并在这个实例上进行数据库的及时点恢复过程,因此恢复过程会还原数据库所有数据文件,然后利用归档将数据库恢复到某个时间点。

如果没有设置AUXILIARY DESTINATION参数,且不通过其他手段设置辅助实例数据文件的保存位置的话,那么辅助实例选择的数据文件位置和源数据库一致,这也就造成了上面的错误。

最简单的解决方法,就是设置AUXILIARY DESTINATION,设置了这个参数后,除了迁移表空间对应的数据文件外(这些文件的保存位置由TABLESPACE DESTINATION参数确定),其他的数据文件、控制文件,以及参数文件都保存在AUXILIARY DESTINATION设置的目录中。

除了设置AUXILIARY DESTINATION这个方法外,还可以利用SET NEWNAME来设置每个数据文件的位置,不过这种方法相对要麻烦一些,需要具体设置每一个需要处理的数据文件。还有一种类似的方法,通过CONFIGURE AUXNAME FOR依次设置每个数据文件的新位置。这两种方法都比较麻烦,需要设置每个文件,比较容易出问题,不过好处是可以定制每个文件的位置,对于不希望将所有文件保存在一个目录下的情况,可以使用这两种方法。

除此之外,还有一种方法,就是通过设置辅助实例启动所需的初始化参数:SET AUXILIARY INSTANCE PARAMETER FILE。可以手工编辑一个初始化参数,并设置合适的LOG_FILE_NAME_CONVERTDB_FILE_NAME_CONVERT参数。这种方法其实也不简单,不过需要对辅助实例进行定制的情况,可以考虑这种方法。

 

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

请登录后发表评论 登录
全部评论

注册时间:2008-08-08

  • 博文量
    209
  • 访问量
    866697