一次跨版本逻辑迁移的异常记录
本文于 115 天前发布,最后更新于 115 天前

一、问题背景

数据迁移用户SJXT下的数据,由版本8.1.2.18(1.2.18-21.10.12-148712-10013-ENT Pack15)迁移到8.1.3.26(–03134284058-20230614-193125-20046)版本中。

二、问题描述

迁移方案为用户级逻辑导出导入(OWNER)。导出导入均使用目标端工具,即直接将数据通过远程dexp到目标端,然后通过dimp导入。流程如下:

(1)目标端重建用户

drop user SJXT cascade;
create user "SJXT" identified by "xxxx" default tablespace "TBS_SJXT" default index tablespace "TBS_SJXT";
grant "SOI","VTI","PUBLIC","RESOURCE" to "SJXT";

(2)逻辑导出

./dexp USERID=sysdba/'"xxxxx"'@源端IP:5236 FILE=SJXT.DMP LOG=EXP_SJXT.LOG DIRECTORY=/data/soft OWNER=SJXT

(3)逻辑导入

nohup ./dimp USERID=sysdba/'"xxxxxx"'@localhost:5236 FILE=SJXT.DMP LOG=IMP_SJXT.LOG DIRECTORY=/data/soft OWNER=SJXT & 

导入日志中存在报错,源端共432张表,目标端导入314张表,118张表导入失败,通过日志查看到都是同样报错[WARNING]create table fail, import table XXXXXX …

详细日志细节如下:

----- [2025-08-08 20:13:22]import table:VIOLATIONS_DISCIPLINE_LAWS -----
[1/1548]create table VIOLATIONS_DISCIPLINE_LAWS  
 CREATE SCHEMA "SJXT" AUTHORIZATION  "SJXT" CREATE TABLE "VIOLATIONS_DISCIPLINE_LAWS"
(
"ID" VARCHAR2(50),
"MAJOR_DISCI_ILLEGAL_FACT" VARCHAR2(200),
"RESPONSIBLE_DEPARTMENT" VARCHAR2(200),
"BUSINESS_PROCESS" VARCHAR2(50),
"IS_RELY_EAT_INS" VARCHAR2(50),
"POLICY_PLAN_BREACH_P" VARCHAR2(50),
"FIVE_VOIDS_PROBLEM" VARCHAR2(50),
"NATURE_DISCIP_ILLEGAL_I" VARCHAR2(50),
"AMOUNT_INVOLVED" VARCHAR2(50),
"OFFENCE_OCCURRENCE_TIME" VARCHAR2(50),
"PROBLEMSCLUENO" VARCHAR2(50),
"S_FLAG" VARCHAR2(50),
"S_USER" VARCHAR2(50),
"S_DEPT" VARCHAR2(50),
"S_TDEPT" VARCHAR2(50),
"S_ODEPT" VARCHAR2(50),
"S_CMPY" VARCHAR2(50),
"S_ATIME" VARCHAR2(50),
"S_MTIME" VARCHAR2(50),
"INSURANCE_TYPE" VARCHAR2(50),
 CONSTRAINT "CONS134222904" CLUSTER PRIMARY KEY("ID")) STORAGE(CLUSTERBTR) ;

[WARNING]Error Code:-2109,Invalid constraint name [CONS134222904] 

[WARNING]create table fail, import table VIOLATIONS_DISCIPLINE_LAWS ...

可以看到是因为约束名无效导致建表失败。

三、问题复现与分析

后续通过测试环境复现报错,发现是数据库在后续版本新增了一个参数CHECK_CONS_NAME:在创建或重命名约束时,是否对约束名合法性进行检查。0:不检查;1:检查。

该参数新增于版本:

版本名称:DM8 三月月度版
发版日期:2023 年 4 月 17 日
版本号:select * from v$version;
DM Database Server 64 V8
DB Version: 0x7000c
03134284044-20230417-187846-20040

CONS+9位数字是数据库系统索引,由数据库自动维护生成的。参数早期会额外检查dimp导入时的建表语句,引起预期外的报错,从而因为约束名检查无法通过导致建表失败的迁移报错。

四、问题解决

逻辑导入之前临时修改该参数为0便可成功导入数据。参数修改方法:

SP_SET_PARA_VALUE(1,'CHECK_CONS_NAME',0);

记得数据导入后将参数修改回1,SQL如下:

SP_SET_PARA_VALUE(1,'CHECK_CONS_NAME',1);
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇