分享
 
 
 

Oracle可传输表空间实现跨平台移植

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

可传输表空间现在可以跨平台移植,从而使得数据发布更快更轻易。此外,外部表下载使得通过转换进行数据转移的任务更简单更快。

如何将数据从一个数据库转移到另一个数据库?在现有的几种方法中,有一种方法尤为出色:可传输表空间。在这种方法中,使用一组自包含、只读的表空间,只导出元数据,在操作系统层将这些表空间的数据文件拷贝至目标平台,并将元数据导入数据字典 — 这个过程称为插入。

操作系统文件拷贝一般比其它传统的数据转移方法(如导出/导入或 SQL*Loader)要快得多。然而,在 Oracle9i 数据库和更低版本中,可传输表空间仅限于在目标数据库和源数据库都运行在同一操作系统平台上的少数情况下才有用 — 例如,不能在 Solaris 和 HP-UX 平台之间传输表空间。

在 Oracle 数据库 10g 中,这个局限消失了:只要操作系统字节顺序相同,就可以在平台之间传输表空间。本文将不就字节顺序展开长篇的讨论,但这里只要提几句话就足够了:一些操作系统(包括 Windows)在低位内存地址中用最低有效字节存储多字节二进制数据;因此这种系统被称为低地址低字节序。相反,其它的操作系统(包括 Solaris)将最高有效字节存储在低位内存地址中,因此这种系统被称为低地址高字节序。当一个低地址高字节序的系统试图从一个低地址低字节序的系统中读取数据时,需要一个转换过程 — 否则,字节顺序将导致不能正确解释读取的数据。(有关字节顺序的具体说明,请阅读嵌入式系统编程的 2002 年 1 月刊中的一篇极好的文章“字节顺序介绍”。)不过,当在相同字节顺序的平台之间传输表空间时,不需要任何转换。

怎么知道哪一种操作系统采用哪一种字节顺序?不需猜测或搜索互联网,相反只需简单地执行以下查询:

SQL> select * from v$transportable_platform order by platform_id;

PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT

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

1 Solaris[tm] OE (32-bit) Big

2 Solaris[tm] OE (64-bit) Big

3 HP-UX (64-bit)Big

4 HP-UX IA (64-bit) Big

5 HP Tru64 UNIX Little

6 AIX-Based Systems (64-bit)Big

7 Microsoft Windows IA (32-bit) Little

8 Microsoft Windows IA (64-bit) Little

9 IBM zSeries Based Linux Big

10 Linux IA (32-bit) Little

11 Linux IA (64-bit) Little

12 Microsoft Windows 64-bit for AMDLittle

13 Linux 64-bit for AMDLittle

15 HP Open VMS Little

16 Apple Mac OSBig

假设想从一台在 Intel 体系结构上运行 Linux 操作系统的主机 SRC1 中将一个表空间 USERS 传输到运行 Microsoft Windows 操作系统的计算机 TGT1 上。源平台和目标平台都是低地址低字节序的。表空间 USERS 的数据文件是 users_01.dbf。将按照类似以下的方法来进行操作。

使表空间为只读:

alter tablespace users read only;

导出表空间。在操作系统提示符下执行:

eXP tablespaces=users transport_tablespace=y file=exp_ts_users.dmp

exp_ts_users.dmp 文件只包含元数据(不是表空间 USERS 的内容)因此它将非常小。将文件 exp_ts_users.dmp 和 users_01.dbf 拷贝至主机 TGT1。假如使用 FTP,那么将需要指定二进制选项。

将表空间插入到数据库中。在操作系统命令提示符下执行下面的语句:

imp tablespaces=users transport_tablespace=y

file=exp_ts_users.dmp datafiles='users_01.dbf'

在第 4 步之后,目标数据库将有一个名称为 USERS 的表空间,并将提供该表空间的内容。请记住,系统 SRC1 和 TGT1 分别是 Linux 和 Windows。到 Oracle9i 为止,运行在 TGT1 上的数据库不能识别第 4 步中的数据文件 users_01.dbf,从而使得整个过程无用。您将必须求助其它一些方法(如常规的导出和导入、创建纯文本文件并通过 SQL*Loader 加载,或直接在不同的数据库间连接加载插入)。

在 10g 中,不再需要这些替代方法,因为目标数据库能够识别来自另一个平台的数据文件。在我们的示例中,源主机和目标主机运行的操作系统的字节顺序是相同的(低地址低字节序),因此不需要任何转换。

这个功能在数据仓库中非凡有用,其中更小的面向对象的数据集市经常在刷新之后从仓库中进行填充。利用 10g,这些数据集市现在能够放在更小、更廉价的计算机(如运行 Linux 的 Intel boxes)中,而将数据仓库服务器放在更大的企业级计算机中。从本质上讲,利用可传输表空间,现在可以更好地利用各种硬件和操作系统的组合。

跨不同字节顺序的平台

假如平台是不同字节顺序的,那么将如何实现可传输性?正如我之前说明的,目标计算机的字节顺序假如与源计算机的字节顺序不同,那么将不能正确地读取数据文件,因而不可能简单地拷贝数据文件。但别灰心,在 Oracle 10g RMAN 实用程序中提供了帮助,它支持将数据文件从一种字节顺序向另一种字节顺序转换。

在上面的例子中,假如主机 SRC1 运行在 Linux 上(低地址低字节序),而目标主机 TGT1 运行在 HP-UX 上(低地址高字节序),那么需要在第 3 步和第 4 步之间引入另一个步骤,以进行转换。利用 RMAN,您将在源计算机 SRC1 上把数据文件从 Linux 转换成 HP-UX 格式(假定已经使表空间变为只读):

RMAN> convert tablespace users

2> to platform 'HP-UX (64-bit)'

3>format='/home/oracle/rman_bkups/%N_%f';

Starting backup at 14-MAR-04

using channel ORA_DISK_1

channel ORA_DISK_1:starting datafile conversion

input datafile fno=00004 name=/usr/oradata/dw/starz10/users01.dbf

converted datafile=/home/oracle/rman_bkups/USERS_4

channel ORA_DISK_1:datafile conversion complete,

elapsed time: 00:00:07

Finished backup at 14-MAR-04

这个步骤在目录 /home/oracle/rman_bkups 中创建了一个标准 RMAN 文件格式_ 的文件。注重我们没有触及表空间 USERS 的数据文件;而是为 HP-UX 创建了一个新文件。现在可以将这个文件拷贝至目标系统,剩下的步骤很简单。

这个 RMAN 转换命令非常强大。按照上面给定的形式,它可以按顺序创建数据文件。对于包含多个数据文件的表空间,可以命令同时转换并运行多个数据文件。要实现这一目的,将需要在上述命令中添加一个子句:

parallelism = 4

该子句创建四个 RMAN 通道,每一个通道处理一个数据文件。不过,一种更有用的方法是用一个步骤转换大量的表空间,在这种情况下并行转换将真正带来很大的帮助。下面我们将两个表空间 USERS 和 MAINTS 转换至 HP-UX:

RMAN> convert tablespace users, maints

2> to platform 'HP-UX (64-bit)'

3> format='/home/oracle/rman_bkups/%N_%f'

4> parallelism = 5;

Starting backup at 14-MAR-04

using target database controlfile instead of recovery catalog

allocated channel:ORA_DISK_1

channel ORA_DISK_1:sid=244 devtype=DISK

allocated channel:ORA_DISK_2

channel ORA_DISK_2:sid=243 devtype=DISK

allocated channel:ORA_DISK_3

channel ORA_DISK_3:sid=245 devtype=DISK

allocated channel:ORA_DISK_4

channel ORA_DISK_4:sid=272 devtype=DISK

allocated channel:ORA_DISK_5

channel ORA_DISK_5:sid=253 devtype=DISK

channel ORA_DISK_1:starting datafile conversion

input datafile fno=00004 name=/usr/oradata/dw10/dw10/users01.dbf

channel ORA_DISK_2:starting datafile conversion

input datafile fno=00005 name=/usr/oradata/dw10/dw10/users02.dbf

channel ORA_DISK_3:starting datafile conversion

input datafile fno=00006 name=/usr/oradata/dw10/dw10/maints01.dbf

channel ORA_DISK_4:starting datafile conversion

input datafile fno=00007 name=/usr/oradata/dw10/dw10/maints02.dbf

converted datafile=/home/oracle/rman_bkups/USERS_4

channel ORA_DISK_1:datafile conversion complete, elapsed time: 00:00:03

converted datafile=/home/oracle/rman_bkups/USERS_5

channel ORA_DISK_2:datafile conversion complete, elapsed time: 00:00:00

converted datafile=/home/oracle/rman_bkups/MAINTS_6

channel ORA_DISK_3:datafile conversion complete, elapsed time: 00:00:01

converted datafile=/home/oracle/rman_bkups/MAINTS_7

channel ORA_DISK_4:datafile conversion complete, elapsed time: 00:00:01

Finished backup at 14-MAR-04

在上述例子中,转换后的文件名难于辨认并很难与原始文件关联(例如,文件 users01.dbf 变为 USERS_4)。相反,还可以使用其它格式来为数据文件命名。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有