Oracle-奇怪的expdp备份报错LPX-00217

news/2024/11/22 19:49:38/

问题背景:

        接用户报障,数据库每天晚上正常的expdp备份,从2天前开始出现奇怪的备份报错LPX-00217: invalid character 3

问题分析:

        检查expdp备份的日志,从2天前晚上开始的备份均出现LPX-00217: invalid character 3的报错,报错均由同一张表"TEST"."TABLE_ASSOCIATION"导出时导致

ccd82c480de244370660f16dc0531319.png

        通过对不开并行以及不开压缩单独expdp导出表,并设置trace=480300进行跟踪,依然发生报错,排除了并行和压缩导致的问题

        查看dw导出进程的480300跟踪trc文件,除了看到报错是发生在卸载数据写入dumpfile文件之外,并没有其他明显的报错信息指向

11d7573718460470b1f2772ba9222c46.png

        通过全表方式查询以及CATS方式复制数据创建备份表均可以正常完成,没有出现ORA-错误以及数据坏块报错,怀疑有可能是表结构或者数据存储了特殊字符与expdp导出存在冲突。导致报错无效字符3

--CATS复制数据备份正常
create table BACKUPINFO.TABLE_ASSOCIATION_BAK tablespace USERS as select * from TEST.TABLE_ASSOCIATION;
--全表扫描正常
select /*+full(a) */ count(column_name) from TEST.TABLE_ASSOCIATION a;

        查看表的列定义,发现列PK名存在特殊的ASCII值3,4,正常的P,K值分别对应ASCII码值80以及75,列长度应该为2,但当前的列PK长度为4,里面还包含了其他的两位ASCII值3,4

select table_name,column_name, dump(COLUMN_NAME) as charcode
from user_tab_columns
where table_name in ('TABLE_ASSOCIATION')
order by 3;

2a704f2d8c7fdbd98d0d48dcfe4a1972.png

查看ASCII码表,ASCII值3,4分别对应控制字符3(^C End of text)以及4(^D End of transmission),而expdp卸载数据时无法识别遇到的字符3,导致报无效字符3错判LPX-00217: invalid character 3

dd9e0af7a75be880ac6e94adaae9090f.png

3b841222a8595355ad846d7d0081dc2f.png

问题修复:

        1 对表的列PK进行重建,删除无效的控制字符

测试创建测试表删除特殊的控制字符(^C End of text)以及(^D End of transmission)再进行导出,删除特殊字符后可以正常导出没有报错

#创建测试表,正常的PK字段,没有特殊的控制字符
SQL> CREATE TABLE "BACKUP"."TABLE_TEST"(    "ID" VARCHAR2(50),"LINES" CLOB,"NAME" VARCHAR2(100),"TYPE" VARCHAR2(50),"TYPE" VARCHAR2(50),"PK" VARCHAR2(512));
​
Table created.
#插入数据
SQL> insert into "BACKUP"."TABLE_TEST"  select * from TEST.TABLE_ASSOCIATION;
​
7944 rows created.
​
SQL> commit;
Commit complete.
​
#进行导出
userid=""
directory=backupdir
parallel=1
cluster=n
dumpfile=TABLE_TEST.dat
logfile=TABLE_TEST.log
tables=BACKUP.TABLE_TEST
compression=all
~
--正常导出,没有再遇到报错
expdp parfile=expdp_test.par 
​
Export: Release 11.2.0.4.0 - Production on Tue Jun 27 15:11:04 2023
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 Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "BACKUP"."SYS_EXPORT_TABLE_08":  BACKUP/******** parfile=expdp_test.par 
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 84 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "BACKUP"."TABLE_TEST"          12.29 MB    7944 rows
Master table "BACKUP"."SYS_EXPORT_TABLE_08" successfully loaded/unloaded
******************************************************************************
Dump file set for BACKUP.SYS_EXPORT_TABLE_08 is:/backup/TABLE_TEST.dat
Job "BACKUP"."SYS_EXPORT_TABLE_08" successfully completed at Tue Jun 27 15:11:08 2023 elapsed 0 00:00:04
​

2 对表单独采用expdp access_method=external_table方式,通过SQL层导出规避无效字符错误

     在Oracle官方DataPump Export (EXPDP) Fails With Error LPX-216 Invalid Character (Doc ID 1302916.1)可以查到类似的expdp采用默认的direct_path方式卸载数据时遇到无效字符报错,,给出的临时规避方法是ACCESS_METHOD=EXTERNAL_TABLE,测试导出同样成功

cbc877d413ce7f82311c9e1f5bdf8c6b.png

 

 


http://www.ppmy.cn/news/787143.html

相关文章

Linux 学习记录45(C++篇)

Linux 学习记录45(C篇) 本文目录 Linux 学习记录45(C篇)一、纯虚函数和抽象类1. 纯虚函数2. 抽象类 二、C中的异常处理1. 抛出异常2. 处理/捕获异常 三、模板(template)1. 模板函数(1. 模板函数的定义和调用(2. 模板函数需要显性调用的时机 2. 模板类3. 模板函数和模板类实现的…

41:了解隐式接口和编译期多态

面向对象编程世界总是以显式接口和运行期多态解决问题。 例如: class Widget { public:Widget();virtual ~Widget();virtual std::size_t size() const;virtual void normalize();void swap(Widget& other);//... }; void doProcessing(Widget& w) {if (w…

windows已有mysql的情况下 mysql8 安装

安装前先停掉本地已有的mysql服务https://dev.mysql.com/downloads/mysql/ 下载mysql压缩包解压创建 my.init 文件 [mysqld] port 3307 basedirF:\mysql-8.0.33-winx64\mysql-8.0.33-winx64 datadirF:\mysql-8.0.33-winx64\mysql-8.0.33-winx64\data max_connections200 cha…

三种主流快平台技术测评,你更青睐谁?

【CSDN 编者按】每当我们评估新技术时要问的第一个问题就是“它会给我们的业务和客户带来哪些价值?”,工程师们很容易对闪闪发光的新事物着迷,却经常会忽略这些新事物其实可能对我们的客户没有任何好处,反而只会让现有的工作流程更…

基于位置的服务(简介)

基于位置的服务(Location Based Services,LBS) 一、 基于位置的服务(Location Based Services,LBS)是指采用无线定位、GIS、Internet、无线通讯、数据库等相关技术交叉融合的一种基于空间位置的移动信息服务,是通过 获取移动用户的位置信息为…

盘点智能语音行业:Nuance没落 BAT围绕核心业务

随着人工智能浪潮的来临,以及物联网场景下应用需求的不断扩大,智能语音技术在智能家居、智能汽车、教育等领域的应用逐步深入,带动着智能语音产业规模的持续快速增长。再加上“互联网女皇”玛丽米克尔在报告中大篇章的描述语音识别交互带来的…

演讲实录丨李德毅 ADAS的繁荣与转型

ADAS的繁荣与转型 李德毅 中国人工智能学会理事长 中国工程院院士 李德毅:刚才主持人说机器人和人工智能有什么关系,我最近十年一直在搞智能驾驶,在我看来汽车最终成为一个轮式机器人,因为我们需要对汽车做一个转型。 在这个过程当…

【微服务】Day01(Vant、SpringCloud)

张皓岚 微信号:Jtzhanghl 第五阶段 19天课程 第一部分:5~6天 微服务的概念和实现的组件和框架,以及它们的功能 第二部分:10~11天酷鲨商城的前台项目完成 第三部分:3天虚拟机Linux系统Docker\其它应该掌握的知识 学习方法: 最重要的,还是反复练习,练习并不是炒代码,要知…