技术开发 频道

Oracle中传输表空间

    【IT168 技术文档】Oracle中的传输表空间功能, 用来将一个实例中的表空间和数据文件移到另一个实例中. 执行起来方便, 快捷.但是要使用该功能有一些限制:
    需要两个平台一致.
    必须有相同的字符集和多语言字符集.
    要求两个实例的db block size 大小相等, 如不相等则需要兼容9.0以上等.

    具体步骤如下:

    SQL> --example表空间试验
    SQL> connect sys/system as sysdba
    Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.2.0
    Connected as SYS

    SQL> execute dbms_tts.transport_set_check('EXAMPLE',TRUE);

    PL/SQL procedure successfully completed

    SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

    VIOLATIONS
    --------------------------------------------------------------------------------

    SQL> --如果上面的查询可以查到记录,则说明不适合表空间传输条件, 需要根据实际
    SQL> --情况将对象移到别的表空间;
    SQL>

    C:\Documents and Settings\hawk>exp userid='sys/system as sysdba' transport_table
    space=y tablespaces=EXAMPLE file ='d:\a.dmp';

    Export: Release 10.1.0.2.0 - Production on 星期三 7月 12 14:46:27 2006

    Copyright (c) 1982, 2004, Oracle.All rights reserved.

    连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
    With the Partitioning, OLAP and Data Mining options
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    注: 将不导出表数据 (行)
    即将导出可传输的表空间元数据...
    对于表空间 EXAMPLE...
    . 正在导出簇定义
    . 正在导出表定义
    . . 正在导出表REGIONS
    . . 正在导出表COUNTRIES
    . . 正在导出表LOCATIONS
    . . 正在导出表DEPARTMENTS
    . . 正在导出表JOBS
    . . 正在导出表EMPLOYEES
    . . 正在导出表JOB_HISTORY
    . . 正在导出表CUSTOMERS
    . . 正在导出表WAREHOUSES
    . . 正在导出表ORDER_ITEMS
    . . 正在导出表ORDERS
    . . 正在导出表INVENTORIES
    . . 正在导出表PRODUCT_INFORMATION
    . . 正在导出表PRODUCT_DESCRIPTIONS
    . . 正在导出表PROMOTIONS
    . . 正在导出表ORDERS_QUEUETABLE
    . . 正在导出表AQ$_ORDERS_QUEUETABLE_S
    . . 正在导出表AQ$_ORDERS_QUEUETABLE_T
    . . 正在导出表AQ$_ORDERS_QUEUETABLE_H
    . . 正在导出表AQ$_ORDERS_QUEUETABLE_G
    . . 正在导出表AQ$_ORDERS_QUEUETABLE_I
    . . 正在导出表STREAMS_QUEUE_TABLE
    . . 正在导出表AQ$_STREAMS_QUEUE_TABLE_S
    . . 正在导出表AQ$_STREAMS_QUEUE_TABLE_T
    . . 正在导出表AQ$_STREAMS_QUEUE_TABLE_H
    . . 正在导出表AQ$_STREAMS_QUEUE_TABLE_G
    . . 正在导出表AQ$_STREAMS_QUEUE_TABLE_I
    . . 正在导出表TIMES
    . . 正在导出表PRODUCTS
    . . 正在导出表CHANNELS
    . . 正在导出表PROMOTIONS
    . . 正在导出表CUSTOMERS
    . . 正在导出表COUNTRIES
    . . 正在导出表SUPPLEMENTARY_DEMOGRAPHICS
    . . 正在导出表CAL_MONTH_SALES_MV
    . . 正在导出表FWEEK_PSCAT_SALES_MV
    . . 正在导出表SALES
    . . 正在导出表COSTS
    . . 正在导出表MVIEW$_EXCEPTIONS
    . . 正在导出表ONLINE_MEDIA
    . . 正在导出表PRINT_MEDIA
    . 正在导出引用完整性约束条件
    . 正在导出触发器
    . 结束导出可传输的表空间元数据
    成功终止导出, 没有出现警告。

    C:\Documents and Settings\hawk>copy D:\system\ora10g\oradata\ora10g\EXAMPLE01.DB
    F d:\EXAMPLE01.DBF
    已复制1 个文件。   

    C:\Documents and Settings\hawk>imp userid='sys/system as sysdba' file='d:\a.dmp'
    transport_tablespace=y datafiles='d:\EXAMPLE01.DBF'

    Import: Release 10.1.0.2.0 - Production on 星期三 7月 12 15:00:31 2006

    Copyright (c) 1982, 2004, Oracle.All rights reserved.

    连接到: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
    With the Partitioning, OLAP and Data Mining options

    经由常规路径由 EXPORT:V10.01.00 创建的导出文件即将导入可传输的表空间元数据...

    已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
    . 正在将 SYS 的对象导入到 SYS
    IMP-00017: 由于 ORACLE 错误 29349, 以下语句失败:
    "BEGINsys.dbms_plugts.beginImpTablespace('EXAMPLE',6,'SYS',1,0,8192,1,438"
    "998,1,2147483645,8,128,8,0,1,0,8,3914340468,1,33,320552,NULL,0,334814,NULL,"
    "NULL); END;"
    IMP-00003: 遇到 ORACLE 错误 29349
    ORA-29349: 表空间 'EXAMPLE' 已存在
    ORA-06512: 在 "SYS.DBMS_PLUGTS", line 1728
    ORA-06512: 在 line 1
    IMP-00000: 未成功终止导入

    --因为测试是在同一个实例中进行,所以出现上面的表空间已存在错误.

    SQL> alter tablespace example read write;

    Tablespace altered

0
相关文章