数据泵导出报ORA-01555 ORA-22924

今天对某数据库执行数据泵导出操作时碰到如下错误:
Processing object type DATABASE_EXPORT/SCHEMA/JOB
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCACT_INSTANCE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMA
Processing object type DATABASE_EXPORT/AUDIT
. . exported "ZXUSER"."T_MX_ATTACHMENT" 9.452 GB 9549 rows
ORA-31693: Table data object "SGBIZ"."T_MX_ATTACHMENT" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-01555: snapshot too old: rollback segment number with name "" too small
ORA-22924: snapshot too old
Master table "SYS"."SYS_EXPORT_FULL_01" successfully loaded/unloaded

首先修改undo_retention=10800重新导出问题依旧。
alter system set undo_retention=10800 sid=‘*‘;
$ oerr ora 22924
22924, 00000, "snapshot too old"
// *Cause: The version of the LOB value needed for the consistent read was
// already overwritten by another writer.
// *Action: Use a larger version pool.

--才明白这个跟lob字段有关。

select column_name, pctversion, retention from dba_lobs where table_name = ‘T_MX_ATTACHMENT‘;
col COLUMN_NAME for a30
select column_name, pctversion, retention from dba_lobs where table_name = ‘T_MX_ATTACHMENT‘;

COLUMN_NAME PCTVERSION RETENTION
------------------------------ ---------- ----------
ATT_FILE 900

--这个表本身不大,但是lob字段占用的空间很大,可以发现即使改动了参数undo_retention=10800,表lob的属性
--RETENTION依旧900,必须增加该参数,或者使用PCTVERSION参数。

alter table SGBIZ.T_MX_ATTACHMENT modify lob(ATT_FILE)(retention);
alter table SGBIZ.T_MX_ATTACHMENT modify lob(ATT_FILE)(PCTVERSION 20);

select column_name, pctversion, retention from dba_lobs where table_name = ‘T_MX_ATTACHMENT‘;
COLUMN_NAME PCTVERSION RETENTION
-------------------- ---------- ----------
REPORTPRINT 10800

修改后重新导出,导出正常。
Processing object type DATABASE_EXPORT/SCHEMA/JOB
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCACT_INSTANCE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMA
Processing object type DATABASE_EXPORT/AUDIT
. . exported "ZXUSER"."T_MX_ATTACHMENT" 9.452 GB 9549 rows
. . exported "SGBIZ"."T_MX_ATTACHMENT" 21.30 GB 35716 rows
Master table "SYS"."SYS_EXPORT_FULL_02" successfully loaded/unloaded

时间: 2024-10-10 22:31:06

数据泵导出报ORA-01555 ORA-22924的相关文章

LOB对象在数据泵导出、导入后查询对象数量发现丢失

问题描述:问题:源库的某个Schema使用数据泵Expdp元数据整体导出,在目标库导入且成功后,逻辑验证用户对象,发现缺失.分析查询后,缺失的对象,都是LOB类型(并不是所有的LOB都无法导入,是大部分LOB类型的对象) #以下逻辑验证,SQL执行,对比源库.目标库数据#以下语句特点:测试环境,还原状况模拟:数据无法完全重现 SQL> select OBJECT_TYPE,count(*) from dba_objects where owner='SCOTT' group by object_

数据泵导出/导入Expdp/impdp

Oracle 10g引入了DATA PUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATA PUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升.DATA PUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制. 注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的. 一.以下是DATA PUMP的几个优点介绍: 1.数据泵(DataPump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建

使用Unified Auditing Policy审计数据泵导出操作

1.创建审计策略 SQL> alter session set container=pdb1; SQL> create or replace directory dumpdir as '/u12/app/dumpdir'; SQL> grant read,write on directory dumpdir to scott; SQL> create audit policy dp_01 actions component=datapump export; 2.开启审计策略 SQL

03.01 Oracle数据泵导出导出(expdp/impdp)命令举例(上)

Oracle数据泵导出导出(expdp/impdp)命令举例(上) ##实验目的: 使用数据泵迁移数据 ##实验环境: Oracle 11.2.0.4,利用数据库自带的scott示例用户进行试验测试 实验步骤概述: 1.首先需要创建Directory 2.使用expdp导出用户数据 2.1 只导出scott用户的元数据,且不包含统计信息: 2.2 只导出scott用户的数据: 2.3 只导出scott用户下的emp,dept表及数据: 2.4 只导出scott用户下的emp,dept表结构: 2

dbca静默管理数据库&数据泵导出导入

#dbca参考链接:https://blog.51cto.com/hunt1574/1933535https://www.linuxidc.com/Linux/2017-03/141830.htmhttps://www.cnblogs.com/dbabd/p/10250968.html#autoid-3-1-0http://blog.itpub.net/29047826/viewspace-1431667/总结:快速删库或建库:||||||||||||||||||||||||||||||||||

数据泵导出出现ORA-31617错误

Export: Release 11.2.0.4.0 - Production on Sat Jun 11 01:00:02 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved. ;;; Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the

数据泵导出/导入数据

由于在oracle11g之后的某些版本中,采用exp方式导出数据会导致空表被漏掉,解决办法分为两种: 一.对空表进行插入操作,然后再删除数据. 二.采用数据泵的方式导出. 本文介绍第二种方式. 导出: 1.从cmd中以dba权限登录数据库:sqlplus system/密码@orcl as sysdba; 2.创建目录: Create directory TEST as 'd:\test'; 3.授权:Grant read,write on directory TEST to yxf; 4.对应

编写PL/SQL程序使用数据泵导出导入数据

1.什么是数据泵?就是oracle的一个PL/SQL程序包 dbms_datapump2.数据泵技术是Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍.速度的提高源于使用了并行技术来读写导出转储文件. expdp使用 使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录.因此使用EXPDP工具时,,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用DIREC

数据库数据导入/导出报错:无法在只读列“Id”中插入数据。

本文仅供小白参考,大佬请随意...... 本例是:从vs 2017自带的localDB数据库的数据---导出到---->Sql Server 2008中的相应数据库中 1. 导出数据库: 2. 导入的目标数据库: 3. 下一步*n---->完成 4. 爽一下后连续报错开始: 上面两个错误的前提是:我的Sql Server中数据库是先手动建立了同名数据库, 然后从localDB相应数据库右键--->任务--->生成脚本--->选择特定数据库对象--->全选所有表---&g