由于Oracle数据库高昂的license费用、维护成本、数据安全隐患等等问题,国内数据库市场也涌现了一批性能优越的国产数据库产品,如武汉达梦、南大通用、人大金仓等,达梦数据库管理系统融合了分布式、弹性计算与云计算的优势,可满足用户多种需求,让用户能更加专注于业务发展,在2020年国产数据库市场排名第一,并连续多年蝉联首位。
本文旨在于梳理处从oracle11G数据库迁移至DM8数据库得结构与数据,以及有源码的Java应用程序中不兼容得部分,供有需要人士参考,响应国家IOE号召得同时少走弯路
报错提示:
cn.com.crc.iti.sqlparser.exception.SqlParserException:
dm.jdbc.driver.DMException: line 1, column 126, nearby [name] has error:
Syntax error
原始语句:
CREATE OR REPLACE FUNCTION CRVOTE.run ( methodName varchar2, params varchar2, encoding varchar2 )
RETURN varchar2 AS LANGUAGE java NAME
'Shell.run(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';
解决方案:如在迁移过程中识别到包含java应用,则从源库配置中获取jar包,手动上传到达梦路径
oracle11g与DM8中得权限定义有所不同,会导致迁移至DM后造成权限放大或者缩小等问题,因此在迁移前需要解决权限对应问题
例如:oracle11g中包含权限“CREATE ANY JOB”,达梦数据库中为“ADMIN JOB”
问题:由于数据库中有执行依赖、授权等相关影响会导致部分对象在迁移时报错
原因:达梦授权方案,用户对象中包含其他用户对象,因授权步骤在最后一步,所以无权限
解决思路:执行过程中,如果提示无权限,则提前对无权限的对象进行赋权
问题:创建DB_LINK的DDL语句,词法解析异常
syntax error, error in :'D BY VALUES ':1'
USING 'EDBDBZB'', expect null, actual VALUES, pos 76, line 3, column 39, token
原因:达梦的DBLINK有一些约束
1、数据库连接目前只支持 DM、Oracle 或 ODBC。
2、DM-DM 的同构数据库链接不支持 MPP 环境,DM 与异构数据库的数据库链接支持
3、增删改不支持 INTO 语句。
4、不支持使用游标进行增删改操作。
5、不支持操作远程表的复合类型列。
6、DBLINK 理论上不支持 LOB 类型列的操作,但支持简单的增删改使用lob语句
问题:oracle中存在同一模式下不同对象重名,但是在达梦数据库中同一模式下不允许重名
如:在oracle中创建一个物化视图,会自动创建一个同名得表,迁移至达梦时会报错有重名对象
解决思路:在迁移前梳理出所有重名对象,自动进行替换(重名率较高得对象有表、索引、视图等)
问题:数据库对象迁移到达梦数据库,对象创建时间与系统时间不符
如:角色迁移时间(电脑显示的时间)2022-05-09 09:54
达梦数据库显示的创建时间:2022-05-09 01:51:23.557566
解决思路:连接池建立会话的时区未设置,增加参数:localTimezone=480
创建表时DDL包含STORAGE信息,Oracle和达梦数据库STORAGE规则不同,导致报错对于 普通表和索引,DM8 提供了以下的存储参数:
问题:修改TYPE时使用ADD ATTRIBUTE添加属性报错
原因:目前达梦暂不支持修改TYPE时使用ADD ATTRIBUTE添加属性
ALTER TYPE "ABC"."TEST_OBJECT"
ADD ATTRIBUTE(INFO TEST_OBJECT_2) CASCADE
问题:达梦创建索引时报错
原因:目前达梦暂不支持PARAMETERS配置参数还包含自定义lexer词法解析器
CREATE INDEX "ABC"."D_CTX" ON "ABC"."D_VERSIONS" ("TEST_INDEX")
INDEXTYPE IS "CTXSYS"."CONTEXT" PARAMETERS ('
memory 26214400
datastore SCH.test_articles_datastore
filter ctxsys.null_filter
lexer SCH.test_articles_lexer language column article_language
section group SCH.test_article_sections
stoplist SCH.test_articles_stoplist
wordlist SCH.test_articles_wordlist')
PARALLEL 2
问题:oracle中创建用户ID,迁移至达梦后重新生成了用户ID
原因:暂未找到解决办法
问题:从oracle11G中迁移数据后进行对比发现部分数据对应不上
原因:在一步步查找原因中,感谢达梦支持同事耐心解答相关疑问
文章
阅读量
获赞