ITPub博客

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

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

原创 Linux操作系统 作者:yangtingkun 时间:2009-03-12 21:17:21 0 删除 编辑

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

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

 

 

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

RMAN> RUN
2> {
3> ALLOCATE CHANNEL C1 DEVICE TYPE DISK FORMAT '/data1/backup/%U';
4> TRANSPORT TABLESPACE "TEST" DATAPUMP DIRECTORY D_OUTPUT
5> DUMP FILE 'test_meta.dp' EXPORT LOG 'test_meta.log' IMPORT SCRIPT. 'test_import.src'
6> TABLESPACE DESTINATION '/data1/backup';
7> }

分配的通道: C1
通道 C1: sid=289 实例=testrac2 devtype=DISK

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

表空间列表要求具有 UNDO
表空间 SYSTEM
表空间 UNDOTBS1
表空间 UNDOTBS2

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

供自动实例使用的初始化参数:
db_name=TESTRAC
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_TESTRAC_mxak
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
#No auxiliary destination in use
#Use default controlfile


启动自动实例 TESTRAC

Oracle 实例已启动

系统全局区域总计     205520896 字节

Fixed Size                     2028912 字节
Variable Size                146803344
字节
Database Buffers              50331648
字节
Redo Buffers                   6356992
字节
自动实例已创建

删除自动实例
关闭自动实例
Oracle
实例已关闭
自动实例已删除
释放的通道: C1
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: tranport tablespace
命令 ( 01/09/2009 01:01:27 ) 失败
RMAN-20202:
在恢复目录中未找到表空间
RMAN-06019:
无法转换表空间名称"TEST"
RMAN-05517:
临时文件 +DISK/testrac/tempfile/temp.265.618591239 与目标数据库所使用的文件冲突
RMAN-05001:
辅助文件名 +DISK/testrac/datafile/sysaux.264.618591225 与正由目标数据库使用的文件发生冲突
RMAN-05001:
辅助文件名 +DISK/testrac/datafile/undotbs2.266.618591249 与正由目标数据库使用的文件发生冲突
RMAN-05001:
辅助文件名 +DISK/testrac/datafile/undotbs1.263.618591197 与正由目标数据库使用的文件发生冲突
RMAN-05001:
辅助文件名 +DISK/testrac/datafile/system.262.618591167 与正由目标数据库使用的文件发生冲突

RMAN> exit


恢复管理器完成。

其实造成这个错误的原因很简单,就是没有设置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/4227/viewspace-567103/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10525463