ITPub博客

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

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

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

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

这一篇介绍TRANSPORT TABLESPACE命令碰到的RMAN-06513错误,对应的Oracle命令行错误为ORA-39070错误。

利用RMAN迁移表空间碰到的问题(一):http://yangtingkun.itpub.net/post/468/480070

利用RMAN迁移表空间碰到的问题(二):http://yangtingkun.itpub.net/post/468/480171

利用RMAN迁移表空间碰到的问题(三):http://yangtingkun.itpub.net/post/468/480222

 

 

这个错误其实比较有意思:

RMAN> transport tablespace yangtk auxiliary destination '/data1/backup'
Nxm+H-E2355072> datapump directory d_output dump file 'yangtk_meta.dp'
b ``0x;x+Ca2355073> export log 'yangtk_meta.log' import script. 'yangtk_imp.src'
fQVm+E-G2355074> tablespace destination '/data1/backup';

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

表空间列表要求具有UNDOITPUB个人空间%nqs8[Mw {
表空间SYSTEMITPUB个人空间Br!_ q[.my7NO
表空间UNDOTBS1

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

供自动实例使用的初始化参数:ITPUB个人空间[Lgu:TO
db_name=TEST
;V%X3w-M.[N\235507compatible=10.2.0.3.0ITPUB个人空间rp'_ h9my
db_block_size=8192
&H dG(a)z/Zp235507db_files=200
8H+|ek[ wR/P h%b235507db_unique_name=tspitr_TEST_mBeh
WN8pa)wW-XH(M235507large_pool_size=1MITPUB个人空间g-@'V }"v ~
shared_pool_size=110M
8myn(@L'w%j235507#No auxiliary parameter file usedITPUB个人空间FV3C N%L w6z D
db_create_file_dest=/data1/backupITPUB个人空间C0Q*`DpHnS kV
control_files=/data1/backup/cntrl_tspitr_TEST_mBeh.f

ITPUB个人空间5qtIq$m'ki6s
启动自动实例TEST

Oracle实例已启动

系统全局区域总计     205520896字节

Fixed Size                     2028912字节ITPUB个人空间Q,Jl%^|0GU9f4w
Variable Size                146803344
字节ITPUB个人空间S(M U G9^2@|'E6ce
Database Buffers              50331648
字节
0E X3S$qp JO1?235507Redo Buffers                   6356992
字节ITPUB个人空间 x*e)g2Q8{5Nn
自动实例已创建

内存脚本的内容:
btnAk2n;A_235507{
P!e)peM a'ir235507# set the until clauseITPUB个人空间 c%v)F }K,p)S
set until  scn 3564357;ITPUB个人空间3a4E,k5X{$]|
# restore the controlfile
^|5|*x p lvu235507restore clone controlfile;ITPUB个人空间9U-X|i j
# mount the controlfile
{ Th%y8rX\/z t@ |235507sql clone 'alter database mount clone database';ITPUB个人空间qt|+~+A)bY
# archive current online log for tspitr to a resent until time
.n;e+ea2WD"SZA-rg235507sql 'alter system archive log current';
Ds6P @l;q235507# avoid unnecessary autobackups for structural changes during TSPITR
#n ^%zF4k8Nud235507sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';ITPUB个人空间&`6{#o0vpe O@^
}ITPUB个人空间LAz(qSw C&Au
正在执行内存脚本

正在执行命令: SET until clause

启动restore09-1-09
"])}ewpgIco235507
分配的通道: ORA_AUX_DISK_1
\ C/F3{ I-XDM4q235507
通道ORA_AUX_DISK_1: sid=34 devtype=DISK

通道ORA_AUX_DISK_1:正在开始恢复数据文件备份ITPUB个人空间\:p|sE:~ w l
通道ORA_AUX_DISK_1:正在复原控制文件ITPUB个人空间q!\)^'S"T)p R(j?
通道ORA_AUX_DISK_1:正在读取备份段/data1/backup/test/c-1920405094-20090109-00ITPUB个人空间Q`(i9G_d0|-ap
通道ORA_AUX_DISK_1:已恢复备份段1
3}BB#V.gh'P235507
段句柄= /data1/backup/test/c-1920405094-20090109-00标记= TAG20090109T021104
Dy p-ZJ"zL235507
通道ORA_AUX_DISK_1:恢复完成,用时: 00:00:02ITPUB个人空间:g/S-gfr8^K1L
输出文件名=/data1/backup/cntrl_tspitr_TEST_mBeh.f
Wn.B p/X#G235507
完成restore09-1-09

sql语句: alter database mount clone database

sql语句: alter system archive log current

sql语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
5RT+` j^WD+X*G235507
释放的通道: ORA_AUX_DISK_1

内存脚本的内容:
,gYN KO._d235507{ITPUB个人空间 V5T&Z'W p
# generated tablespace point-in-time recovery script
WQaVF9\235507# set the until clause
d~-@C3CJ#{8rI235507set until  scn 3564357;ITPUB个人空间g7K$Gs!b%R0Vcg
# set an omf destination filename for restore
nZs#Zg235507set newname for clone datafile  1 to new;
$]/?7z\7J HC235507# set an omf destination filename for restore
oA2K3| @;SLYH5K i235507set newname for clone datafile  2 to new;
V~qAc!rl(~h235507# set an omf destination filename for restoreITPUB个人空间H.W A}~U2dw L U
set newname for clone datafile  3 to new;
jd7w#Z)G F"_235507# set an omf destination tempfile
Y@b.SyYA235507set newname for clone tempfile  1 to new;
c7yr9jH5C#Kc4w`235507# set a destination filename for restore
7{t3rz8GBP235507set newname for datafile  5 toITPUB个人空间A/Le:pWT:K
 "/data1/backup/yangtk01.dbf";ITPUB个人空间w DX/zYJ|
# rename all tempfilesITPUB个人空间L@ B-w$W d"|X
switch clone tempfile all;
$c'o8th-nusG Su235507# restore the tablespaces in the recovery set plus the auxilliary tablespaces
FE r4RZ%w235507restore clone datafile  1, 2, 3, 5;ITPUB个人空间\,U_&y#rd
switch clone datafile all;
J!H]x"R$^235507#online the datafiles restored or flipped
'b9~j${OOJ'fNh235507sql clone "alter database datafile  1 online";ITPUB个人空间,Ye*euD)kuYa
#online the datafiles restored or flippedITPUB个人空间&ai$RT+](j,|.v4d
sql clone "alter database datafile  2 online";
RV A Vw8N T"\V235507#online the datafiles restored or flippedITPUB个人空间9j9G-^1a"i9_-[ k
sql clone "alter database datafile  3 online";ITPUB个人空间z9@ j6d tt6X
#online the datafiles restored or flipped
2?+P]rD9[ M_0]235507sql clone "alter database datafile  5 online";
p_ `HW,Mt235507# make the controlfile point at the restored datafiles, then recover them
i? YWFl:mS:z0E235507recover clone database tablespace  "YANGTK", "SYSTEM", "UNDOTBS1", "SYSAUX" delete archivelog;
}vFL&X?6`T0dV235507alter clone database open resetlogs;
,i5g E&BZz1K"Z235507# PLUG HERE the creation of a temporary tablespace if export fails due to lackITPUB个人空间$\VWg[8KW
# of temporary space.ITPUB个人空间D z*?E"n%Z8]9Ih"E
# For example in Unix these two lines would do that:
.Z'H o6Z~235507#sql clone "create tablespace aux_tspitr_tmp
%u M"nH\M f235507#           datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
wf0\L(X/^;J ~}!K235507}ITPUB个人空间7~UY{eU,s2[
正在执行内存脚本

正在执行命令: SET until clause

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

临时文件1在控制文件中已重命名为/data1/backup/TSPITR_TEST_MBEH/datafile/o1_mf_temp_%u_.tmp

启动restore09-1-09ITPUB个人空间x/Z:vZ.P^h6{
分配的通道: ORA_AUX_DISK_1ITPUB个人空间:UC G%XZS
通道ORA_AUX_DISK_1: sid=36 devtype=DISK

通道ORA_AUX_DISK_1:正在开始恢复数据文件备份集
s,_4sLi"I235507
通道ORA_AUX_DISK_1:正在指定从备份集恢复的数据文件ITPUB个人空间 B Te(d h8sH0Z"O
正将数据文件00001恢复到/data1/backup/TSPITR_TEST_MBEH/datafile/o1_mf_system_%u_.dbfITPUB个人空间+sLQ%pgD%n.f Ijw
正将数据文件00002恢复到/data1/backup/TSPITR_TEST_MBEH/datafile/o1_mf_undotbs1_%u_.dbf
'H3?0T b'z)C/RA#L235507
正将数据文件00003恢复到/data1/backup/TSPITR_TEST_MBEH/datafile/o1_mf_sysaux_%u_.dbf
uQ m3M&e.FNZ235507
正将数据文件00005恢复到/data1/backup/yangtk01.dbfITPUB个人空间AmGsnycPt
通道ORA_AUX_DISK_1:正在读取备份段/data1/backup/1rk4bc4v_1_1ITPUB个人空间V n3Fat [Vb
通道ORA_AUX_DISK_1:已恢复备份段1
-@FSQr7PI235507
段句柄= /data1/backup/1rk4bc4v_1_1标记= TAG20090109T021038
/@2d2@Bnj|235507
通道ORA_AUX_DISK_1:恢复完成,用时: 00:00:46
m2X8d{)?235507
完成restore09-1-09

数据文件1已转换成数据文件副本
RR1i m5B'g i235507
输入数据文件副本recid=5 stamp=675656832文件名=/data1/backup/TSPITR_TEST_MBEH/datafile/o1_mf_system_4pdkbmls_.dbf
X{/pY(bLND}235507
数据文件2已转换成数据文件副本
8D"id_ o k-wb235507
输入数据文件副本recid=6 stamp=675656832文件名=/data1/backup/TSPITR_TEST_MBEH/datafile/o1_mf_undotbs1_4pdkbmno_.dbf
_vP9V7i8C]|&E2O!e235507
数据文件3已转换成数据文件副本ITPUB个人空间tk'c9z'd@I
输入数据文件副本recid=7 stamp=675656832文件名=/data1/backup/TSPITR_TEST_MBEH/datafile/o1_mf_sysaux_4pdkbmn5_.dbf
7||c%S1dJ235507
数据文件5已转换成数据文件副本
#E-P U7Oc1CO-c4X235507
输入数据文件副本recid=8 stamp=675656832文件名=/data1/backup/yangtk01.dbf

sql语句: alter database datafile  1 online

sql语句: alter database datafile  2 online

sql语句: alter database datafile  3 online

sql语句: alter database datafile  5 online

启动recover09-1-09ITPUB个人空间B?$~ HUQ
使用通道ORA_AUX_DISK_1

正在开始介质的恢复

存档日志线程1序列112已作为文件/data1/oradata/test/archivelog/1_112_622258662.dbf存在于磁盘上ITPUB个人空间kPG2M]0h
存档日志文件名=/data1/oradata/test/archivelog/1_112_622258662.dbf线程=1序列=112ITPUB个人空间u8]ZdJ!Q8PZ
介质恢复完成,用时: 00:00:01
a0zi~6\235507
完成recover09-1-09

数据库已打开

内存脚本的内容:
pd Sdn'~-pU235507{
[D2b.sU6A"rb235507#mark read only the tablespace that will be exported
6N!a4A0|v%^p.p+u235507sql clone "alter tablespace YANGTK read only";
oe D]:K @-FUo%[235507# export the tablespaces in the recovery set
+~#Lc*^ N_(e235507host 'expdp userid=\"/@\(DESCRIPTION=\(ADDRESS=\(PROTOCOL=beq\)\(PROGRAM=/data/oracle/product/10.2/database/bin/oracle\)\(ARGV0=oraclemBeh\)\(ARGS=^'\(DESCRIPTION=\(LOCAL=YES\)\(ADDRESS=\(PROTOCOL=beq\)\)\)^'\)\(ENVS=^'ORACLE_SID=mBeh^'\)\)\(CONNECT_DATA=\(SID=mBeh\)\)\) as sysdba\" transport_tablespaces=
Z~)r+Sm\gOUBF235507 YANGTK dumpfile=
W_Vs`6NY235507yangtk_meta.dp directory=
l5g\;r$i235507d_output logfile=
?jF3@v J235507yangtk_meta.log';ITPUB个人空间3kl HF UcNdz
}
d;yHXlO&p9~235507
正在执行内存脚本

sql语句: alter tablespace YANGTK read only


)h:Lv;W2iP l0?h235507Export: Release10.2.0.3.0 - 64bit Production on
星期五, 09 1, 2009 2:27:28

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

连接到: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit ProductionITPUB个人空间CBC}S&n3Yxf
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
-] O)}Fgq235507ORA-39002:
操作无效ITPUB个人空间,fc eUf
ORA-39070:
无法打开日志文件。ITPUB个人空间Xq1JJ!c+o Jr
ORA-39087:
目录名D_OUTPUT无效

ITPUB个人空间)ZfQ"`dq P
主机命令完成

删除自动实例
;\I!U Z'b3v235507
关闭自动实例ITPUB个人空间*M$hZ Y2r4b4u
Oracle
实例已关闭
1C#C+f V/C/qs235507
自动实例已删除
y o3_4S\H%M\S235507MAN-00571: ===========================================================ITPUB个人空间8I;lrL)c?%H
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
5~5D"j7J_Q(t/V+X'M235507RMAN-00571: ===========================================================ITPUB个人空间Uh(yxd
RMAN-03002: tranport tablespace
命令(01/09/2009 02:27:43)失败
/Q#q&e4\4f RQ235507RMAN-03015:
在存储的脚本Memory Script中出现错误
|v6["j6[235507RMAN-06135:
执行主命令时出错: Additional information: 256
6YqSU5BCl$c235507Additional information: 4

错误很简单,由于指定了一个不存在的DIRECTORY名称:D_OUTPUT,导致RMAN在通过命令行方式调用EXPDP命令时出错。错误信息很明确,解决方法也很简单,只需要在数据库中添加D_OUTPUT目录就可以了。

既然问题这么简单,为什么说这个问题有意思呢。有意思的在源数据库中添加新的目录D_OUTPUT后,问题依旧:

SQL> create directory d_output as '/data/dmp';

目录已创建。

SQL> hostITPUB个人空间*f's3ZBO? i f2\
bash-2.03$ expdp test/test directory=d_output dumpfile=test.dp

Export: Release10.2.0.3.0 - 64bit Production on星期五, 09 1, 2009 2:31:06

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

连接到: Oracle Database10gEnterprise Edition Release10.2.0.3.0 - 64bit ProductionITPUB个人空间"G7OBC;W
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
W.Q C*k!rq VOrCl235507
启动"TEST"."SYS_EXPORT_SCHEMA_01":  test/******** directory=d_output dumpfile=test.dp
A!u el7RE235507
正在使用BLOCKS方法进行估计...ITPUB个人空间c6j;k q+\7K0xgq:C
处理对象类型SCHEMA_EXPORT/TABLE/TABLE_DATAITPUB个人空间Q^diw.D#U2B
使用BLOCKS方法的总估计: 640 KB
8^b)Z LyguH235507
处理对象类型SCHEMA_EXPORT/USER
w%Fp"FI~235507
处理对象类型SCHEMA_EXPORT/SYSTEM_GRANTITPUB个人空间ofew8r
处理对象类型SCHEMA_EXPORT/ROLE_GRANTITPUB个人空间 og.Ip(|!_@-h
处理对象类型SCHEMA_EXPORT/DEFAULT_ROLEITPUB个人空间4]t V/K,B Bwd.`
处理对象类型SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMAITPUB个人空间];B@$P3e"`;n!D w
处理对象类型SCHEMA_EXPORT/TABLE/TABLEITPUB个人空间4j f_$su&e!G+[X
处理对象类型SCHEMA_EXPORT/TABLE/INDEX/INDEX
4^,rS2u_3a.T235507
处理对象类型SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
b L7f6?Ab235507
处理对象类型SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
6i,s,o,d!~+i3B8~235507
处理对象类型SCHEMA_EXPORT/TABLE/COMMENTITPUB个人空间$r3rpv6s6Y|t
处理对象类型SCHEMA_EXPORT/FUNCTION/FUNCTION
N Vl/T3B+JC G x6GWS235507
处理对象类型SCHEMA_EXPORT/PROCEDURE/PROCEDUREITPUB个人空间N7]`#o(l L{dm(t#n
处理对象类型SCHEMA_EXPORT/FUNCTION/ALTER_FUNCTIONITPUB个人空间0je+my.J8A1P,FP]&C2O
处理对象类型SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
GC3l vX-K235507. .
导出了"TEST"."T"                                  392.1 KB   45229
+eUaZ;itw-i(w235507
已成功加载/卸载了主表"TEST"."SYS_EXPORT_SCHEMA_01"ITPUB个人空间-^[7} @/Ey6|.m.i]
******************************************************************************ITPUB个人空间uY_ @8oX'V dQ&Sd
TEST.SYS_EXPORT_SCHEMA_01
的转储文件集为:ITPUB个人空间?C1gdz3J
  /data/dmp/test.dp
huQ2JDyu#{235507
作业"TEST"."SYS_EXPORT_SCHEMA_01"已于02:32:04成功完成

可以看到,新增的D_OUTPUT目录可以正常工作,但是再次执行上面的TRANSPORT TABLESPACE命令,错误却没有发生任何的变化。

其实导致这个问题的原因并不复杂,由于执行的是表空间及时点恢复,且在执行TRANSPORT TABLESPACE命令时没有指定UNTIL SCN参数,因此RMAN自动选择了一个时间点,而这个时间点恰好是在CREATE DIRECTORY命令之前,导致了TRANSPORT TABLESPACE命令生成的AUXILIARY实例在执行完及时点恢复后,不包含新创建的DIRECTORY

解决这个问题最简单的方法是指定一个系统中已经存在的目录,如果一定要使用新建的目录,那么需要在TRANSPORT TABLESPACE的时候指定UNTIL SCN参数,且保证这个SCN在创建新DIRECTORY之后。

 

 

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

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

注册时间:2008-08-08

  • 博文量
    209
  • 访问量
    871116