Oracle数据泵专题

使用参数文件进行expdp导出

使用参数文件字符无需转义,执行语句较为方便

创建导出目录

create directory data_dump_dir as '/data/backup/data_dump_dir/';

注意,这个OS层的路径需要oracle有权限

为用户授权此directory的读写权限

grant read,write on directory data_dump_dir to srm;

如果是pdb则需要在pdb层进行用户授权

检查directory

select * from dba_directories;

编辑参数文件exp.par

schemas=srm,itf
directory=data_dump_dir
dumpfile=srm_all_20211014_%U.dmp
logfile=expdp_srm_20211014.log
parallel=4
compression=all
job_name=srm_export

需要保证数据一致性还需要加consistent=Y参数

expdp导出

nohup expdp srm/HxxdSxx#HR@10.xx.xx.xxx/srmhixxin parfile=/data/backup/data_dump_dir/exp.par &

我们通过检查导出目录下的log文件tail判断当前导出进度

每日定时导出脚本:

source ~/.bash_profile
DMP_FILE=DB_$(date +%Y%m%d_%H%M%S).dmp
LOG_FILE=DB_$(date +%Y%m%d_%H%M%S).log
backup_dir=/backup/expdp
expdp wenjiewang/123456 schema=test1,test2,test3 directory=EXPDP dumpfile=$DMP_FILE logfile=$LOG_FILE parallel=2 compression=all consistent=Y;
cd $backup_dir
find $backup_dir -mtime +2 -name "DB_*" -exec rm -f {} \;

使用参数文件进行impdp导入

创建目录并授权
这一步和expdp是相同的

create directory data_dump_dir as '/data1/data_dump_dir/';
GRANT READ,WRITE ON DIRECTORY data_dump_dir TO srm;

编辑导入参数文件imp.par

Schemas=srm,itf
Directory=data_dump_dir
Dumpfile=srm_all_20211014_%U.dmp
Logfile=impdp_srm_20211014.log
Remap_schema=srm:srm,itf:itf
Remap_tablespace=srm_data:srm_data,itf_data:itf_data
Table_exists_action=replace
Cluster=n
Parallel=4
Exclude=user,sequence
Job_name=srm_import

(此处exclude排除掉user, sequence 不导入,sequence需要重新导)

impdp导入到新建的pdb中

nohup impdp srm/HxxdSxx#HR@hirain_test02 parfile=/data1/data_dump_dir/imp.par &

远程expdp

现修改TNS配置文件,添加:

PLM1 =
    (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.20)(PORT = 1521))
        )
        (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = hi**inplm)
        )
    )

在客户端创建dblink:

CREATE PUBLIC DATABASE LINK "PLM1"
CONNECT TO wenjiewang
IDENTIFIED BY "123456"
USING 'PLM1';

验证dblink:

select * from dual@PLM1;

从客户端导出服务端时多加一个参数network_link='PLM1'

导入过程报错汇总

1.导入进程处于defining状态

查看导入进程当前状态情况

impdp srm/HxxdSxx#HR@hirain_test02  attach= srm_import

进入sqlplus查看异常等待事件

Sqlplus / as sysdba
col event format a50
set linesize 200
set pagesize 999
select event,count(*) from v$session group by event;

发现有1000多个异常latch 等待

latch等待

确认sql

col USERNAME format a10
col MACHINE format a20
col CLIENT_INFO format a20
col TERMINAL format a10
col SQL_ID format a15
select SID,SERIAL#,USERNAME,STATUS,MACHINE,SQL_ID,LOGON_TIME,BLOCKING_SESSION from v$session where event=’latch:enqueue hash chains’;

查询结果都是同一个SQL_ID,以及会话登录事件LOGON_TIME都是很早之前的。
查询sql_id 对应的具体sql 内容

Select sql_text from v$sqlarea where sql_id=’&sql_id’;

输入刚才的sql_id
怀疑是大量的Inert 操作执行成功后 没有提交或者根本没有执行成功,一直卡着。
批量Kill
批量Kill 掉这个event=’latch: enqueue hash chains’ 对应的session:

SELECT 'alter system disconnect session '''||SID || ',' || SERIAL#||''' immediate;'   FROM V$SESSION where event=’latch: enqueue hash chains’;

将查询出来的拼接的sql,直接复制执行即可。
返回第2步多查几次event 情况,看是否还有其它异常,没有异常后正常导入

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 先说数据泵提供的主要特性(包括,但不限于): 1. 支持并行处理导入、导出任务 2. 支持暂停和重启动导入、导出任...
    阿里纳斯_0097阅读 1,798评论 0 0
  • 第一天 7月13日OCP笔记: Oracle Ocp11g准备资料: OracleFundmentals 书 管理...
    fjxCode阅读 2,843评论 0 4
  • --$理论知识$-- --$$、三大范式 第一范式(1NF):字段是原子性的,不可分; 第二范式(2NF):有主键...
    scottyang95阅读 733评论 0 4
  • 数据泵使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以...
    黏小莲阅读 877评论 0 3
  • --21.1 Data Pump工具Data Pump从oracledatabase 10g开始引入了data p...
    liutoliu阅读 2,880评论 0 1