当前位置: 首页 > news >正文

【达梦数据库】异构数据库迁移到达梦

目录

  • 1、迁移准备
  • 2、正式迁移
  • 3、问题处理
    • 3.1、return附近出现错误
      • 3.1.1、排查过程
      • 3.1.2、问题原因
      • 3.1.2、解决方法
    • 3.2、对象[XXX]处于无效状态-类型1
      • 3.2.1、排查过程
      • 3.2.2、问题原因
      • 3.2.3、解决方法
    • 3.3、对象[XXX]处于无效状态-类型2
      • 3.3.1、排查过程
      • 3.3.2、问题原因
      • 3.3.3、解决方法
    • 3.4、违反引用约束[XXX]
    • 3.5、Java heap space
    • 3.6、记录超长
    • 3.7、数据未找到
      • 3.7.1、问题原因
      • 3.7.2、解决方法

因为数据迁移涉及到很多东西,最主要的还是参考官方给出的文档:https://eco.dameng.com/document/dm/zh-cn/start/oracle_dm.html。
以下是根据项目经验做的一些总结:

1、迁移准备

迁移统计

--------------------------------迁移对象统计-----------------------------------------用户		表数量	索引数量	分区表数量	包含LOB表数量	LOB占用空间		视图数量		触发器数量	函数数量	序列数量	同义词	物化视图数量	存储过程数量	DBLINK数量	最大单字段宽度	最大行宽度
1	ECOLOGY	8998	17317	0			3454			127.173828125	128			7041		76		7095	0		1			2152		1			4000			64222762
----------------------------------数据量---------------------------------------SEGMENT_TYPE	SUM(BYTES)/1024/1024/1024	COUNT(*)
1	TABLE			246.661682128906			5079
2	LOBSEGMENT		127.174194335938			2666
3	INDEX			68.050048828125				8464
4	LOBINDEX		0.1627197265625				2666

初始化达梦数据库

1、簇页大小:32
2、字符集:UTF-8
3、大小写是否敏感:是

创建和源库一样的用户,指定默认表空间

---------------------------------创建表空间---------------------------------------
create tablespace "ECOLOGY" datafile '/opt/dmdata/DAMENG/ECOLOGY.DBF' size 128 CACHE = NORMAL;
----------------------------------创建用户---------------------------------------
create user "ecology" identified by "Abc12345678" default tablespace "ECOLOGY";
----------------------------------授权---------------------------------------
grant "DBA","PUBLIC","RESOURCE","SOI","SVI","VTI" to "ECOLOGY";

2、正式迁移

迁移原则:

--数据量大的用户分开迁移
--1、对象定义迁移
------1.1【表】、【序列】、【同义词】、【自定义类型】的[对象定义]迁移
------1.2【存储过程】、【函数】、【包】、【触发器】迁移
------1.3【视图】、【物化视图】迁移
--2、表数据迁移
--3、约束索引迁移

3、问题处理

3.1、return附近出现错误

迁移报错,查看原因:return附近出现错误。

3.1.1、排查过程

DTS工具找到目的库源SQL:

CREATE OR REPLACE 
PROCEDURE "ECOLOGY"."LGCASSETSTOCK_EDITORVIEW" ( assetid_3     integer, warehouseid_2 integer, flag out integer , msg out varchar2, thecursor IN OUT cursor_define.weavercursor) 
AS count_1 integer; 
begin select count(*) into count_1 from LgcStockInOut a, LgcStockInOutDetail b where a.warehouseid=warehouseid_2 and b.assetid=assetid_3 and a.id=b.inoutid and a.stockmodeid<>-2; if count_1>0 then open thecursor for select -1 from dual; return; else open thecursor for select 1 from dual return; end if; 
end;2、重新执行报错:return附近出现错误

3.1.2、问题原因

SQL【select 1 from dual return;】dual后面缺少分号,

3.1.2、解决方法

改写SQL后重新执行即可

CREATE OR REPLACE 
PROCEDURE "ECOLOGY"."LGCASSETSTOCK_EDITORVIEW" ( assetid_3     integer,warehouseid_2 integer,flag out integer ,msg out varchar2,thecursor IN OUT cursor_define.weavercursor)
AS count_1 integer;
beginselect count(*) into count_1 from LgcStockInOut a, LgcStockInOutDetail bwhere a.warehouseid=warehouseid_2and b.assetid=assetid_3and a.id=b.inoutidand a.stockmodeid<>-2;if count_1>0 then open thecursor for select -1 from dual;return;else open thecursor for select 1 from dual;return;end if;
end;

3.2、对象[XXX]处于无效状态-类型1

迁移报错,查看原因:对象[COWORK_APPLY_INFO_ID_TRIGGER]处于无效状态

3.2.1、排查过程

1、查看源库触发器状态,有效
Select * From dba_triggers WHERE TRIGGER_NAME = 'COWORKBASESET_TRIGGER'; 
2、通过管理工具查看目的库触发器状态,无效,且编译错误。
3、找到目的库源SQL
CREATE OR REPLACE TRIGGER "ECOLOGY"."COWORKBASESET_TRIGGER"
before insert on "ECOLOGY"."COWORK_BASE_SET" 
for each row
begin select coworkbaseset_seq.nextval into:new.id from sys.dual; end;
4、重新执行报错:无效的表或视图名[DUAL]

3.2.2、问题原因

达梦数据库不支持sys.dual的写法

3.2.3、解决方法

改写SQL:sys.dual改成dual,重新执行即可

CREATE OR REPLACE TRIGGER "ECOLOGY"."COWORKBASESET_TRIGGER"
before insert on "ECOLOGY"."COWORK_BASE_SET" 
for each row
begin select coworkbaseset_seq.nextval into:new.id from dual; end;

3.3、对象[XXX]处于无效状态-类型2

迁移报错,查看原因:对象[WORKFLOW_BASE_GETPINYIN]处于无效状态

3.3.1、排查过程

1、查看源库对象[WORKFLOW_BASE_GETPINYIN]状态,有效
Select * From dba_triggers WHERE TRIGGER_NAME = 'WORKFLOW_BASE_GETPINYIN'; 
2、通过管理工具查看目的库对象[WORKFLOW_BASE_GETPINYIN]状态,无效且编译错误,
3、重新编译,错误消息: 对象[GETPINYIN]处于无效状态
4、查看源库对象[GETPINYIN]状态,有效
SELECT * FROM dba_objects WHERE object_type='FUNCTION' and object_name='GETPINYIN' 
5、通过管理工具查看目的库对象[GETPINYIN]状态,无效且编译错误,
6、重新编译,错误消息: 无法解析的成员访问表达式[USERENV]

3.3.2、问题原因

达梦数据库不支持USERENV(‘LANGUAGE’)的写法

3.3.3、解决方法

1、改写SQL:SYS_CONTEXT('USERENV','LANGUAGE')代替USERENV('LANGUAGE')2、重新执行SQL成功,对象[GETPINYIN]状态有效
3、重新编译对象[WORKFLOW_BASE_GETPINYIN]

3.4、违反引用约束[XXX]

参考链接: 违反引用约束

3.5、Java heap space

参考链接: Java heap space

3.6、记录超长

参考链接: 记录超长

3.7、数据未找到

迁移报错,查看原因:数据未找到

3.7.1、问题原因

1、先迁移约束索引,后迁移数据、会出现这样的问题
2、DTS版本问题。

3.7.2、解决方法

1、按照顺序重新迁移对象。
2、换个DTS新版本

相关文章:

【达梦数据库】异构数据库迁移到达梦

目录 1、迁移准备2、正式迁移3、问题处理3.1、return附近出现错误3.1.1、排查过程3.1.2、问题原因3.1.2、解决方法 3.2、对象[XXX]处于无效状态-类型13.2.1、排查过程3.2.2、问题原因3.2.3、解决方法 3.3、对象[XXX]处于无效状态-类型23.3.1、排查过程3.3.2、问题原因3.3.3、解…...

抽象类和接口(1)

抽象类&#xff1a; 什么是抽象类&#xff1a; 听着就很抽象&#xff0c;确实挺抽象&#xff0c;先来写一个抽象类感觉一下&#xff1a; 这就是抽象类&#xff01; 在 Java 中&#xff0c;一个类如果被 abstract 修饰称为抽象类&#xff0c;抽象类中被 abstract 修饰的方法…...

epoll内核原理与实现详解

目录 1 epoll相关理论基础 1.1 I/O多路复用技术 1.2 事件驱动模型 1.2.1 基本概念 1.2.2 优缺点分析 1.2.3 与epoll的关联 1.3 epoll机制简介 1.3.1 核心原理 1.3.2 优点 2 epoll内核原理 2.1 epoll数据结构 2.1.1 主要数据结构 2.1.2 数据结构关系 2.2 epoll工作…...

被低估的SQL

SQL是现代数据库管理系统中不可或缺的一部分。尽管它的使用已十分普遍&#xff0c;但在数据处理领域&#xff0c;SQL的某些功能和潜力仍然被许多人低估。接下来&#xff0c;小编将与您一起&#xff0c;探讨SQL的一些被忽视的特性&#xff0c;揭示它在数据管理中的真正实力。 1.…...

数字证书、数字签名及其关系

一.数字证书与数字签名 1.数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。简单地说&#xff0c;数字证书是一段包含用户身份信息、用户公钥信息以及份验证机构数字签名的数据。 通俗理解&#xff1a;数字证书相当于【身份证】 —— 确认你…...

一文读懂:如何将广告融入大型语言模型(LLM)输出

本文是我翻译过来的&#xff0c;讨论了在线广告行业的现状以及如何将大型语言模型&#xff08;LLM&#xff09;应用于在线广告。 原文请参见”阅读原文“。 在2024年&#xff0c;预计全球媒体广告支出的69%将流向数字广告市场。这个数字预计到2029年将增长到79%。在Meta的2024…...

godotenv拜读

简介 应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。 但是在实际开发中&#xff0c;如果同一台机器运行多个项目&#xff0c;设置环境变量容易冲突&#xff0c;不实用。godotenv库从.env文件中读取配置&#xff0c;…...

解析REST API与OpenAPI之差异:避免混淆

在网络API领域&#xff0c;常提及的两种术语为Rest API与Open API&#xff0c;其既存在差异亦存在联系。前者是一种API设计方式&#xff0c;后者则是一种API描述及定义规范。值得注意的是&#xff0c;OpenAPI 可用于描述和定义REST API。 什么是REST API&#xff1f; REST API …...

一篇文章就搞懂了:过虑器 、拦截器 、监听器是什么

java 过虑器 、拦截器 、监听器的区别? ‌实现原理‌&#xff1a; 过滤器基于函数回调实现。拦截器基于Java的反射机制实现。监听器用于监听特定事件的发生&#xff0c;并作出相应处理。 ‌使用范围‌&#xff1a; 过滤器依赖于Tomcat等容器&#xff0c;主要用于Web程序。拦截…...

本体映射与本体集成

文章目录 本体映射与本体集成本体映射分类知识挖掘是从己有的实体及实体关系出发挖掘新的知识,具体包括知识内容挖掘和知识结构挖掘。 本体映射与本体集成 解决本体异构的通用方法是本体集成与本体映射。本体集成直接将多个本体合并为一个大本体,本体映射则寻找本体间的映射…...

华媒舍:10种提升推特大V发文推广曝光率的方式

在社交媒体时代&#xff0c;推特已成为许多大V达到更广泛受众的重要渠道。并非所有的推文都能获得理想的曝光率。为了帮助大V们提升推文的曝光率&#xff0c;本文将介绍10种有效的方式。 1. 精心构思内容 好的内容是吸引读者和提升曝光率的关键。大V们应该从听众的角度出发&am…...

前端本地存储数据:深入解析与代码示例(Cookie、LocalStorage、SessionStorage和IndexedDB)

在现代Web应用中&#xff0c;前端本地存储是实现用户个性化体验的关键技术。本文将深入探讨前端本地存储的四种主要技术&#xff1a;Cookie、LocalStorage、SessionStorage和IndexedDB&#xff0c;并提供具体的代码示例。 Cookie 简介 Cookie是由服务器创建并存储在用户浏览…...

Java语言程序设计基础篇_编程练习题*18.21 (将十进制数转换为二进制数)

*18.21 (将十进制数转换为二进制数) 编写一个递归方法&#xff0c;将一个十进制数转换为一个二进制数的字符串。方法头如下: public static String dec2Bin(int value)编写一个测试程序&#xff0c;提示用户输入一个十进制数&#xff0c;然后显示等价的二进制数。 代码示例 …...

中年转行新可能:18 个月迈向大模型提示词工程师

【导读】 人到中年&#xff0c;想半路转行成为大模型提示词工程师&#xff0c;这可行吗&#xff1f;最近&#xff0c;一位国外小哥成功转行&#xff0c;他在一篇干货满满的硬核博客中给出了答案&#xff1a;完全可行&#xff01; 转行成为大模型提示词工程师&#xff0c;到底…...

C++通过返回值和输出参数的原理是什么?分别有什么优势和缺点?

C中&#xff0c;通过返回值和输出参数&#xff08;通常是通过引用或指针&#xff09;是函数与外部世界交换数据的两种主要方式。它们各自有着不同的原理和优缺点。 通过返回值 原理&#xff1a; 当函数通过返回值向调用者传递数据时&#xff0c;它实际上是在函数执行完毕后&…...

AI客服机器人开启企业客户服务新纪元

随着人工智能(AI)技术的迅猛发展&#xff0c;使得AI客服机器人走进了我们的视野&#xff0c;成为提高客户满意度和业务效率的不二法宝。这些智能机器人不仅能够处理海量信息&#xff0c;还能为客户提供个性化的服务体验。 一、AI客服机器人的基本原理 AI客服机器人是基于人工智…...

TPM项目课题的确定需要考虑哪些因素?

确定一个合适的TPM项目课题&#xff0c;是企业启动并成功实施TPM计划的第一步。这一过程不仅需要深入洞察企业现状&#xff0c;还需前瞻性地规划未来发展。详情如深圳天行健精益化生产管理咨询公司下文所述&#xff1a; 一、企业战略目标 1.与企业长期发展规划的契合度 -TPM项…...

Rust 数据类型

文章目录 发现宝藏1. 标量类型1.1 整型1.2 浮点型1.3 布尔型1.4 字符型 2. 复合类型2.1 元组2.2 数组 3. 总结 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 Rust 是一种静态…...

C#无标题栏窗体拖动

要实现C#无标题栏窗体的拖动功能&#xff0c;可以通过以下步骤实现&#xff1a; 在窗体的构造函数中添加以下代码&#xff0c;以去掉标题栏&#xff1a; this.FormBorderStyle FormBorderStyle.None;然后&#xff0c;添加以下代码以处理鼠标按下事件&#xff1a; private c…...

MySQL容器配置连接数数,镜像重启生效

若有不理解&#xff0c;可以问一下这几个免费的AI网站 https://ai-to.cn/chathttp://m6z.cn/6arKdNhttp://m6z.cn/6b1quhhttp://m6z.cn/6wVAQGhttp://m6z.cn/63vlPw 方法一 在 docker-compose.yml 中配置 MySQL 的连接数&#xff0c;可以通过环境变量或配置文件来实现。以下…...

初探Taotoken模型广场如何帮助开发者快速选型与切换模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初探Taotoken模型广场如何帮助开发者快速选型与切换模型 当开发者开始一个新的大模型应用项目时&#xff0c;面对市场上众多的模型…...

C语言数组内存布局解析:从连续存储到性能优化实践

1. 项目概述&#xff1a;从内存视角重新认识C语言数组很多C语言初学者&#xff0c;包括一些已经工作一两年的朋友&#xff0c;对数组的理解可能还停留在“一组连续的同类型变量”这个层面。这没错&#xff0c;但如果你只看到这一层&#xff0c;写代码时就容易踩坑&#xff0c;尤…...

性能优化必看:你的Unity粒子特效为什么这么卡?从ParticleSystem参数入手排查

Unity粒子特效性能优化实战指南&#xff1a;从参数调优到帧率提升 1. 粒子特效性能问题的根源剖析 在移动端和VR项目中&#xff0c;粒子特效往往是性能瓶颈的重灾区。一次性能审计中&#xff0c;某款手游的瀑布场景因未限制粒子最大数量&#xff0c;导致中端机型帧率骤降至18fp…...

【必记】2026年 {论文题} |范文记忆提纲-A

第一篇&#xff1a;规划绩效域《论信息系统项目的规划绩效域》一、项目背景段落1&#xff1a;平台立项背景目的&#xff1a;推进智能制造建筑工业化&#xff0c;达成高效、高质、低耗、低排发起方&#xff1a;市住建局平台模块&#xff1a;十大功能模块&#xff08;市场监管、安…...

VisualHMI灵敏度调校全攻略:从触摸校准到性能优化

1. 项目概述&#xff1a;从“调参”到“调感”的界面设计进阶在工业HMI&#xff08;人机界面&#xff09;开发领域&#xff0c;尤其是使用像VisualHMI这类图形化设计软件时&#xff0c;“调节灵敏度”这个需求&#xff0c;远不止是拖动一个滑块、输入一个数值那么简单。它背后牵…...

IC设计五大典型Bug剖析:从CDC到软硬件协同的防御性设计

1. 项目概述&#xff1a;IC设计中的那些“老朋友”在芯片设计的江湖里混迹多年&#xff0c;我越来越觉得&#xff0c;我们这些IC工程师&#xff08;ICer&#xff09;的日常&#xff0c;与其说是在创造&#xff0c;不如说是在与各种层出不穷的“老朋友”——也就是bug——斗智斗…...

高通865刷机救砖实战:从驱动准备到QPST全流程解析

1. 高通865刷机救砖前的准备工作 遇到手机变砖的情况&#xff0c;很多小伙伴第一反应就是慌。别急&#xff0c;我当初第一次给高通865设备救砖时也手忙脚乱&#xff0c;后来发现只要工具准备齐全&#xff0c;整个过程其实挺简单的。咱们先把这些必备工具和文件都准备好&#xf…...

明日方舟玩家必备:MAA助手如何帮你自动完成每日任务?

明日方舟玩家必备&#xff1a;MAA助手如何帮你自动完成每日任务&#xff1f; 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: h…...

OpenClaw 上下文瘦身:3 个实验

这篇不是讲“提示词怎么写得更优雅”。我只看一个更硬的问题&#xff1a;Agent 跑久以后&#xff0c;上下文到底是怎么胖起来的&#xff0c;哪一刀最值得先砍。实验脚本和结果都放在本地目录里&#xff0c;可以复跑。你大概见过这种故障&#xff1a; Agent 前 10 分钟很听话&am…...

简历投了全石沉大海?实测3个免费AI简历神器,HR秒通过、面试翻3倍!

3个实测免费的AI简历神器&#xff0c;不用花钱、不用登录&#xff0c;直接让简历过ATS、获面试&#xff0c;应届生/职场人闭眼冲&#xff01;简历优化本身就讲究精准度&#xff0c;尤其是ATS筛选逻辑&#xff0c;很多工具要么收费高&#xff0c;要么改完还是不贴合JD&#xff0…...