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

文章作者 100test 发表时间 2007:03:14 13:39:52
来源 100Test.Com百考试题网


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

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

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

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

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

  SQL> 0select * 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 AMD  Little

  13 Linux 64-bit for AMD        Little

  15 HP Open VMS             Little

  16 Apple Mac OS            Big
  

假设想从一台在 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


相关文章


SQLServer索引结构及其使用之六
2006年之官方消息:Oracle8i认证即将退休
Oracle公司考虑开发属于自己的Linux
Oracle用RMAN和DBMS_JOB包实现自动存储
用可传输表空间实现Oracle跨平台移植
Oracle游标使用大全(中)
Oracle身份管理套件帮助企业进行安全管理
Oracle游标使用大全(下)
Oracle数据库管理系统发布11i安全补丁
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛