分类: Oracle
2008-04-03 22:51:20
可传送的tablespace特性——直接在Oracle实例之间复制数据文件,而不卸载和加载数据——是在Oracle 8i中引入的,并从那时开始成为一种功能性。一开始,要转移的tablespace和目的数据库必须要具有相同大小的模块。Oracle 9i中增加的多种模块大小的支持克服了这种局限性。现在,在Oracle 10g中,平台的限制也在很大程度上被解决了。
恢复管理器(Recovery Manager,RMAN)程序中包括了一个新的CONVERT(转换)命令,你可以将其用来进行平台间的移动。小到一个数据文件,大到整个数据库,都可以在这个命令的帮助下完成传送。
在平台间移动,经常需要进行转换的原因就在于计算机以不同的方式储存多字节数字。Endianness(字节顺序)这个术语所描述的就是这个,主要的两种组合是big-endian(随着内存地址的递增,值从高到低排列)和small-endian(随着内存地址的递增,值从低到高排列)。要正确地解释tablespace中的数据,字节要根据所用的操作系统平台正确有序排列。
视图V$TRANSPORTABLE_PLATFORM列出了RMAN可以转换的平台。每一个都有一个平台名称和字节顺序格式。通过从这个视图中选择,你可以看到源实例和目的实例是否使用相同的字节顺序。
CONVERT命令复制文件,而不是就地对它们进行操作,这样就更加安全,但是需要有足够的额外硬盘空间来保存这两种形式。
CONVERT命令主要有三种形式:
即使两个系统使用相同的字节顺序,你仍然可以从CONVERT命令获益。FORMAT(格式化)子句使你能够转换路径名,还有一个用处就是从ASM硬盘组复制数据文件和将数据文件拷入其中。
显示的是一个在Windows平台源系统(little-endian)中RMAN会话的例子,将USERS tablespace转化为IBM z系列目的系统(big-endian)。最初tablespace被设为只读,使用RMAN SQL命令。然后,CONVERT语句把文件复制到闪电恢复区并将其转换。最后,源tablespace被返回为读/写状态。此时,被复制的文件就可以被复制到目的服务器了。
Z:>rman
Recovery Manager: Release 10.2.0.1.0 - Production on Wed Jan 3 21:00:46 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
RMAN> connect target sys/password@orcl
connected to target database: ORCL (DBID=1106543623)
RMAN> SQL 'ALTER TABLESPACE users READ ONLY';
using target database control file instead of recovery catalog
sql statement: ALTER TABLESPACE users READ ONLY
RMAN> CONVERT TABLESPACE users
2> TO PLATFORM 'IBM zSeries Based Linux';
Starting backup at 03-JAN-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=145 devtype=DISK
channel ORA_DISK_1: starting datafile conversion
input datafilefno=00004 name=C:ORACLEPRODUCT.2.0ORADATAORCLUSERS01.DBF
converted datafile=C:ORACLEPRODUCT.2.0DB_1DATABASEDATA_D-ORCL_I-11065436
23_TS-USERS_FNO-4_01I6JT63
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:03
Finished backup at 03-JAN-07
RMAN> SQL 'ALTER TABLESPACE users READ WRITE';
sql statement: ALTER TABLESPACE users READ WRITE
RMAN> exit
Recovery Manager complete.
Z:>