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

news2024/12/24 0:09:00

问题背景:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS7在线安装MySQL新手小白教程

1、下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm使用上面的命令下载安装用的Yum Repository yum -y install mysql57-community-release-el7-10.noarch.rpm开始安装MySQL服务器 yum -y install …

C++学习 数组

目录 数组 一维数组 数组名 案例:冒泡排序 二维数组 数组名 数组 数组就是一个集合,里面存放了相同类型的数据元素。 下面的数字对应为数组的下标(索引),可以看到索引范围为0~数组长度-1 特点: 数组中数据元素的数据类型相同。…

github软件包-golang,不同版本的使用--推荐

一、golang中获取github软件包,不同版本(V1,V2...)的使用: github中如何使用: golang语言使用的github的软件包,有时候不同版本如何切换,特别是有的版本变化比较多,例如在v1中没有…

Go语言程序设计(一)Go语言概述及基础

一、前言 为了尽可能获得最佳的运行性能,Go语言被设计成一门静态编译型的语言,而不是动态解释型的。Go语言的编译速度非常快,明显的要快过其他同类语言,比如C和C。 Go语言的官方编译器被称为gc。 Go语言具有以下几个特点&#x…

(css)盒子的阴影

(css)盒子的阴影 效果: 代码: box-shadow: inset 0 0 50px 2px #74eaff;解决参考:https://blog.csdn.net/weixin_52984349/article/details/125803515

docker部署私有化镜像仓库

为什么要部署私有化: 1.防止镜像因为内存不够被驱逐 2.方便内网服务器复用 部署步骤: docker pull registry // 如果嫌麻烦,也可以去我的资源里面去拿现成的,docker load -i registry.tar 到自己的docker里。"""如…

Django搭建图书管理系统02:创建并配置APP功能模块

📁 创建APP **Django中的APP(应用程序)是将功能模块组织在一起的单位,每个APP通常负责处理特定的功能。**开发者可以将不同功能的模块放在不同的app中, 方便代码的复用。app就是项目的基石,因此开发博客的第一步就是创…

[C++] C++11新特性介绍 分析(2): lambda表达式、function包装器、bind()接口

文章目录 [toc] C11**lambda 表达式**lambda 表达式lambda 表达式底层 包装器 functionfunction 包装普通可调用对象function 包装类内成员函数 bind()bind() 使用 及 功能1. 调整参数位置2. 绑定参数 C11 上一篇介绍C11常用的新特性只介绍了一部分. 本篇文章继续分析介绍. l…

Linux简介与安装

文章目录 前言一、Linux简介1.Linux是什么2.学完Linux后能做什么 二、Linux安装1.安装方式介绍2.安装Linux3.网卡设置4.安装SSH连接工具5. Linux目录结构 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然&…

括号生成(力扣)递归 JAVA

目录 题目描述:纯递归解法:递归 回溯: 题目描述: 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出&#xff1a…

《手把手教你》系列基础篇之1-python+ selenium自动化测试-环境搭建(详细)

1.环境搭建 基于python3和selenium3做自动化测试,俗话说:工欲善其事必先利其器;没有金刚钻就不揽那瓷器活,磨刀不误砍柴工,因此你必须会搭建基本的开发环境,掌握python基本的语法和一个IDE来进行开发&…

modelscope魔塔初探--TTS

官网 step1 可以选择指定模型&#xff0c;对于多情感的模型&#xff0c;还可以通过标签实现语气情感 from modelscope.outputs import OutputKeys from modelscope.pipelines import pipeline from modelscope.utils.constant import Taskstext <speak><emotion …

Springboot实现热部署

目录 1、问题阐述 2、实现方式 3、开始配置 3.1在pom.xml中添加依赖 3.2devtools配置 3.3修改IDEA配置 3.4测试一下 1、问题阐述 在实际项目开发过程中&#xff0c;每次修改代码就得将项目重启&#xff0c;重新部署&#xff0c;对于一些大型应用来说&#xff0c;重启时…

特征选择算法 | Matlab实现基于ReliefF特征选择算法的回归数据特征选择 ReliefF

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 特征选择算法 | Matlab实现基于ReliefF特征选择算法的回归数据特征选择 ReliefF 部分源码 %--------------------

五分钟就可以安装MySQL

目录 ⛈️一.什么是MySQL ⛈️二.为什么要使用MySQL ⛈️三.MySQL有什么优点 ⛈️四.官网&#xff1a; ⛈️五.下载 ⛈️六.安装 ⛈️七.查看 ⛈️八.修改密码 一.什么是MySQL MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它使用结…

【Python编程系列】1、Python安装

Python安装 1、下载安装包 官网地址:https://www.python.org/ 进入后,在Downloads菜单下选择python运行的系统环境: 以Windows系统为例,进入后,选择合适的版本下载: 2、安装Python软件包 双击可执行文件exe: 弹出安装窗口后: 我们一般选择"Install Now"的…

Linux 配置dns覆盖默认127.0.0.53

Linux dns默认127.0.0.53&#xff0c;在/etc/resolve.conf中存在 nameserver 127.0.0.53&#xff0c;手动修改无果&#xff0c;每次重启依旧127.0.0.53&#xff0c;因为这是系统生成的文件&#xff0c;resolvectl命令来查dns的配置。 要修改dns&#xff0c;先暂停dns服务&…

6 JSR303校验

6.1 加入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency> 6.2 在实体类上加注解 在实体类上加入Validated注解。并且在属性上方加入Emall(messag…

Selenium自动化测试技巧

目录 前言&#xff1a; Selenium自动化 跨浏览器测试中的Selenium 利用正确的定位器 数据驱动的测试 不要依赖特定的驱动程序 选择器顺序 使用PageObjects设计模式 提倡wait避免sleep 关闭Firebug起始页 前言&#xff1a; Selenium是一个广泛使用的自动化测试框架&a…

Android11 Settings加载流程

一、系统设置首页(一级菜单)&#xff1a; 1、Settings 之所以要在此定义空的Activity&#xff0c;是为了外部应用能直接跳转到XX_SettingsActivity界面&#xff0c;因为如果只是fragment的话&#xff0c;外部是没法跳转到fragment界面的&#xff0c;跳转到XX_SettingsActivit…