zoukankan      html  css  js  c++  java
  • 使用传输表空间迁移数据

    一、检查是否满足传输表空间的条件
    1、检查源库与目标库的平台支持

    源库:
    SQL> select d.name,i.version,d.platform_name,endian_format from v$transportable_platform tp,v$database d,v$instance i
      2  where tp.PLATFORM_NAME=d.platform_name;
      
    NAME      VERSION           PLATFORM_NAME                                                                    ENDIAN_FORMAT
    --------- ----------------- -------------------------------------------------------------------------------- --------------
    ORCL      11.2.0.1.0        Microsoft Windows x86 64-bit                                                     Little
    
    目标库:
    SQL> select d.name,i.version,d.platform_name,endian_format from v$transportable_platform tp,v$database d,v$instance i
      2  where tp.PLATFORM_NAME=d.platform_name;
    NAME      VERSION           PLATFORM_NAME                                                                    ENDIAN_FORMAT
    --------- ----------------- -------------------------------------------------------------------------------- --------------
    ORCL      11.2.0.1.0        Linux x86 64-bit                                                                 Little

    查看哪些平台支持跨平台的传输表空间特性:

    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 x86 64-bit                                                     Little
             13 Linux x86 64-bit                                                                 Little
             15 HP Open VMS                                                                      Little
             16 Apple Mac OS                                                                     Big
             17 Solaris Operating System (x86)                                                   Little
             18 IBM Power Based Linux                                                            Big
             19 HP IA Open VMS                                                                   Little
             20 Solaris Operating System (x86-64)                                                Little
             21 Apple Mac OS (x86-64)                                                            Little
    20 rows selected

    结论:虽然操作系统平台不同,但是数据库版本相同,字节顺序也相同(不需要转换字节),并且支持跨平台传输。

    2、检查自包含的表空间集
    SQL> exec dbms_tts.transport_set_check('tts',true);
    PL/SQL procedure successfully completed

    SQL> select * from transport_set_violations;
    VIOLATIONS
    ----------------------------------------------

    结果返回0行记录,说明满足自包含条件。即tts表空间中的对象未引用其它未传输表空间中的对象(非严格方式)

    SQL> exec dbms_tts.transport_set_check('tts',true,true); --严格方式

    PL/SQL 过程已成功完成。

    SQL> select * from transport_set_violations;

    未选定行

    结果返回0行记录,说明待默认的tts表空间中的对象未引用其它未传输表空间中的对象,而且tts表空间中的对象也未被其它未传输的表空间中的对象引用。

    二、执行表空间的传输
    1、源数据库将要传输的表空间生成可传输表空间集
    1.1 将待传输的表空间置为read only状态
    SQL> alter tablespace tts read only;

    表空间已更改。

    1.2 执行data pump export 命令导出表空间集元数据

    C:UsersAdministrator>expdp system/RUSKY@orcl dumpfile=tbs_tts.dmp directory=test_tts_dump transport_tablespaces=tts nologfile=y;
    
    Export: Release 11.2.0.1.0 - Production on 星期二 4月 28 00:02:40 2015
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    启动 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  system/********@orcl dumpfile=tbs_tts.dmp directory=test_tts_dump transport_tablespaces=tts nologfile=y;
    处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK
    处理对象类型 TRANSPORTABLE_EXPORT/TABLE
    处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
    已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"
    ******************************************************************************
    SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:
      E:DUMPDIRECORYTBS_TTS.DMP
    ******************************************************************************
    可传输表空间 TTS 所需的数据文件:
      G:TESTDATATTS.DBF
    作业 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 已于 00:03:38 成功完成

    1.3 转换字节顺序
    两个平台字节顺序一致,不需要转换

    1.4 复制传输集到目标数据库
    源数据库tts表空间对应的数据文件和expdp生成的该表空间的元数据文件TBS_TTS.DMP
    可传输表空间 TTS 所需的数据文件:
    G:TESTDATATTS.DBF
    转储文件集为:
    E:DUMPDIRECORYTBS_TTS.DMP

    此处将这TBS_TTS.DMP文件上传到目标数据库的/home/oracle/dump_dir/目录
    SQL> select * from dba_directories; --目标数据库的dump_dir如下:
    OWNER DIRECTORY_NAME DIRECTORY_PATH
    ------------------------------ ------------------------------ -----------------------
    SYS DUMP_DIR /home/oracle/dump_dir

    将源数据文件G:TESTDATATTS.DBF上传到目标数据库的/u01/app/oracle/oradata/orcl/目录

    1.5 将源数据库中的表空间tts状态设置为read,write
    SQL> alter tablespace tts read write;

    表空间已更改。

    2、在目标数据库导入表空间集
    2.1 检查源数据库和目标数据库的blocksize
    SQL> select block_size from dba_tablespaces where tablespace_name='TTS'; --源数据库
    BLOCK_SIZE
    ----------
    8192

    SQL> show parameter block_size; --目标数据库

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    db_block_size integer 8192
    SQL>

    两都相同,不需要设置。如果两者不同,则必须设置相关的DB_nK_CACHE_SIZE初始化参数,否则导入时会报错。
    如:ALTER SYSTEM SET DB_8K_CACHE_SIZE=20M;

    2.2 目标数据库上导入源数据

    [oracle@rhel201 VH-share]$ impdp system/rusky dumpfile=TBS_TTS.DMP directory=dump_dir nologfile=y transport_datafiles=/u01/app/oracle/oradata/orcl/TTS.DBF REMAP_SCHEMA=RUSKY2:RUSKY
    
    Import: Release 11.2.0.1.0 - Production on Mon Apr 27 09:37:38 2015
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
    Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  system/******** dumpfile=TBS_TTS.DMP directory=dump_dir nologfile=y transport_datafiles=/u01/app/oracle/oradata/orcl/TTS.DBF REMAP_SCHEMA=RUSKY2:RUSKY 
    Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
    Processing object type TRANSPORTABLE_EXPORT/TABLE
    Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
    Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 09:37:46

    导入命令中的remap_schema=rusky2:rusky是指在源数据库中的用户rusky2,导入到目标数据库中变为rusky。
    因为目标数据库中没有rusky2及rusky用户,所以使用remap_schema来转换。导入完成后新创建的用户rusky需要修改密码,否则无法使用。
    transport_datafiles:被传输表空间对应的数据文件新路径,如果需要指定多个数据文件,相互之间以逗号做分隔。


    2.3 将刚导入的表空间状态置为read write
    alter tablespace tts read write; --在11g,导入的表空间会自动置为read write,10g需要手动修改。

    2.4 修改rusky用户的密码及测试
    SQL> alter user rusky identified by rusky;

    User altered.

    SQL> conn rusky/rusky;
    Connected.

  • 相关阅读:
    eclipse或adt-bundle创建的android项目没有自动生成MainActivity.java和activity_main.xml等文件解决办法
    递归遍历删除注册表项和键值
    注册表:无法打开 XXX 由于某个错误无法打开该密钥。详细信息:拒绝访问
    connot find one or more components. please reinstall the application
    Couldn't load libPassword from loader:NDK开发中C文件编译成cpu对应的so类库时,找不到类库报错的原因之一
    通用组合算法
    Chance – 功能强大的 JavaScript 随机数生成类库
    shell中各种括号的作用()、(())、[]、[[]]、{}
    iftop监控网络流量命令
    Linux—shell中$(( ))、$( )、``与${ }的区别
  • 原文地址:https://www.cnblogs.com/rusking/p/4461888.html
Copyright © 2011-2022 走看看