重庆思庄Oracle、Redhat认证学习论坛

标题: oracle 12c 新特性 Full Transportable Export/Import [打印本页]

作者: 郑全    时间: 2019-11-8 12:07
标题: oracle 12c 新特性 Full Transportable Export/Import
本帖最后由 郑全 于 2019-11-8 12:10 编辑

在12c以前,如果要把一个库快速的迁移到另一个平台,一般是使用 exp full=y,但exp full=y 太慢,也可以使用 exp 传输表空间,但exp 传输表空间需要手工去处理用户原数据,比较麻烦
从12c开始,提供了一个新功能,Full Transportable Export/Import  ,结合了 exp full=y和 传输表空间的功能,可以跨平台,也可以跨字节位,只是,要求源端版本至少为 11.2.0.3以上版本,
同时,目标端版本至少为12c以上版本。

下面通过一个实验来验证该功能:

1.环境
   源端:windows 10 +12.1.0.2   nocdb orcl
   目的端:centos 7.6 +12.1.0.2  cdb pd1


2.准备一点数据
   2.1 新建一个表空间
   create tablespace tsp_hr datafile 'D:\ORACLE\ORADATA\ORCL\TSP_HR01.DBF' size 10m;
   2.2 新建用户
   create user hr1 identified by hr1
      default tablespace tsp_hr
      quota unlimited on tsp_hr;

   grant connect,resource to hr1;
   grant create tablespace to hr1;
   2.3 准备验证数据
   SQL> conn hr1/hr1
   已连接。
   SQL> select * from tabs;
   未选定行
    SQL> create table bigtab tablespace tsp_hr as select * from all_tables;
    表已创建。
    SQL> create sequence seq_bigtab ;
    序列已创建。

3.创建导出目录
   create directory tts as 'd:\oracle';

4.设置除系统外的表空间只读
   SQL> alter tablespace example read only;
   SQL> alter tablespace users read only;
   SQL> alter tablespace tsp_hr read only;

   SQL> select tablespace_name ,status from dba_tablespaces;
   TABLESPACE_NAME                                              STATUS
   ------------------------------------------------------------ ------------------
   SYSTEM                                                        ONLINE
   SYSAUX                                                        ONLINE
   UNDOTBS1                                                   ONLINE
   TEMP                                                           ONLINE
   USERS                                                         READ ONLY
   EXAMPLE                                                     READ ONLY
   TSP_HR                                                       READ ONLY


5.字节位变换
  windows和linux字节位相同,不需要转换

6.启动full transportable tablespace导出,如果源数据库是11gR2,还需要指定 VERSION=12参数
  C:\Users\laozheng>expdp system/oracle_4U directory=tts dumpfile=full-tsp.dmp transportable=always full=y logfile=exp.log


  Export: Release 12.1.0.2.0 - Production on 星期五 11月 8 11:01:47 2019
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
连接到: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
启动 "SYSTEM"."SYS_EXPORT_FULL_01":  system/******** directory=tts dumpfile=full-tsp.dmp transportable=always full=y logfile=exp.log
正在使用 BLOCKS 方法进行估计...
处理对象类型 DATABASE_EXPORT/PLUGTS_FULL/FULL/PLUGTS_TABLESPACE
处理对象类型 DATABASE_EXPORT/PLUGTS_FULL/PLUGTS_BLK
处理对象类型 DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
处理对象类型 DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
处理对象类型 DATABASE_EXPORT/NORMAL_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA
处理对象类型 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 8.328 MB
处理对象类型 DATABASE_EXPORT/PRE_SYSTEM_IMPCALLOUT/MARKER
处理对象类型 DATABASE_EXPORT/PRE_INSTANCE_IMPCALLOUT/MARKER
处理对象类型 DATABASE_EXPORT/TABLESPACE

。。。
. . 导出了 "SYS"."NACL$_HOST_EXP"                      6.914 KB       1 行
. . 导出了 "SYS"."NACL$_WALLET_EXP"                        0 KB       0 行
. . 导出了 "WMSYS"."WM$EXP_MAP"                        7.718 KB       3 行
. . 导出了 "SYSTEM"."EXPFULL"                          2.059 MB    3048 行
已成功加载/卸载了主表 "SYSTEM"."SYS_EXPORT_FULL_01"
******************************************************************************
SYSTEM.SYS_EXPORT_FULL_01 的转储文件集为:
  D:\ORACLE\FULL-TSP.DMP
******************************************************************************
可传输表空间 EXAMPLE 所需的数据文件:
  D:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF
可传输表空间 TSP_HR 所需的数据文件:
  D:\ORACLE\ORADATA\ORCL\TSP_HR01.DBF
可传输表空间 USERS 所需的数据文件:
  D:\ORACLE\ORADATA\ORCL\USERS01.DBF
作业 "SYSTEM"."SYS_EXPORT_FULL_01" 已经完成, 但是有 2 个错误 (于 星期五 11月 8 11:05:00 2019 elapsed 0 00:03:04 完成)

7.拷贝 数据文件 及 dmp文件 到目标机器
  通过ftp 传输
        D:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF ,
        D:\ORACLE\ORADATA\ORCL\TSP_HR01.DBF,
        D:\ORACLE\ORADATA\ORCL\USERS01.DBF,
        D:\ORACLE\FULL-TSP.DMP
  到 目的库 linux 机器上
    /home/oracle/oradata/

8.目标库机器创建目录
   create directory full_tsp_dir as '/home/oracle/oradata/';

9.导入

[oracle@dbserver oradata]$ impdp system/oracle_4U@192.168.133.120:1521/pdb1 directory=full_tsp_dir dumpfile=FULL-TSP.DMP transport_datafiles='/home/oracle/oradata/USERS01.DBF','/home/oracle/oradata/TSP_HR01.DBF','/home/oracle/oradata/EXAMPLE01.DBF'


10.验证
  [oracle@dbserver oradata]$ sqlplus /nolog
SQL*Plus: Release 12.1.0.2.0 Production on Fri Nov 8 11:30:02 2019
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
SQL> conn system/oracle_4U@192.168.133.120:1521/pdb1
Connected.
SQL> select * from v$tablespace;
       TS# NAME                           INC BIG FLA ENC     CON_ID
---------- ------------------------------ --- --- --- --- ----------
         2 UNDOTBS1                       YES NO  YES              0
         0 SYSTEM                         YES NO  YES              3
         1 SYSAUX                         YES NO  YES              3
         2 TEMP                           NO  NO  YES              3
         3 EXAMPLE                        YES NO  YES              3
         4 TSP_HR                         YES NO  YES              3
         5 USERS                          YES NO  YES              3

7 rows selected.
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
EXAMPLE                        ONLINE
TSP_HR                         ONLINE
USERS                          ONLINE

6 rows selected.

SQL> r
  1* select table_name ,tablespace_name from user_tables
TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
BIGTAB                         TSP_HR
SQL> select sequence_name from user_sequences;
SEQUENCE_NAME
--------------------------------------------------------------------------------
SEQ_BIGTAB
SQL> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
CREATE TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
SET CONTAINER
11 rows selected.
SQL>

12.修改源端表空间为读写
  SQL> alter tablespace example read write;
  SQL> alter tablespace users read write;
  SQL> alter tablespace tsp_hr read write;

至此,Full transportable export/import  测试完成。












欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2