本帖最后由 郑全 于 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 测试完成。
|