Oracle expdp 导出和 impdp 导入

一、exp 导出和 imp 导入

-- exp导出:
exp middb/middb@middb12c
file=/data/XXX.dmp            -- 导出路径
full=y                -- 导出全库
owner=(middb,ewdb)         -- 导出库
tables=(table1,table2)           -- 导出表
query=\" where filed1 like '00%'\"    -- 字段filed1以"00"打头的数据导出
compress=y             -- 压缩
indexs=y                -- 导出索引


-- imp导入:
imp middb/middb@middb12c
file=/data/XXX.dmp
log=/data/XXX.log
tables=table1              --  导出XXX.dmp中的table1
full=y
ignore=y


二、expdp 导出和 impdp 导入:

-- expdp导出:
expdp middb/middb@middb12c
directory=dp             -- 指定转储文件和日志文件所在的目录,创建语句 create directory dp as '/home/data/'
content=all             -- content={ all | data_only | metadata_only } 当设置 content 为 all 时将导出对象定义及数据,为 data_only 时导出对象数据,为 metadata_only 时导出对象定义
dumpfile=middb.dmp          -- 用于指定转储文件的名称,默认名称为 expdat.dmp
logfile=middb.log           -- 指定导出日志文件文件的名称,默认名称为 export.log
exclude=trigger,index         -- 该选项用于指定执行操作时释放要排除对象类型或相关对象
tablespace=tbs_s01           -- 导出表空间
schemas=(middb,ewdb)        -- 导出用户模式
tables=(table1,table2)        -- 导出表  
query="where rownum<11"        -- 过滤条件 (在导出为tables的时候使用) shell中:query="\"where $time_col >= to_date('$start_date','yyyymmdd') and $time_col < to_date('$end_date','yyyymmdd')\""
parallel=8               -- 建议parallel设置不要超过cpu*2
cluster=n                -- 使用 parallel 时使用
compression=all             -- 压缩

 

-- impdp导入
impdp middb/middb@middb12c
directory=dp             
dumpfile=middb.dmp
logfile=middb.log
schemas=XXX,XXX
table_exists_action=append

##eg:
1.expdp \"/ as sysdba\" directory=DP content=all dumpfile=s05_%U.dp logfile=s05_exp.log parallel=4 cluster=n schemas=S05 version=12.1.0.2.0
2.scp
3.impdp \"/ as sysdba\" directory=DP content=all dumpfile=s05_%U.dp logfile=s05_imp.log parallel=4 cluster=n schemas=S05 remap_tablespace=tbs_bigwaste:tbs_s05 remap_schema=sec:secooler


expdp c##ogg/Welcome1324@db_clear directory=DP content=all dumpfile=s06_`date '+%Y%m%d'`.dp logfile=s06_exp_`date '+%Y%m%d'`.log parallel=2 cluster=n exclude=trigger,index tables=scetc.TBL_GBTOLLLANEDIC

impdp s06/s06@orcl19c directory=dump content=all dumpfile=s06_20200312.dp logfile=s06_imp_`date '+%Y%m%d'`.log parallel=2 cluster=n remap_tablespace=TBSD_DIC:tbs_s06,TBSI_BASE:tbs_s06 REMAP_SCHEMA=scetc:s06

==================================================================================
四、进度查询和监控

但领导问你导数进度时,会不会手忙脚乱的,无从查起?当然,作为一个负责任的DBA,实时的知道导出导入的进度,是必须掌握的技能。

1、 查看数据泵作业的运行情况

select owner_name owr,job_name jbn,operation ope,job_mode jbm,state,degree, attached_sessions atts,datapump_sessions dats from dba_datapump_jobs;

select sid, serial#,session_type from v$session s, dba_datapump_sessions d where s.saddr = d.saddr;

2、监控数据泵的逻辑备份程度

SELECT sid, serial#, context, sofar, totalwork, ROUND(sofar/totalwork*100,2) "%_COMPLETE"
FROM v$session_longops WHERE totalwork != 0 AND sofar <> totalwork;

SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE
103 89 0 54 7 83.33

3、查看数据泵的详细进度

expdp etl/etl@orcl19c attach= SYS_EXPORT_TABLE_01

Import> status

Job: SYS_IMPORT_TABLE_01
Operation: IMPORT
Mode: TABLE
State: EXECUTING
Bytes Processed: 1,364,791,288
Percent Done: 99
Current Parallelism: 2
Job Error Count: 0
Dump File: /opt/datadump/expdp_testdump_20181218_01.dmp

===================================================================================
一、expdp状态查看及中断方法
1、查询expdp的job的名字
SQL> select job_name from dba_datapump_jobs;
JOB_NAME
------------------------------
SYS_EXPORT_SCHEMA_01
2、查询expdp状态
$ expdp test01/oracle_123 attach=SYS_EXPORT_SCHEMA_01
3、停止job
Export> stop_job
提问是否停止job,输入yes
Export> kill_job
提问是否杀掉job,输入yes
到这步,expdp就停止了。
二、impdp状态查看及中断方法
1、查看job的名字
SQL> select job_name from dba_datapump_jobs;
JOB_NAME
------------------------------
SYS_IMPORT_SCHEMA_01
2、查看impdp状态
$impdp system/oracle attach=SYS_IMPORT_SCHEMA_01
3、停止impdp
Import>stop_job
提问是否停止job,输入yes
Import>kill_job
提问是否杀掉job,输入yes

posted @ 2020-11-03 21:11  smandar  阅读(611)  评论(0编辑  收藏  举报