Oracle数据库迁移,使用expdp/impdp数据泵

按表空间导出,只会导出表空间相关的表,只有按用户导出,会把用户相关的表、存过、package、job等都导出

查看数据量:

select owner,tablespace_name,SEGMENT_NAME ,segment_type,sum(BYTES/1024/1024) "sizes(MB)" 
from dba_segments where  owner='WJZ' 
group by owner,segment_name,segment_type, tablespace_name 
order by "sizes(MB)"  desc;

 有的表因为有lob字段导致占用空间大:

查看用户下所有lob字段占用空间大小:
SELECT B.TABLE_NAME,
   B.TABLESPACE_NAME,
   B.COLUMN_NAME,
   A.SEGMENT_NAME,
   a.SEGMENT_TYPE,
   ROUND(SUM(A.BYTES / 1024 / 1024 ), 2) MB
FROM DBA_SEGMENTS A
JOIN DBA_LOBS B
ON A.OWNER = B.OWNER
AND A.SEGMENT_NAME = B.SEGMENT_NAME
WHERE A.owner='ZTEAPP'
GROUP BY B.TABLE_NAME,B.TABLESPACE_NAME, B.COLUMN_NAME, A.SEGMENT_NAME,a.SEGMENT_TYPE
ORDER BY MB DESC ;

 

1.查看/创建导入导出的目录

dmp文件放到机器的Oracle定义的directory目录(select * from dba_directories),这是关键,先登录Oracle看你这个参数:

select * from dba_directories;

默认导出目录为D:\app\Administrator/admin/orcl/dpdump/(其中前面为Oracle安装目录)。也可以重新创建导入导出目录:

create directory dump_dir as '/data/app/database_new/admin/dpdump'

注意:目录路径必须是已经存在的目录,如果目录不存在,也会显示目录创建成功(语句不会自动去创建目录),在执行expdp时候会报错误

2.为创建的目录赋权限

需要以其他用户运行,建议在sys用户下执行。

grant read,write on directory 目录名 to 需要赋值的用户名

grant read,write on directory dump_dir to WJZ;

grant exp_full_database,imp_full_database to WJZ;

 3.导出数据

使用命令行和文件两种方法可导出,可以根据用户、表空间、表等方法。

Exclude要写的表多,字符串太长,不使用命令形式,用参数文件方式:

expdp WJZ/CRM schemas=WJZ directory=dump_dir dumpfile=wjz%U.dmp logfile=wjz.log  parallel=4 EXCLUDE=TABLE:\"IN \(\'TABLE_A\',\'TABLE_B\',\'TABLE_C\'\)\"

参数文件:

userid='/ as sysdba'

directory=CRM_DMP_NAME

schemas=WJZ

dumpfile=wjz%U.dmp

job_name=wjz_exp

logfile=wjz.log

parallel=4

EXCLUDE=TABLE:"IN('TABLE_A','TABLE_B','TABLE_C')"

参数文件的方法执行:expdp parfile=expdp.par

4.导入数据

impdp wjz/password directory=dump_dir remap_schema=user_a:wjz remap_tablespace=TBS_A:BASE_DATA,TBS_B:BASE_DATA,TBS_C:BASE_DATA table_exists_action=replace dumpfile=EXPORT.dmp logfile=export.log 

 5.其他

rac expdp导出时报错:
ORA-31693: Table data object "testuser"."test" failed to load/unload and is being skipped due to error:
ORA-31617: unable to open dump file "
/home/oracle/exp_dir/full05.dmp" for write
ORA-19505: failed to identify file "
/home/oracle/exp_dir/full05.dmp"
ORA-27037: unable to obtain file status
错误原因:
在RAC环境下如果PARALLEL参数设置大于1,进程会在RAC的各个节点上进行导出。如果导出目录不共享的话就会报错
解决方法:
1、设置为共享的directory;
2、导出语句添加cluster=n选项,指定只在本地导出;

impdp导入覆盖只是覆盖表,序列、存过、包若存在则不会替换

解决方法:

序列若冲突,则调整所有用户序列的增长步长为10000:
将库中所有非默认用户的序列值+10000(加大最大值),再插入数据时则不会再出现唯一约束;
SELECT ‘Alter Sequence ‘||sequence_owner||’.’|| SEQUENCE_NAME || ’ Increment By ’ || to_char(10000)||’;’ from DBA_SEQUENCES
WHERE SEQUENCE_OWNER in
(select b.username from dba_users b
where b.account_status = ‘OPEN’ and b.username not in(‘SYS’, ‘SYSTEM’, ‘SYSMAN’, ‘MGMT_VIEW’, ‘DBSNMP’, ‘SAMPLE_DBA’))

或者导入时把数据清空再导入

可以使用命令

DROP USER 用户名 CASCADE;

使用drop user cascade; 可以删除用户及所相关的所有对象,可以通过重新创建一个同名对象,然后使用imp 命令从dmp文件导入新的对象

expdp数据迁移序列值导入失败,导致新增数据违反唯一约束,调整所有序列值_范斯浪学的博客-CSDN博客_expdp sequence

报错UDE-00014 invalid value for parameter,

EXCLUDE=TABLE:"IN ('参数中的值太多时,就会出现问题。根据这一现象,搜索到文章:UDE-00014 invalid value for parameter, 'tables'. (Doc ID 758848.1)。 当tables参数中的参数值太大,超过3400字节时,就可能会出现无效的参数值。

终止导入导出任务

在expdp和impdp导出导入时由于命令错误想终止操作,于是就按ctr + c 中进入export交互界面,然后exit退出然后查看操作系统进程发现没有expdp进程了以为就是停掉了,但发现导出的dmp文件还在一直增加,其实任务并没有停止。
正确方法
1.查看视图dba_datapump_jobs
select job_name,state from dba_datapump_jobs;
发现任务确认还在执行
2.正确停止expdp导出任务使用stop_job
expdp system/oracle@orcl attach=SYS_EXPORT_SCHEMA_01
或者
impdp system/oracle@orcl attach=SYS_EXPORT_SCHEMA_01
3.执行关闭job
stop_job=immediate

expdp impdp中 exclude/include 的使用_主要是钱不够呀的博客-CSDN博客_expdp include

EXPDP之INCLUDE ---导出存储过程_lwei_998的博客-CSDN博客_expdp 导出存储过程

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大宇进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值