EXPDP遇到ORA-39171 ORA-1691报错处理办法

1、问题说明

先上截图,朋友问我他这边有个客户,Expdp导出数据报错如下图所示是什么毛病

图片

既然是提示表空间无法扩展,那么问题就很明显了
查看一下,这个表空间可用空间严重不足了

图片

这个截图来自于1个国外大佬写的巡检脚本,适合10G/11G数据库的环境,有需要的小伙伴可以恢复在我公众号里点击“巡检脚本”获取。

图片

我一般是放在/home/oracle目录下,然后按如下执行

sqlplus / as sysdba
@/home/oracle/dba_snapshot_database.sql

执行后会自动在/home/oracle目录下生成html报告。

回到刚才的问题。一切的现像也符合官方文档Data Pump Export/Import (EXPDP/IMPDP) = ORA-39171 ORA-1691 (Doc ID 1957683.1)的说法

The default tablespace of the schema that runs the expdp (or impdp) is not large enough to hold the LOB segments used in the so-called Master Table created during the Data Pump job.

2、处理

这里官方文档给出来两个办法:

1、给执行导出任务用户的默认表空间扩容,来解决这个问题。

2、停止这个任务,再创建一个默认表空间比较大的用户,该用户的权限如下,使用该用户再执行EXPDP的任务

--创建用户
connect / as sysdba
create user expdp_user identified by <password> default tablespace users;
alter user expdp_user quota unlimited on users;
grant create session, create table, dba to expdp_user;
grant read, write on directory my_dir to expdp_user;
--执行导出
expdp expdp_user/<password> directory=my_dir dumpfile=expdp_f%U.dmp logfile=expdp_f.log reuse_dumpfiles=y full=y parallel=5

当然,这种情况还是选择第1个方法比较靠谱,直接扩容避免不必要的麻烦。

再附几个查询表空间使用情况的脚本

查询表空间使用情况SQL

set pagesize 200;
set linesize 100;
SELECT Upper(F.TABLESPACE_NAME)         "tablespace_name",
       D.TOT_GROOTTE_MB                 "tablespace_total_MB",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "usedspace_M",
       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
       || '%'                           "use_prescent",
       F.TOTAL_BYTES                    "free_space_M",
       F.MAX_BYTES                      "max_block_M"
FROM   (SELECT TABLESPACE_NAME,
               Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
               Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
        FROM   SYS.DBA_FREE_SPACE
        GROUP  BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
        FROM   SYS.DBA_DATA_FILES DD
        GROUP  BY DD.TABLESPACE_NAME) D
WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER  BY 1;

查询PDB总容量

show pdbs;
set pagesize 100;
select con_id, sum(bytes)/1024/1024/1024 as GB from cdb_data_files group by con_id order by con_id;

查旬CDB总数据量

select sum(bytes)/1024/1024/1024 as GB from cdb_data_files;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徐sir(徐慧阳)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值