oracle相同数据库下跨schema的表迁移—expdp/impdp

需求:将GUIDO用户下的表迁移到SCOTT用户下

select * from dba_role_privs where GRANTEE='SCOTT';--用户角色
SQL> select * from dba_role_privs where GRANTEE='SCOTT';

GRANTEE GRANTED_ROLE ADM DEL DEF COM
-------------------- -------------------- --- --- --- ---
SCOTT CONNECT NO NO YES NO
SCOTT RESOURCE NO NO YES NO

select * from dba_sys_privs where GRANTEE='SCOTT'; --用户系统权限

GRANTEE PRIVILEGE ADM COM
-------------------- ---------------------------------------- --- ---
SCOTT CREATE TABLE NO NO
SCOTT CREATE VIEW NO NO
SCOTT DEBUG CONNECT SESSION NO NO
SCOTT DEBUG ANY PROCEDURE NO NO
SCOTT CREATE DATABASE LINK NO NO
select * from dba_tab_privs where GRANTEE='SCOTT'; --用户表级权限
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE COM TYPE
---------- ---------- ------------------------------ ---------- ---------- --- --- --- ------------------------
SCOTT SYS SYS_PLSQL_DA3FBA35_644_1 SYS EXECUTE YES NO NO TYPE
SQL> select username,default_tablespace from dba_users where account_status='OPEN';

USERNAME DEFAULT_TABLESPACE
------------------------------------------------------------------
ZABBIX ZABBIX
SYSTEM SYSTEM
SYS SYSTEM
SCOTT SCOTT_DATA01
GUIDO GUIDO_DATA01
5 rows selected.

SQL> col SEGMENT_NAME for a30
SQL> select s.segment_name,s.tablespace_name from dba_segments s,dba_indexes i where s.segment_name=i.index_name and i.owner='SCOTT';
SEGMENT_NAME TABLESPACE_NAME
------------------------------ ------------------------------
FK_ID SCOTT_DATA01
IDX_DUDECT_INFO_REQ_DATE SCOTT_DATA01
IDX_T_DU_RES SCOTT_DATA01
PK_BORROWER_AGENCY SCOTT_IDX01
PK_BORROWER_BANKCARD SCOTT_IDX01
PK_BORROWER_COMPANY SCOTT_IDX01
PK_BORROWER_FINANCE SCOTT_IDX01
PK_BORROWER_INFO SCOTT_IDX01
PK_CONFIG SCOTT_IDX01
PK_DUDECT_AGREEMENT SCOTT_IDX01
PK_DUDECT_AGREEMENT_TEMP SCOTT_IDX01
PK_DUDECT_BATCH_LOG SCOTT_IDX01
PK_DUDECT_INFO SCOTT_IDX01
PK_DUDECT_RESULT SCOTT_IDX01
PK_LOAN_REQUEST SCOTT_IDX01
PK_LOAN_RESULT SCOTT_IDX01
PK_MESSAGE SCOTT_IDX01
PK_SYS_EXCEPTION SCOTT_IDX01
T_AGREEMENT_ELE SCOTT_DATA01
T_AGREEMENT_ELE SCOTT_IDX01
20 rows selected.

SQL> select * from dba_directories;

OWNER DIRECTORY_NAME DIRECTORY_PATH ORIGIN_CON_ID
---------- ------------------------- -------------------------------------------------- -------------
SYS ORACLE_HOME / 0
SYS ORACLE_BASE / 0
SYS OPATCH_LOG_DIR /data/app/oracle/product/12.1.0/db_1/QOpatch 0
SYS OPATCH_SCRIPT_DIR /data/app/oracle/product/12.1.0/db_1/QOpatch 0
SYS OPATCH_INST_DIR /data/app/oracle/product/12.1.0/db_1/OPatch 0
SYS DATA_PUMP_DIR /data/app/oracle/admin/hbhsdb/dpdump/ 0
SYS XSDDIR /data/app/oracle/product/12.1.0/db_1/rdbms/xml/schema 0
SYS ORACLE_OCM_CONFIG_DIR /data/app/oracle/product/12.1.0/db_1/ccr/hosts/WG- 0
HOUBANK-DHDB01/state
OWNER DIRECTORY_NAME DIRECTORY_PATH ORIGIN_CON_ID
---------- ------------------------- -------------------------------------------------- -------------
SYS XMLDIR /data/app/oracle/product/12.1.0/db_1/rdbms/xml 0
SYS ORACLE_OCM_CONFIG_DIR2 /data/app/oracle/product/12.1.0/db_1/ccr/state 0
SYS DIR_AUTO_BACKUP /data/app/oracle/auto_backup 0
SYS EXPDP_DIR /data/backup 0

12 rows selected.
赋予目录权限:
SQL>grant read,write on directory EXPDP_DIR to system;
导出:
expdp system/manager schemas=SCOTT directory=EXPDP_DIR dumpfile =SCOTT_expdp.dmp logfile=SCOTT_expdp.log;
导入:
相同的schema
impdp system/manager schemas=SCOTT directory=EXPDP_DIR dumpfile =SCOTT_expdp.dmp logfile=SCOTT_impdp.log;
不同的schema
impdp system/manager schemas=SCOTT remap_schema=SCOTT:GUIDO directory=EXPDP_DIR dumpfile =SCOTT_expdp.dmp logfile=SCOTT_expdp.log;

impdp system/manager  directory=EXPDP_DIR dumpfile=ELEMENT.dmp logfile=ELEMENT_impdp.log remap_schema=guido:scott remap_tablespace=GUIDO_DATA01:SCOTT_DATA01,GUIDO_IDX01:SCOTT_IDX01,GUIDO_TEMP:SCOTT_TEMP

#需要映射的schema的默认表空间、索引表空间、默认临时表空间

扩展知识点:
一:映射关系REMAP_SCHEMA、REMAP_TABLESPACE、REMAP_DATAFILE
1、REMAP_SCHEMA
该选项用于将源方案的所有对象装载到目标方案中:REMAP_SCHEMA=source_schema:target_schema
2、REMAP_TABLESPACE
将源表空间的所有对象导入到目标表空间中:REMAP_TABLESPACE=source_tablespace:target:tablespace
3、REMAP_DATAFILE 该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.
REMAP_DATAFIEL=source_datafie:target_datafile
二、expdp中TABLE_EXISTS_ACTION参数
当使用IMPDP完成数据库导入时,如遇到表已存在时,Oracle提供给我们如下四种处理方式:
a.忽略(SKIP,默认行为);
b.在原有数据基础上继续增加(APPEND);
c.先DROP表,然后创建表,最后完成数据插入(REPLACE);
d.先TRUNCATE,再完成数据插入(TRUNCATE)。
例如:
impdp system/manager schemas=GUIDO directory=EXPDP_DIR dumpfile=SCOTT_expdp.dmp logfile=SCOTT_impdp.log TABLE_EXISTS_ACTION=SKIP

三、低版本不能导入高版本的dmp文件,需要在高版本的EXPDP导出时指定版本号,低版本IMPDP无需指定版本。
例如:11.2.0.4导入到10.2.0.5

expdp system/manager schemas=GUIDO directory=EXPDP_DIR dumpfile=SCOTT_expdp.dmp version=10.2.0.5.0

四、远程数据泵导出数据
expdp system/manager@//10.100.7.198:1521/hsdg schemas=SCOTT directory=EXPDP_DIR dumpfile =SCOTT_expdp.dmp logfile=SCOTT_expdp.log;
impdp system/manager@//10.100.7.197:1521/hsdg schemas=SCOTT directory=EXPDP_DIR dumpfile =SCOTT_expdp.dmp logfile=SCOTT_impdp.log;

hsdg为数据库连接字符串的名称

五:parfile文件的使用-导出多个表

expdp parfile= parfile.txt

vi parfile.txt

userid=system/xxxxxx
schemas=ELON
directory=EXPDP_DIR
dumpfile=del_table_20180424.dmp
logfile=del_table_20180424.log
include=TABLE:"IN(
'TEST4',
'TEST3',
'TEST3'

省略若干表.......

)"

六:QUERY查询条件的EXPDP/IMPDP

按查询条件只导出一张表,发现不需要加schema=的条件,只需要在tables=前面加上schema即可
expdp system/xxxxxx directory=DUMPDIR dumpfile=scott.dmp tables=scott.emp query=scott.emp:\" where creation_date\>"'23-OCT-12'"\"

按查询条件也可以同时导出两张表,只需要在tables=中逗号隔开两表,query=中逗号隔开两张表的查询条件即可

expdp system/xxxxxx directory=DUMPDIR dumpfile=scott.dmp tables=scott.BH1WZZK0,scott.BH2WZZK0 query=scott.BH1WZZK0:\" where zctjrq0 like ‘2013%’"\",scott.BH2WZZK0:\" where zctjrq0 like ‘2013%’"\"

导入到异机:

impdp SYSTEM/manager dumpfile=201611182.dmp directory=ODPDIR table_exists_action=append

impdp SYSTEM/mds_ets.2009 remap_schema=dh:dahai_demo remap_tablespace=dh:dahaidata_demo dumpfile=2015dh.dmp directory=DUMPDIR

impdp system/xxxxxx directory=DUMPDIR dumpfile=scott.dmp remap_schema=dh:dahai_demo remap_tablespace=dh:dahaidata_demo

oracle expdp query 泵出表部分数据

cat >exp.par<<EOF
directory=DUMPDIR
dumpfile=scott.dmp
tables=(scott.emp,scott.dept)
query=(scott.emp:"where empno<=888",
scott.dept:"where empno>=666")
EOF

expdp \'/ as sysdba\' parfile=exp.par

七:排除某些表的EXPDP/IMPDP

expdp system/xxxxxx directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=scott.log schemas=scott EXCLUDE=TABLE:\"IN\'TABLE1\',\'TABLE2\',\'TABLE3\'\"

impdp到schema为scott2,tablespace为scott2的用户,已经排除某些表的2015dh.dmp文件的impdp导入
impdp SYSTEM/xxxxxx remap_schema=scott:scott2 remap_tablespace=scott:scott2 dumpfile=scott.dmp directory=DUMPDIR

oracle 数据迁移之数据泵的基本使用的更多相关文章

  1. laravel中的数据迁移和数据填充

    laravel中的数据迁移和数据填充 标签(空格分隔): php 生成迁移文件两种方式: 1 新建一个表的迁移文件 php artisan make:migration create_students ...

  2. Oracle数据迁移-系统数据合并笔记

    创建临时表:execute immediate 'sql'; 通过临时表和关联查询解决循环处理效率低下,大数据操作移植时时间太长的问题. 结构相同的系统数据库表移植,案例如下: create or r ...

  3. oracle 定期迁移分区表数据(不落地)

    [oracle@SJ ~]$ cat /home/oracle/JY_SJ.sh #!/bin/bashsource /home/oracle/.bash_profileSDATE=$(date  + ...

  4. oracle在线迁移同步数据,数据库报错

    报需要升级的错误,具体处理步骤如下: 一.错误信息 SQL> alter database open ;alter database open resetlogs*ERROR at line 1 ...

  5. laravel框架总结(十四) -- 数据迁移和数据填充

    一.数据迁移 1.创建一个迁移 1>使用artisan命令make:migration来创建一个新的迁移: php artisan make:migration create_sutdents_ ...

  6. 物化视图(materialized view) 实现数据迁移、数据定时同步

    近日公司有一个9i 的Oracle数据库,运行效率低下.想要将其升级到11G. 但是升级之前 要将数据进行同步,好在表不是很多.只有三张表.业务压力也不大,就想到了使用物 化视图的方式将数据同步过来. ...

  7. 阿里云Linux服务器,挂载硬盘并将系统盘数据迁移到数据盘

    因为之前用宝塔上线,宝塔只挂载了系统盘50G,打开阿里云云盘列表发现系统盘无法直接升级,故另买一块数据盘挂载到Linux服务器下,下面根据网上教程再结合我实际情况讲解一下实际操作,其实非常easy l ...

  8. laravel模型建立和数据迁移和数据填充(数据填充没有成功)未完

    开始创建我们的第一个 Article 模型及其对应迁移文件了,我们在项目根目录运行如下 Artisan 命令一步到位: php artisan make:model Article -m -m 是 - ...

  9. 一种可以避免数据迁移的分库分表scale-out扩容方式

    原文地址:http://jm-blog.aliapp.com/?p=590 目前绝大多数应用采取的两种分库分表规则 mod方式 dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月 ...

随机推荐

  1. [开发技巧]·如何让离线安装Python包

    [开发技巧]·如何让离线安装Python包 1.问题描述 PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI. ...

  2. 多线程11-AutoResetEvent

        );             Console.WriteLine());             t.Start();             Console.WriteLine());    ...

  3. Leveldb源码分析--2

    coming from http://blog.csdn.net/sparkliang/article/details/8573618

  4. OOM排除与JVM调优

    仅先记录,后续整理 1. 常用命令: jstat gcutil jmap 2. 打印GC执行情况: 通过执行jinfo -flag +PrintGCDetails <pid>直接动态开启, ...

  5. 13 个设计 REST API 的最佳实践

    原文 RESTful API Design: 13 Best Practices to Make Your Users Happy 写在前面 之所以翻译这篇文章,是因为自从成为一名前端码农之后,调接口 ...

  6. 两种方法删除ArrayList里反复元素

    方法一: /** List order not maintained **/ public static void removeDuplicate(ArrayList arlList) { HashS ...

  7. centos解决Could not find a version that satisfies the requirement pip3 (from versions: none)及No matching distribution found for pip3问题

    python环境:python 3.8 报错信息: WARNING: pip is configured with locations that require TLS/SSL, however th ...

  8. 12、前端知识点--MVVM模式

    1.MVVM与MVC的区别是什么? 在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑. MVC模型关注的是Model的不变,所以,在 ...

  9. 模块之re模块

    八.正则表达式 1.1首先我们先了解re模块与正则表达式的关系: re模块与正则表达式之间的关系 正则表达式不是python独有的 它是一门独立的技术所有的编程语言都可以使用正则,但是如果你想在pyt ...

  10. html a标签链接点击闪动问题解决

    <a href="#">链接点击会闪动,解决: 这三种都可以用:<a href="javascript:;"></a>< ...