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

问题背景:

        接用户报障,数据库每天晚上正常的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.hqwc.cn/news/14641.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两个好用到爆的Python模块,建议收藏!

在日常开发工作中,经常会遇到这样的一个问题:要对数据中的某个字段进行匹配,但这个字段有可能会有微小的差异。比如同样是招聘岗位的数据,里面省份一栏有的写“广西”,有的写“广西壮族自治区”,甚至还有写…

如何修复ssh漏洞进行版本升级

目录 一、ssh低版本漏洞信息 OpenSSH GSSAPI 处理远端代码执行漏洞 OpenSSH GSSAPI认证终止信息泄露漏洞 OpenSSH X连接会话劫持漏洞 二、升级ssh版本进行修复漏洞 第一步 安装Telnet服务 第二步 重启服务 第三步 安装依赖环境 第四步 备份ssh老版本文件 第五步 导入…

【动态规划上分复盘】下降路径最小和|礼物的最大价值

欢迎 前言一、动态规划五部曲二、下降路径最小和思路:动态规划解法具体代码如下 三、礼物的最大价值思路:动态规划具体代码如下: 总结 前言 本文主要讲述动态规划思路的下降路径最小和以及礼物的最大价值两道题。 一、动态规划五部曲 1.确定状态表示&a…

python_day3_str

字符串str 按索引下标查找 str Hi, world, follow, admin print(str[0]) print(str[-1])index() str Hi, world, follow, admin print(str.index(world)) #首字母下标 print(str.index(w))字符串.replace(字符串1,字符串2):…

【Elasticsearch】初识elasticsearch

目录 初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK技术栈 1.1.3.elasticsearch和lucene 1.1.4.为什么不是其他搜索技术? 1.1.5.总结 1.2.倒排索引 1.2.1.正向索引 1.2.2.倒排索引 1.2.3.正向和倒排 1.3.es的一些概念 1.3.1.文档…

数分面试题:赛马问题

问题一: 25匹马,一个赛道,每次可以跑5匹马,在没有计时器的情况下,怎么用最小的比赛次数知道最快的前三名 关键点:通过前面的比赛,排除掉没有悬念的马(能确定有3匹马比它快的&#…

Android studio 引入不了R包,手动引入显示红色。可以跑起来却没问题

之前在这个问题踩坑2次,遂记录一下。 问题是:工程里找不到自己包名的R,手动导入显示红色,Run起来倒是没问题 尝试过Clean,Rebuild,清缓存,重启,都没用。 最终发现是没有在 Android…

【Web3】MetaMask钱包配置

目录 主网更换测试网 私钥如何登录钱包 主网更换测试网 私钥如何登录钱包

【WebGIS初学到入职】(15)入职一年的总结与分享

题外话 看看大纲可以怎么写,问问ChatGPT: ……算了,还是随便写写吧。 所以时间过得也是有够快的,这就一年了。 平淡 入职一年,已经看到好些位女同事结婚了(男同事一个没有)。领导和同事都挺…

使用ResponseBodyAdvice返回值为String出现cannot be cast to java.lang.String异常

使用ResponseBodyAdvice返回值为String出现cannot be cast to java.lang.String异常 背景 由于项目中为了全局返回统一的JSON格式,使用ResponseBodyAdvice进行拦截,拦截的时候会将返回的信息统一一个对象返回到前端。但是有的同事将一个String的响应对象…

Nuxt3 components公共组件

1.目录结构 效果实现:写一个公共的right组件,在index和about页面同时引用它 2.index页面引入 index页面显示效果 about页面引用及效果

文件共享平台Pingvin Share

本文完成于 2 月上旬。最近正好应网友要求折腾了 ClamAV,所以翻出来一起发了,可以作为 ClamAV 的一个应用示例; 什么是 Pingvin Share ? Pingvin Share 是自托管文件共享平台,是 WeTransfer 的替代品。使用 Pingvin Sh…