大气学校网站,做企业网站用什么cms,徐州网站推广,下载app官方正版目录 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、迁移准备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、解决方法 3.4、违反引用约束[XXX]3.5、Java heap space3.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.warehouseidwarehouseid_2 and b.assetidassetid_3 and a.idb.inoutid and a.stockmodeid-2; if count_10 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.warehouseidwarehouseid_2and b.assetidassetid_3and a.idb.inoutidand a.stockmodeid-2;if count_10 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、解决方法
改写SQLsys.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_typeFUNCTION and object_nameGETPINYIN
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新版本