您现在的位置是:首页 >

10g大文件怎么传给别人 Oracle 10g 可传输表空间现在可以跨平台移植

火烧 2022-01-18 10:50:03 1046
Oracle 10g 可传输表空间现在可以跨平台移植   可传输表空间现在可以跨平台移植 从而使得数据发布更快更容易 此外 外部表下载使得通过转换进行数据转移的任务更简单更快     您如何将数据从一

Oracle 10g 可传输表空间现在可以跨平台移植  

10g大文件怎么传给别人 Oracle 10g 可传输表空间现在可以跨平台移植
  可传输表空间现在可以跨平台移植 从而使得数据发布更快更容易 此外 外部表下载使得通过转换进行数据转移的任务更简单更快     您如何将数据从一个数据库转移到另一个数据库?在现有的几种方法中 有一种方法尤为出色 可传输表空间 在这种方法中 您使用一组自包含 只读的表空间 只导出元数据 在操作系统层将这些表空间的数据文件拷贝至目标平台 并将元数据导入数据字典 — 这个过程称为插入     操作系统文件拷贝一般比其它传统的数据转移方法(如导出/导入或 SQL*Loader)要快得多 然而 在 Oracle i 数据库和更低版本中 可传输表空间仅限于在目标数据库和源数据库都运行在同一操作系统平台上的少数情况下才有用 — 例如 您不能在 Solaris 和 HP UX 平台之间传输表空间     在 Oracle 数据库 g 中 这个局限消失了 只要操作系统字节顺序相同 您就可以在平台之间传输表空间 本文将不就字节顺序展开长篇的讨论 但这里只要提几句话就足够了 一些操作系统(包括 Windows)在低位内存地址中用最低有效字节存储多字节二进制数据 因此这种系统被称为低地址低字节序 相反 其它的操作系统(包括 Solaris)将最高有效字节存储在低位内存地址中 因此这种系统被称为低地址高字节序 当一个低地址高字节序的系统试图从一个低地址低字节序的系统中读取数据时 需要一个转换过程 — 否则 字节顺序将导致不能正确解释读取的数据 (有关字节顺序的详细说明 请阅读嵌入式系统编程的 年 月刊中的一篇极好的文章 字节顺序介绍 )不过 当在相同字节顺序的平台之间传输表空间时 不需要任何转换     您怎么知道哪一种操作系统采用哪一种字节顺序?不需猜测或搜索互联网 相反只需简单地执行以下查询   SQL> select * from v$transportable_platform order by platform_id;    PLATFORM_ID PLATFORM_NAME            ENDIAN_FORMAT      Solaris[tm] OE ( bit)       Big   Solaris[tm] OE ( bit)       Big   HP UX ( bit)           Big   HP UX IA ( bit)          Big   HP Tru UNIX            Little   AIX Based Systems ( bit)     Big   Microsoft Windows IA ( bit)    Little   Microsoft Windows IA ( bit)    Little   IBM zSeries Based Linux       Big   Linux IA ( bit)          Little   Linux IA ( bit)          Little   Microsoft Windows bit for AMD  Little   Linux bit for AMD        Little   HP Open VMS             Little   Apple Mac OS            Big    假设您想从一台在 Intel 体系结构上运行 Linux 操作系统的主机 SRC 中将一个表空间 USERS 传输到运行 Microsoft Windows 操作系统的计算机 TGT 上 源平台和目标平台都是低地址低字节序的 表空间 USERS 的数据文件是 users_ 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_ dbf 拷贝至主机 TGT 如果您使用 FTP 那么您将需要指定二进制选项     将表空间插入到数据库中 在操作系统命令提示符下执行下面的语句   imp tablespaces=users transport_tablespace=y file=exp_ts_users dmp datafiles= users_ dbf   在第 步之后 目标数据库将有一个名称为 USERS 的表空间 并将提供该表空间的内容     请记住 系统 SRC 和 TGT 分别是 Linux 和 Windows 到 Oracle i 为止 运行在 TGT 上的数据库不能识别第 步中的数据文件 users_ dbf 从而使得整个过程无用 您将必须求助其它一些方法(如常规的导出和导入 创建纯文本文件并通过 SQL*Loader 加载 或直接在不同的数据库间连接加载插入)     在 g 中 不再需要这些替代方法 因为目标数据库能够识别来自另一个平台的数据文件 在我们的示例中 源主机和目标主机运行的操作系统的字节顺序是相同的(低地址低字节序) 因此不需要任何转换     这个功能在数据仓库中特别有用 其中更小的面向对象的数据集市常常在刷新之后从仓库中进行填充 利用 g 这些数据集市现在能够放在更小 更廉价的计算机(如运行 Linux 的 Intel boxes)中 而将数据仓库服务器放在更大的企业级计算机中 从本质上讲 利用可传输表空间 您现在可以更好地利用各种硬件和操作系统的组合      跨不同字节顺序的平台   如果平台是不同字节顺序的 那么您将如何实现可传输性?正如我之前说明的 目标计算机的字节顺序如果与源计算机的字节顺序不同 那么将不能正确地读取数据文件 因而不可能简单地拷贝数据文件 但别灰心 在 Oracle g RMAN 实用程序中提供了帮助 它支持将数据文件从一种字节顺序向另一种字节顺序转换     在上面的例子中 如果主机 SRC 运行在 Linux 上(低地址低字节序) 而目标主机 TGT 运行在 HP UX 上(低地址高字节序) 那么您需要在第 步和第 步之间引入另一个步骤 以进行转换 利用 RMAN 您将在源计算机 SRC 上把数据文件从 Linux 转换成 HP UX 格式(假定您已经使表空间变为只读)   RMAN> convert tablespace users   > to platform HP UX ( bit)    > format= /home/oracle/rman_bkups/%N_%f ;    Starting backup at MAR   using channel ORA_DISK_   channel ORA_DISK_ :starting datafile conversion  input datafile fno= name=/usr/oradata/dw/starz /users dbf  converted datafile=/home/oracle/rman_bkups/USERS_   channel ORA_DISK_ :datafile conversion plete elapsed time: : :   Finished backup at MAR     这个步骤在目录 /home/oracle/rman_bkups 中创建了一个标准 RMAN 文件格式 <tablespace_name>_<absolute_datafile_no> 的文件 注意我们没有触及表空间 USERS 的数据文件 而是为 HP UX 创建了一个新文件 现在可以将这个文件拷贝至目标系统 剩下的步骤很简单     这个 RMAN 转换命令非常强大 按照上面给定的形式 它可以按顺序创建数据文件 对于包含多个数据文件的表空间 您可以命令同时转换并运行多个数据文件 要实现这一目的 您将需要在上述命令中添加一个子句   parallelism =     该子句创建四个 RMAN 通道 每一个通道处理一个数据文件 不过 一种更有用的方法是用一个步骤转换大量的表空间 在这种情况下并行转换将真正带来很大的帮助 下面我们将两个表空间 USERS 和 MAINTS 转换至 HP UX   RMAN> convert tablespace users maints   > to platform HP UX ( bit)    > format= /home/oracle/rman_bkups/%N_%f    > parallelism = ;    Starting backup at MAR   using target database controlfile instead of recovery catalog  allocated channel:ORA_DISK_   channel ORA_DISK_ :sid= devtype=DISK  allocated channel:ORA_DISK_   channel ORA_DISK_ :sid= devtype=DISK  allocated channel:ORA_DISK_   channel ORA_DISK_ :sid= devtype=DISK  allocated channel:ORA_DISK_   channel ORA_DISK_ :sid= devtype=DISK  allocated channel:ORA_DISK_   channel ORA_DISK_ :sid= devtype=DISK  channel ORA_DISK_ :starting datafile conversion  input datafile fno= name=/usr/oradata/dw /dw /users dbf  channel ORA_DISK_ :starting datafile conversion  input datafile fno= name=/usr/oradata/dw /dw /users dbf  channel ORA_DISK_ :starting datafile conversion  input datafile fno= name=/usr/oradata/dw /dw /maints dbf  channel ORA_DISK_ :starting datafile conversion  input datafile fno= name=/usr/oradata/dw /dw /maints dbf  converted datafile=/home/oracle/rman_bkups/USERS_   channel ORA_DISK_ :datafile conversion plete elapsed time: : :   converted datafile=/home/oracle/rman_bkups/USERS_   channel ORA_DISK_ :datafile conversion plete elapsed time: : :   converted datafile=/home/oracle/rman_bkups/MAINTS_   channel ORA_DISK_ :datafile conversion plete elapsed time: : :   converted datafile=/home/oracle/rman_bkups/MAINTS_   channel ORA_DISK_ :datafile conversion plete elapsed time: : :   Finished backup at MAR     在上述例子中 转换后的文件名难于辨认并很难与原始文件关联(例如 文件 users dbf 变为 USERS_ ) 相反 您还可以使用其它格式来为数据文件命名 这个过程 lishixinzhi/Article/program/Oracle/201311/17393  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码