精华内容
下载资源
问答
  • 使用TTS实现Oracle跨版本迁移

    千次阅读 2018-04-17 13:43:39
    TTS实现数据库迁移,具有速度快、支持平台和跨版本等优点。本文记录了用TTS从10g single迁移到11g RAC的过程。Source数据库版本和字符集设置:SQL> select * from v$version;BANNER-----------------------...
    TTS实现数据库迁移,具有速度快、支持跨平台和跨版本等优点。本文记录了用TTS从10g single迁移到11g RAC的过程。
    
    Source数据库版本和字符集设置:
    
    

    SQL> select * from v$version;

    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    PL/SQL Release 10.2.0.4.0 - Production
    CORE 10.2.0.4.0 Production
    TNS for Linux: Version 10.2.0.4.0 - Production
    NLSRTL Version 10.2.0.4.0 - Production

    SQL> select * from nls_database_parameters where parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

    PARAMETER VALUE
    ------------------------------ ------------------------------
    NLS_CHARACTERSET UTF8
    NLS_NCHAR_CHARACTERSET AL16UTF16

    Target数据库版本和字符集设置:
    
    

    SQL> select * from v$version;

    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    PL/SQL Release 11.2.0.3.0 - Production
    CORE 11.2.0.3.0 Production
    TNS for Linux: Version 11.2.0.3.0 - Production
    NLSRTL Version 11.2.0.3.0 - Production

    SQL> select * from nls_database_parameters where parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

    PARAMETER VALUE
    ------------------------------ --------------------
    NLS_CHARACTERSET AL32UTF8
    NLS_NCHAR_CHARACTERSET AL16UTF16

    1、检测平台差异
    source:
    
    

    SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
    2 FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
    3 WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

    PLATFORM_NAME ENDIAN_FORMAT
    ---------------------------------------- --------------
    Linux x86 64-bit Little

    target:
    
    

    SQL> SELECT d.PLATFORM_NAME, ENDIAN_FORMAT
    2 FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
    3 WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;

    PLATFORM_NAME ENDIAN_FORMAT
    ---------------------------------------- ------------------------------------------
    Linux x86 64-bit Little

    两者并无差异,无需进行平台格式转换。

    2、Tablespace Self-Contained 检测
    进行TTS的表空间必须满足自包含条件,如果不满足,则需要进行调整直至满足才可以进行TTS。
    source:
    SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('tbs_postmall_data,tbs_postmall_idx', TRUE);

    PL/SQL procedure successfully completed.

    SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

    no rows selected


    出现0行,说明满足自包含条件。

    3、Generate a Transportable Tablespace Set
    生成TTS set之前,需要设置相关的表空间为read only模式。
    
    

    SQL> alter tablespace tbs_postmall_data read only;

    Tablespace altered.

    SQL> alter tablespace tbs_postmall_idx read only;

    Tablespace altered.

    生成相关表空间的metadata dumpfile
    
    

    oracle@wls112:/data/oracle/dump> expdp system dumpfile=postmall_metadata.dmp directory=dump 

    transport_tablespaces=tbs_postmall_data,tbs_postmall_idx logfile=tts_export.log;

    Export: Release 10.2.0.4.0 - 64bit Production on Thursday, 14 March, 2013 10:57:34

    Copyright (c) 2003, 2007, Oracle. All rights reserved.
    Password: 

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** dumpfile=postmall_metadata.dmp directory=dump transport_tablespaces=tbs_postmall_data,tbs_postmall_idx logfile=tts_export.log 
    Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
    Processing object type TRANSPORTABLE_EXPORT/TABLE
    Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT
    Processing object type TRANSPORTABLE_EXPORT/INDEX
    Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
    Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/COMMENT
    Processing object type TRANSPORTABLE_EXPORT/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
    Processing object type TRANSPORTABLE_EXPORT/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
    Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
    ******************************************************************************
    Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
    /data/oracle/dump/postmall_metadata.dmp
    Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 10:57:51


    4、Transport the Tablespace Set
    把第三步生成的metadata dumpfile和相关表空间的datafile传输到target端。其中dumpfile传输到目标端的一个directory中,datafile则传送到一个临时目录(target为ASM存储)或者目标数据库的datafile目录(target为文件系统存储)。
    
    

    oracle@wls112:/data/oracle/dump> scp postmall_metadata.dmp 172.24.138.101:/data/oracle/dump/
    Password: 
    postmall_metadata.dmp 100% 260KB 260.0KB/s 00:00 
    oracle@wls112:/data/oracle/dump> cd ../oradata/postmall/
    oracle@wls112:/data/oracle/oradata/postmall> scp tbs_postmall_* 172.24.138.101:/data/oracle/dump/

    Password: 
    tbs_postmall_data01.dbf 100% 5120MB 33.0MB/s 02:35 
    tbs_postmall_data02.dbf 100% 5120MB 28.1MB/s 03:02 
    tbs_postmall_idx01.dbf 100% 5120MB 25.9MB/s 03:18 


    5、在目标端将datafile从文件系统传输至ASM中
    不能直接用asm的cp命令来进行简单的复制,而需要用RMAN中的convert datafile功能来传输datafile
    
    

    oracle@postmallrac1:/data/oracle/dump> ls -l
    total 15744801
    -rw-r--r-- 1 oracle asmadmin 1216 2013-03-14 09:53 import.log
    -rw-r----- 1 oracle oinstall 266240 2013-03-14 11:11 postmall_metadata.dmp
    -rw-r----- 1 oracle oinstall 520192 2013-03-13 12:06 postmall_user.dmp
    -rw-r----- 1 oracle oinstall 5368717312 2013-03-14 11:14 tbs_postmall_data01.dbf
    -rw-r----- 1 oracle oinstall 5368717312 2013-03-14 11:17 tbs_postmall_data02.dbf
    -rw-r----- 1 oracle oinstall 5368717312 2013-03-14 11:21 tbs_postmall_idx01.dbf
    -rw-r--r-- 1 oracle asmadmin 1582 2013-03-14 09:51 tts_import.log

    用RMAN进行convert datafile
    
    


    oracle@postmallrac1:/data/oracle/dump> rman target /

    Recovery Manager: Release 11.2.0.3.0 - Production on Thu Mar 14 11:26:51 2013

    Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

    connected to target database: POSTMALL (DBID=3816065011)

    RMAN> convert DATAFILE '/data/oracle/dump/tbs_postmall_data01.dbf'
    2> db_file_name_convert="/data/oracle/dump/tbs_postmall_data01.dbf","+DATA";

    Starting conversion at target at 2013-03-14 11:27:22
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=1155 instance=postmall1 device type=DISK
    channel ORA_DISK_1: starting datafile conversion
    input file name=/data/oracle/dump/tbs_postmall_data01.dbf
    converted datafile=+DATA/postmall/datafile/tbs_postmall_data.274.810041245
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:02:25
    Finished conversion at target at 2013-03-14 11:29:50

    RMAN> convert DATAFILE '/data/oracle/dump/tbs_postmall_data02.dbf'
    2> db_file_name_convert="/data/oracle/dump/tbs_postmall_data02.dbf","+DATA";

    Starting conversion at target at 2013-03-14 11:30:21
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting datafile conversion
    input file name=/data/oracle/dump/tbs_postmall_data02.dbf
    converted datafile=+DATA/postmall/datafile/tbs_postmall_data.275.810041421
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:02:45
    Finished conversion at target at 2013-03-14 11:33:06

    RMAN> convert DATAFILE '/data/oracle/dump/tbs_postmall_idx01.dbf'
    2> db_file_name_convert="/data/oracle/dump/tbs_postmall_idx01.dbf","+DATA";

    Starting conversion at target at 2013-03-14 12:19:58
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting datafile conversion
    input file name=/data/oracle/dump/tbs_postmall_idx01.dbf
    converted datafile=+DATA/postmall/datafile/tbs_postmall_idx.273.810044399
    channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:02:35
    Finished conversion at target at 2013-03-14 12:22:33

    在asmcmd里可以看到添加进去的datafile
    
    

    ASMCMD> ls -l
    Type Redund Striped Time Sys Name
    DATAFILE UNPROT COARSE FEB 25 15:00:00 Y EXAMPLE.264.807814653
    DATAFILE UNPROT COARSE MAR 13 21:00:00 Y SYSAUX.257.807814555
    DATAFILE UNPROT COARSE FEB 25 15:00:00 Y SYSTEM.256.807814555
    DATAFILE UNPROT COARSE FEB 25 15:00:00 Y TBS_OGG.272.808070095
    DATAFILE UNPROT COARSE MAR 14 11:00:00 Y TBS_POSTMALL_DATA.274.810041245
    DATAFILE UNPROT COARSE MAR 14 11:00:00 Y TBS_POSTMALL_DATA.275.810041421
    DATAFILE UNPROT COARSE MAR 14 12:00:00 Y TBS_POSTMALL_IDX.273.810044399
    DATAFILE UNPROT COARSE FEB 25 15:00:00 Y TBS_ULECARD_DATA.270.807903909
    DATAFILE UNPROT COARSE FEB 25 15:00:00 Y TBS_ULECARD_IDX.271.807903973
    DATAFILE UNPROT COARSE FEB 25 15:00:00 Y UNDOTBS1.258.807814557
    DATAFILE UNPROT COARSE MAR 13 22:00:00 Y UNDOTBS2.265.807814821
    DATAFILE UNPROT COARSE FEB 25 15:00:00 Y USERS.259.807814557


    6、Import the Tablespace Set

    导入表空间之前,先把用户创建好。
    SQL> create user postmall_user identified by postmall_pwd account unlock;
    SQL> grant connect,resource,dba to postmall_user;
    SQL> exit
    oracle@postmallrac1:/data/oracle/dump> impdp system dumpfile=postmall_metadata.dmp directory=dump

    logfile=tts_import.log;

    Import: Release 11.2.0.3.0 - Production on Thu Mar 14 13:23:07 2013

    Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
    Password:

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Real Application Clusters, Automatic Storage Management, 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=postmall_metadata.dmp directory=dump transport_datafiles=+data/postmall/datafile/TBS_POSTMALL_DATA.274.810041245,+data/postmall/datafile/TBS_POSTMALL_DATA.275.810041421,+data/postmall/datafile/TBS_POSTMALL_IDX.273.810044399 logfile=tts_import.log
    Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
    Processing object type TRANSPORTABLE_EXPORT/TABLE
    Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT
    Processing object type TRANSPORTABLE_EXPORT/INDEX
    Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
    Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/COMMENT
    Processing object type TRANSPORTABLE_EXPORT/INDEX/FUNCTIONAL_AND_BITMAP/INDEX
    Processing object type TRANSPORTABLE_EXPORT/INDEX/STATISTICS/FUNCTIONAL_AND_BITMAP/INDEX_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
    Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
    Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 13:23:43

    7、导入用户的其他object
    因为system表空无法进行TTS,所以postmall_user在system表空间的object,比如sequences、PL/SQL packages等就没法通过TTS来迁移。所以到了最后,还需要用Data Pump把其他object给迁移过来。
    source端:
    oracle@wls112:/data/oracle/dump>  expdp system directory=dump schemas=postmall_user  dumpfile=postmall_user.dmp;

    Export: Release 10.2.0.4.0 - 64bit Production on Thursday, 14 March, 2013 13:34:16

    Copyright (c) 2003, 2007, Oracle. All rights reserved.
    Password:

    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    FLASHBACK automatically enabled to preserve database integrity.
    Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** directory=dump schemas=postmall_user exclude=table,index dumpfile=postmall_user.dmp
    Estimate in progress using BLOCKS method...
    Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
    Total estimation using BLOCKS method: 0 KB
    Processing object type SCHEMA_EXPORT/USER
    Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
    Processing object type SCHEMA_EXPORT/ROLE_GRANT
    Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
    Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
    Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
    Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
    Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
    ******************************************************************************
    Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
    /data/oracle/dump/postmall_user.dmp
    Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 13:34:35
    传送到target端,在target端导入:
    
    

    oracle@postmallrac1:/data/oracle/dump> impdp system dumpfile=postmall_user.dmp directory=dump logfile=user_import.log

    Import: Release 11.2.0.3.0 - Production on Thu Mar 14 13:36:46 2013

    Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
    Password: 

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
    Data Mining and Real Application Testing options
    Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
    Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** dumpfile=postmall_user.dmp directory=dump logfile=user_import.log 
    Processing object type SCHEMA_EXPORT/USER
    ORA-31684: Object type USER:"POSTMALL_USER" already exists
    Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
    Processing object type SCHEMA_EXPORT/ROLE_GRANT
    Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
    Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
    Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
    Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
    Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
    ORA-39082: Object type ALTER_PROCEDURE:"POSTMALL_USER"."UPDATE_0124" created with compilation warnings
    Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 2 error(s) at 13:36:57

    导入的时候,出现了两个错误,第一个"ORA-31684"是因为用户已经存在了,无需再导入。第二个错误"ORA-39082"是因为有个procedure编译告警,这个procedure已经废弃,无需理会。
    用户postmall_user虽然已经创建,但是还需要手动修改该用户的default tablespace为新导入的TBS_POSTMALL_DATA
    SQL> alter user postmall_user default tablespace tbs_postmall_data;
    User altered.

    8、检验数据
    source端
    SQL> show user
    USER is "POSTMALL_USER"
    SQL> select object_name,object_type,status from user_objects;

    OBJECT_NAME OBJECT_TYPE STATUS
    ---------------------------------------- -------------------- -------
    ORDER_LOTTERY TABLE VALID
    PRIZE_RECORD TABLE VALID
    IDX_OL_LOTTERY_TERM_END INDEX VALID
    IDX_ORDER_LOTTERY_STATUS INDEX VALID
    IDX_OL_LOTTERY_ONLYID_END INDEX VALID
    IDX_LOTTERY_NO INDEX VALID
    IDX_OL_ESCORDERID INDEX VALID
    IDX_OL_USR_PHONE_TYPE INDEX VALID
    PK_PRIZE_RECORD INDEX VALID
    IDX_PR_MOBILE INDEX VALID
    IDX_PR_UCNO INDEX VALID
    IDX_PR_CREATE_DESC INDEX VALID
    PK_T1 INDEX VALID
    T1 TABLE VALID
    UPDATE_0124 PROCEDURE INVALID
    PK_ORDER_LOTTERY INDEX VALID
    EMPLOYEES TABLE VALID
    PK_EMPLOYEES INDEX VALID
    IDX_EMPLOYEES_EMAIL INDEX VALID
    CREATE_INDEX_CCLR PROCEDURE VALID

    20 rows selected.

    SQL> select count(*) from ORDER_LOTTERY;

    COUNT(*)
    ----------
    33330240

    SQL> select count(*) from PRIZE_RECORD;

    COUNT(*)
    ----------
    111660

    SQL> select count(*) from T1;

    COUNT(*)
    ----------
    2549760

    SQL> select count(*) from employees;

    COUNT(*)
    ----------
    123

    SQL> select EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL FROM EMPLOYEES WHERE EMPLOYEE_ID<=10;

    EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL
    ----------- -------------------- ------------------------- -------------------------
    1 杰森 伯恩 124@gmail.com
    2 勒布朗 詹姆斯 124@gmail.com
    3 科比 布莱恩特 124@gmail.com
    4 沙克 奥尼尔 124@gmail.com
    5 蒂姆 邓肯 124@gmail.com
    6 迈克尔 乔丹 124@gmail.com
    7 摩西 马龙 124@gmail.com
    8 乔治 布什 124@gmail.com
    9 hello baby 124@gmail.com
    10 jay 刘杰 124@gmail.com

    10 rows selected.
    target端:
    
    

    SQL> show user
    USER is "POSTMALL_USER"
    SQL> select object_name,object_type,status from user_objects;

    OBJECT_NAME OBJECT_TYPE STATUS
    ---------------------------------------- -------------------- ---------------------
    UPDATE_0124 PROCEDURE INVALID
    CREATE_INDEX_CCLR PROCEDURE VALID
    IDX_PR_CREATE_DESC INDEX VALID
    PK_T1 INDEX VALID
    IDX_EMPLOYEES_EMAIL INDEX VALID
    PK_EMPLOYEES INDEX VALID
    IDX_PR_UCNO INDEX VALID
    IDX_PR_MOBILE INDEX VALID
    PK_PRIZE_RECORD INDEX VALID
    IDX_OL_USR_PHONE_TYPE INDEX VALID
    IDX_OL_ESCORDERID INDEX VALID
    IDX_LOTTERY_NO INDEX VALID
    IDX_OL_LOTTERY_ONLYID_END INDEX VALID
    IDX_ORDER_LOTTERY_STATUS INDEX VALID
    IDX_OL_LOTTERY_TERM_END INDEX VALID
    PK_ORDER_LOTTERY INDEX VALID
    T1 TABLE VALID
    EMPLOYEES TABLE VALID
    PRIZE_RECORD TABLE VALID
    ORDER_LOTTERY TABLE VALID

    20 rows selected.

    SQL> select count(*) from ORDER_LOTTERY;

    COUNT(*)
    ----------
    33330240


    SQL> select count(*) from PRIZE_RECORD;

    COUNT(*)
    ----------
    111660

    SQL> select count(*) from T1;

    COUNT(*)
    ----------
    2549760

    SQL> select count(*) from employees;

    COUNT(*)
    ----------
    123

    SQL> select EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL FROM EMPLOYEES WHERE EMPLOYEE_ID<=10;

    EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL
    ----------- ---------- ---------- ---------------
    1 杰森 伯恩 124@gmail.com
    2 勒布朗 詹姆斯 124@gmail.com
    3 科比 布莱恩特 124@gmail.com
    4 沙克 奥尼尔 124@gmail.com
    5 蒂姆 邓肯 124@gmail.com
    6 迈克尔 乔丹 124@gmail.com
    7 摩西 马龙 124@gmail.com
    8 乔治 布什 124@gmail.com
    9 hello baby 124@gmail.com
    10 jay 刘杰 124@gmail.com

    10 rows selected.

    数据均一致,中文也没有出现乱码。数据库迁移成功。

    小结:
    一、两边数据库的字符集(包括NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET)最好完全一样,如果不一样,也要保证source端的字符集是target端的字符集的真子集,还要加上一些限制,具体可以参考官方文档的说明。
    二、在source端生成和传送TTS Set之前必须要设置相关表空间为read only模式。
    三、如果从filesystem→filesystem,直接把datafile传输到目标数据库的datafile路径即可。如果从filesystem→asm,则需要多一RMAN的convert datafile操作。如果是asm→asm则还没进行测试。
    展开全文
  • 本文介绍了将v4平台可传输表空间(xtts)与rman增量备份结合使用所需的步骤, 以最少的应用程序停机时间迁移数据。 ###########################...

    本文介绍了将v4跨平台可传输表空间(xtts)与rman增量备份结合使用所需的步骤,

    以最少的应用程序停机时间迁移数据。

    #################################################

    希望本文能对您有所帮助,如需脚本,请留言,谢谢您的关住和支持

    #################################################


    首先是将完整备份从源复制到目标。

    然后,通过使用一系列增量备份(每个备份都小于最后一个备份),

    在需要任何停机时间之前,可以将目标系统中的数据几乎与源系统同步。

    此过程仅在最终增量备份和元数据导出/导入期间需要停机时间。


    本文档描述了可与11.2.0.4及更高版本一起使用的跨平台增量备份v4过程。

    这个新过程是先前XTTS版本的简化版本。

    此版本有以下区别:

    I.此过程使用简化的命令。一个命令(--backup)用于源,一个命令(--restore)用于目标。

    //原来要-p,-c,-i,-r,-s等一系列华丽的操作,现在只要2个参数

    II.此过程只需要在源和目标的$tmpdir(res.txt)之间复制一个文件。

    III.此过程将自动解析添加的数据文件,无需额外干预。

    IV.此过程允许在不运行恢复的情况下从源中取出多个增量备份。在此之后,将立即恢复目标中的所有增量备份。


    1-初始设置

    执行以下步骤配置环境以使用跨平台增量备份:

    1.1-安装目标数据库软件并创建目标数据库

    在将运行目标数据库的目标系统上安装所需的Oracle数据库软件。

    在目标系统上标识(或创建)一个数据库,以便将表空间传输到其中,

    并创建表空间传输所需的模式用户。 即,在所传输的表空间中拥有对象的用户。


    1.2-标识要传输的表空间

    标识要传输的源数据库中的表空间。

    表空间ts1和ts2将在本文档的示例中使用。

    如上所述,必须遵循可传输表空间的限制和注意事项。

    1.3-在源系统上安装XttConvert脚本

    在源系统上,作为Oracle软件的所有者,

    下载并提取作为rman-xttconvert-ver4.zip附加到本文档的支持脚本。

    [oracle@kingsql]$ pwd

    /home/oracle/xttv4


    [oracle@kingsql]$ unzip rman_xttconvert_VER4.zip

    inflating: xtt.properties

    inflating: xttcnvrtbkupdest.sql

    inflating: xttdbopen.sql

    inflating: xttdriver.pl

    inflating: xttprep.tmpl

    extracting: xttstartupnomount.sql


    1.4-创建必要的目录

    源端:

    由xtt.properties文件中的src_scratch_location参数定义的备份位置。


    目标端:

    由xtt.properties文件中的dest_scratch_location参数定义的备份位置。

    目标上数据文件的位置,由xtt.properties文件中的dest_datafile_location参数定义。


    1.5-在源系统上配置xtt.properties

    使用特定于站点的配置编辑源系统上的xtt.properties文件。

    有关xtt.properties文件中参数的详细信息,

    请参阅下面附录中配置文件xtt.properties部分中的参数说明。

    对于此过程,只有以下参数是必需的。其他可供选择和/或使用。

    tablespaces

    platformid

    src_scratch_location

    dest_scratch_location

    dest_datafile_location

    (12c特殊添加) -- usermantransport=1

    1.6-将xttconvert脚本和xtt.properties复制到目标系统

    [oracle@kingsql]$ scp -r /home/oracle/xttv4 oracle@destsql:/home/oracle/xttv4


    1.7-设置TMPDIR环境变量

    [oracle@kingsql]$ export TMPDIR=/home/oracle/xttv4

    [oracle@destsql]$ export TMPDIR=/home/oracle/xttv4


    2.-准备阶段

    在准备阶段,将要传输的表空间的数据文件备份到源上,

    备份传输到目标系统,并由xttdriver.pl脚本还原。


    2.1-在源系统上运行备份

    在源系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向源数据库,

    按如下方式运行备份:

    [oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


    2.2-将以下文件传输到目标系统:

    从源“src-scratch-location”到目标目标“scratch-location”创建的备份

    从源$tmpdir到目标$tmpdir的res.txt文件:

    [oracle@kingsql]$ scp /src_scratch/* oracle@destsql:/dest_scratch

    [oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


    2.3-还原目标系统上的数据文件

    在目标系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向目标数据库,

    按如下方式运行还原:

    [oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


    3-前滚阶段

    在此阶段,将从源数据库创建增量备份,传输到目标系统,转换为目标系统endian格式,

    然后将其应用到转换后的目标数据文件副本以进行前滚。 此阶段可以运行多次。

    每一次连续的增量备份所需的时间应少于先前的增量备份所需的时间,

    并将使目标数据文件副本在源数据库中更为新。

    在这个阶段,正在传输的数据(源)是完全可访问的。

    3.1-为源系统上正在传输的表空间创建增量备份

    在源系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向源数据库,

    运行如下创建增量步骤:

    [oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


    此步骤将为xtt.properties中列出的所有表空间创建增量备份。


    3.2-将增量备份和res.txt传输到目标系统

    将增量备份(在src-scratch-location和dest-scratch-location之间)和res.txt(在$tmpdirs之间)

    从源传输到目标。当前备份的增量备份文件列表可以是在源系统的incrbacks.txt文件中找到。

    [oracle@kingsql]$ scp `cat incrbackups.txt` oracle@destsql:/dest_scratch_location

    [oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


    3.3-对目标系统上的数据文件副本应用增量备份

    在目标系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向目标数据库,

    按如下所示运行前滚数据文件步骤:

    [oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


    前滚步骤连接到目标数据库,并为所传输的每个表空间在表空间的数据文件上应用增量备份。

    尽管可以对源执行多个备份而不在目标上应用,但是必须在上次备份之后和在目标上执行“--restore”之前复制res.txt。


    3.4-重复前滚第3阶段(3.1-3.3)或继续第4阶段,最终增量备份

    此时有两种选择:

    如果需要使目标数据库中的文件与生产系统更接近同步,则从步骤3.1开始,重复前滚阶段。

    如果目标数据库中的文件与源数据库的距离尽可能接近,则继续到传输阶段。


    4-最终增量备份

    在此阶段,通过创建和应用最终增量备份,将源数据设为只读,并使目标数据文件与源数据库保持一致。

    在目标数据文件保持一致之后,将执行常规的可传输表空间步骤,

    从源数据库导出对象元数据并将其导入目标数据库。

    在本阶段结束之前,只能以只读模式访问正在传输的数据。


    4.1-将源数据库中的源表空间更改为只读

    在源系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向源数据库,

    将要传输的表空间更改为只读。

    SQL> alter tablespace TS1 read only;

    SQL> alter tablespace TS2 read only;


    4.2-创建正在源系统上传输的表空间的最终增量备份:

    在源系统上,以Oracle用户身份登录,环境 (ORACLE_HOME和ORACLE_SID环境变量) 指向源数据库,

    按如下方式运行备份:

    [oracle@kingsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup


    注意:由于表空间处于只读模式,因此可以忽略收到的以下警告:

    ####################################################################
    Warning:
    ------
    Warnings found in executing /home/oracle/radranly/convert_source/backup_Nov9_Fri_09_08_26_213//xttpreparenextiter.sql
    ####################################################################
    Prepare newscn for Tablespaces: 'T1'
    DECLARE*
    ERROR at line 1:
    ORA-20001: TABLESPACE(S) IS READONLY OR,
    OFFLINE JUST CONVERT, COPY
    ORA-06512: at line 284  


    4.3-将增量备份和res.txt传输到目标系统

    [oracle@kingsql]$ scp 'cat incrbackups.txt' oracle@destsql:/dest_scratch_location

    [oracle@kingsql]$ scp res.txt oracle@destsql:/home/oracle/xttv4


    4.4-将上次增量备份应用于目标数据文件

    最终增量备份必须应用于目标数据文件,此步骤将对目标上的数据文件应用最后一次增量备份。

    [oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore


    5-传输阶段:将对象元数据导入目标数据库

    在这个阶段,您需要从源中导出表空间的元数据,并将表空间插入到目标中。

    5.1-目标库创建目录对象

    SQL> create directory hzh as '/home/oracle/destination/convert';

    SQL> GRANT READ, WRITE ON DIRECTORY hzh TO system;


    5.2-导入生成新的xttplugin.txt

    在目标系统上,以Oracle用户身份登录,环境(ORACLE_HOME和ORACLE_SID环境变量)指向目标数据库,

    运行generate data pump tts命令步骤,如下所示:

    [oracle@destsql]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -e


    这将在xttplugin.txt文件中生成一个示例命令,

    并正确设置transportable tablespaces参数“transport_tablespaces”和“transport_datafiles”。

    此外,还将创建一个数据泵导出文件。


    5.3-在目标数据库上创建数据库链接

    连接到目标数据库,创建连接到源数据库的数据库链接

    SQL> create public database link ttslink connect to system identified by hongzhuohui using 'kingsql';

    验证数据库链接是否可以正确访问源系统

    SQL>  select name from v$database@ttslink;


    5.4-修改并执行IMPDP命令:

    [oracle@dest]$ impdp directory=hzh logfile=tts_imp.log network_link=ttslink \ 

    transport_full_check=no \ 

    transport_tablespaces=TS1,TS2 \ 

    transport_datafiles='+DATA/prod/datafile/ts1.285.771686721', \ 

    '+DATA/prod/datafile/ts2.286.771686723', \ 

    '+DATA/prod/datafile/ts2.287.771686743' 


    6 -验证数据

    6.1-检查表空间

    在此步骤中,传输的数据在目标数据库中是只读的。执行特定于应用程序的验证以验证传输的数据。

    RMAN> validate tablespace TS1, TS2 check logical;


    6.2-更改目标数据库中的表空间读写

    最后一步是使目标表空间在目标数据库中读写。

    SQL> alter tablespace TS1 read write; 

    SQL> alter tablespace TS2 read write; 


    7 - 清理环境

    源端:src_scratch

    目标端:dest_scratch

    源端和目标端

    $TMPDIR


    转载请注明出处

    hongzhuohui@qq.com

    本来好几年没有更新博客了,最近我的学生们都在勤劳的写博客,所以带动了我。。

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

    我曾发现有写网站直接拷贝粘贴,连图片都能复制,请把作者也加上谢谢O(∩_∩)O

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


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28389881/viewspace-2629881/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/28389881/viewspace-2629881/

    展开全文
  • Oracle跨平台迁移

    2019-04-01 17:46:47
    oracle迁移跨平台的4种方式,数据泵,tts,xtts,ogg
  • 本套课程介绍了一些常见的Oracle数据迁移场景,数据迁移在实际工作中经常会遇到,课程中介绍了系统跨版本数据迁移方法、TTS、TDB、FTE、单机到RAC-ASM等迁移方法,通过本套课程的学习,能够根据业务场景选择合适的...
  • Oracle跨平台迁移技术详解,文档详细概述了oracle与oracle不同版本之间,oracle与不同异构数据库直接跨平台迁移技术详细解说,一书在手,数据库迁移不是问题!
  • Oracle跨平台迁移之XTTS

    千次阅读 2021-03-07 14:00:52
    Oracle迁移前环境检查 xtts相关限制 xtts迁移步骤 迁移完成检查与校验 问题处理

    1.环境检查及参数设置

    Oracle迁移前环境检查
    xtts相关限制
    图片来自于网络

    2.源端安装XTTS

    建议使用3.0版本,该版本修改了2.0的一些bug,使用更加傻瓜化。
    操作系统语言环境必需为英文。否则XTTS无法识别RMAN的输出结果!!!造成tsbkupmap .txt和incrbackups.txt 文件内容为空。
    本文适用于2.0和3.0版本
    XTTS迁移数据有dblink和rman两种方式,本文采用的是rman的迁移方式。dblink的方式对于生产环境有较大影响,不推荐使用。

    将安装文件解压至目录,并赋权。

    unzip rman_xtts_2.0.zip

    chown -R oracle:oinstall  xtts

    chmod 777 xtts


    mkidr -p /backup/data

    chown -R oracle:oinstall /backup

    chmod 777 /backup
    

    修改配置文件 xtt.properties

    tablespaces=TEST01,TEST02,TEST03  ##要导出的表空间,不能换行。

    platformid=6
dfcopydir=/backup/data   ##源端文件存储目录
    
backupformat=/backup/data  ##源端增量文件存储目录
    
stageondest=/backup/data  ##目标文件存储目录

    storageondest=+DATA/db/datafile   ##目标端数据文件文件存储目录

    backupondest=/backup/data

    cnvinst_home=/oracle/app/oracle/product/ll.2.0/db_1  ##目标GRID目录 

    cnvinst_sid=+ASM1  ##目标ASM实例名
    
parallel=4
 ##源库导出并行度,受RMAN配置影响
    rollparallel=2
 ##增量并行度
    getfileparallel=4
    

    3.源端数据文件导出

    nohup $ORACLE_HHOME/perl/bin/perl xttdriver.pl -p &
    

    该阶段产生xttplan.txt和rmancovert.cmd两个文件。在4步骤,只需要rmancovert.cmd文件。

    4.目标端转换数据文件

    将xtts和backup复制到目标端

    如果采用nfs挂载的方式,需要注意挂载参数

    ORA-27054: NFS file system where the file is created or resides is not
    mounted with correct options

    mount -t nfs -o rw,hard,nointr,tcp,noac,rsize=65536,wsize=65536
    192.168.1.8:/data /backup

    5.在源端创建增量备份,并传输到目标端;

    nohup $ORACLE_HHOME/perl/bin/perl xttdriver.pl -i &
    

    该阶段生成tsbkupmap.txt,incrbackups.txt,xttplan.txt三个文件,在6步骤中全部需要。

    6.在目标端恢复增量备份

    nohup $ORACLE_HHOME/perl/bin/perl xttdriver.pl -r &

    7.重复多次操作5和6步骤

    如果进行多次增量,则需要修改文件存储目录backupformat,避免被覆盖。

    8.将源端数据库表空间设置为 READ ONLY

    alter database   TABLESPACE_NAME  read only;
    

    修改参数前需要先确认业务停止,并终止连接。必要可先重启数据库。

    9.最后一次执行5和6步骤

    10.在源端导出用户信息

    ---获取用户创建语句select dbms_metadata.get_ddl('USER','username') "USER" from dual;----授权select dbms_metadata.get_granted_ddl('SYSTEM_GRANT','username') from dual;---角色select dbms_metadata.get_granted_ddl('ROLE_GRANT','username') from dual;
    

    11.在目标端创建相关用户并赋权

    最好授予DBA权限,防止在导入时权限不足造成失败。迁移完成后再回收DBA权限。

    12.在源端导出元数据,并在目标端导入

    在目标端创建执行文件

    $ORACLE_HHOME/perl/bin/perl xttdriver.pl -e
    

    在目标端创建监听

    vi tnsnames.ora
    
    TESTDB =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = TESTDB)))
    

    在目标端创建DBLINK

    create public database link xtt_link connect to system identified by ***** using 'TESTDB';
    

    注意:DBLINK存在SCN漏洞,如果源库SCN已经很高,则不建议用DBLINK方式。

    第一次导入源数据,目标端执行(不会导入存储过程,视图,包等)

    impdp \"\/as sysdba \" directory=dump_oradata nologfile=y \

    network_link=xtt_link  \

    transport_full_check=no \

    transport_tablespaces=TEST01,TEST02 exclude=statistics \ transport_datafiles='+DATA/db/datafile/test01_1.dbf','+DATA/db/datafile/test02_1.dbf'
    

    第二次导入源数据

    impdp \"\/as sysdba \" directory=dump_oradata nologfile=y \
    
network_link=xtt_link  \

    schemas='TEST01,TEST02' content=metadata \ 

    exclude=table,index,statistics  paraller=8
    

    Public DBLINK通常无法通过schema模式导出,需要单独导出。

    impdp \"\/ as sysdba \" directory=backup_test log=db_imp.log full=y includ=DB_LINK:\"IN\'TEXTLK\'\"
    

    将目标端的数据库表空间设置为 READ WRITE。(如果迁移后原数据库继续使用,还需要将原数据库表空间设置为 READ WRITE)

    alter database TABLESPACE_NAME  read write;
    

    13.数据验证及用户信息修改

    临时表、物化视图有时无法迁移成功,需要手工创建。

    1).验证数据文件

    RMAN> validate tablespace TEST01,TEST02,TEST03 check logical;
    

    2).验证数据信息
    对象数

    select owner,object_type,status,count(*) 
    from dba_objects 
    group by owner,object_type,status 
    order by 1,2,3,4;
    

    用户数

    select username,default_tablespace,tempary_tablespace 
    from dba_users;
    

    对象状态

    select obejct_name,object_type,owner 
    from dba_objects 
    where status <>'INVALID';
    

    3).将用户默认表空间修改如源库
    4).重新为用户赋权

    注意:开始为迁移用户授予DBA权限有助于迁移,但回收DBA权限时,可能会同时回收其他权限(如unlimited
    tablesapce),所以最好再全部授权一次。

    5).编译无效对象

    @$ORACLE_HOME/rdbms/admin/utlrp.sql
    

    ##如果存在组件失效,如XDB,可重新编译字典(编译前后建议重启数据库)

    SQL>shutdown immediate
    SQL>startup
    SQL> @?/rdbms/admin/catalog.sql
    SQL> @?/rdbms/admin/catproc.sql
    SQL> @?/rdbms/admin/utlrp.sql
    SQL>shutdown immediate
    SQL>startup
    

    14.统计信息收集

    全库收集统计信息

    exec 
dbms_stats.gather_database_stats; 
    

    15.业务验证

    生产环境必须业务验证没有问题才能算迁移结束。

    展开全文
  • Oracle跨平台跨版本数据迁移实战视频教程 Oracle OCM顶级认证,...

    扫码下载「CSDN程序员学院APP」,1000+技术好课免费看

    APP订阅课程,领取优惠,最少立减5元 ↓↓↓

    订阅后:请点击此处观看视频课程

     

    视频教程-Oracle跨平台跨版本数据迁移实战视频教程-Oracle

    学习有效期:永久观看

    学习时长:191分钟

    学习计划:4天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:黄知茂

    架构师

    讲师介绍:Oracle OCM顶级认证,PMP项目管理师,10余年工作经验,先后担任过Oracle DBA,JAVA软件工程师,大数据开发工程师等岗位。

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    本套课程介绍了一些常见的Oracle数据迁移场景,数据迁移在实际工作中经常会遇到,课程中介绍了跨系统跨版本数据迁移方法、TTS、TDB、FTE、单机到RAC-ASM等迁移方法,通过本套课程的学习,能够根据业务场景选择合适的数据迁移技术。

     

    「课程学习目录」

    1.数据迁移课程概述
    2.跨平台跨版本数据迁移-1
    3.跨平台跨版本数据迁移-2
    4.跨平台跨版本数据迁移-3
    5.跨平台跨版本数据迁移-4
    6.TTS传输表空间-1
    7.TTS传输表空间-2
    8.TDB传输数据库
    9.TTS传输表空间HPUX到Linux
    10.TTS和TDB数据迁移总结
    11.FTE完全传输导出
    12.单机到RAC-ASM环境数据迁移-1
    13.单机到RAC-ASM环境数据迁移-2

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,4天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握Oracle知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    掌握数据迁移方法

    各种场景解决方案

     

    展开全文
  • oracle跨平台迁移 跨平台迁移毫无问题的方法(Windows-UNIX)Oracle 10 \ 11g 跨平台可移植数据库的主要限制是源平台和目标平台必须共享相同的字节序格式。 源数据库中的重做日志文件和控制文件不会传输到目标...
  • oracle 平台迁移数据

    2010-12-19 17:05:48
    在不同平台间,对oracle数据库进行迁移
  • oracle跨平台迁移

    2018-05-15 10:37:33
    select * from v$transportable_platform order by 2; convert database to platform 'Linux IA (64-bit)' format 'C:\app\orcl\%U'; 转载于:https://blog.51cto.com/junhai/2116441
  • 操作平台版本 主host1:Microsoft Windows x86 64-bit 副host2:Linux x86 64-bit  SQL> select * from v$version; BANNER -------------------------------------------------------------------------...
  • oracle跨平台数据迁移

    2015-01-16 00:15:05
    oracle跨平台数据迁移,convert,rman

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,557
精华内容 6,622
关键字:

oracle跨版本迁移