背景:

新项目要求用国产数据库,作为实施人员,被要求将oracle数据导入达梦数据库(linux)。研究了一番,倒是能导入了,但其实还是有问题,只能后面看情况了。

整体思路:

其实这个是分场景,本例场景是linux版oracle迁移到linux的dm,不是同一个服务器,且两台服务器网络不通,且没有dm可视化管理工具能连接dm数据库,现在挨个场景说下

场景一:oracle与dm数据库能互联

这个场景相对简单,能连可视化工具的话,直接用DM数据迁移工具即可(Dts)

达梦java对接 达梦 oracle_达梦java对接

一.创建工程

打开dm数据库迁移工具后,点击创建工程,输入名称描述保存即可

达梦java对接 达梦 oracle_vim_02


达梦java对接 达梦 oracle_oracle_03

二.新建迁移

点击工程,下拉点开迁移,右键,新建迁移,填写名称描述,确定即可

达梦java对接 达梦 oracle_数据库_04


达梦java对接 达梦 oracle_oracle_05

三.执行迁移

达梦java对接 达梦 oracle_vim_06

达梦java对接 达梦 oracle_oracle_07


达梦java对接 达梦 oracle_数据库_08

达梦java对接 达梦 oracle_oracle_09


达梦java对接 达梦 oracle_oracle_10

四.开始迁移(待补充)

场景二:oracle与dm数据库不能互联

1.本机建个win版dm8数据库;
2.连接公司内网把公司库数据用dm数据迁移工具迁移到本机的dm8数据库;
3.本机导出dm格式的导出文件;
4.上传到数据库服务器,用命令行导入数据;

导入命令:

./dimp USERID=yyq/yyq  FILE=a.dmp DIRECTORY=/opt/dmdbms LOG=a_dameng202008312036.log owner=yyq
5.创建另外一个用户自动生成新schema;
6.所有表create table as select * form vim.表名;
7.视图等其他内容单独创建;
8.对比原始oracle库与dm库数据表内容及缺失情况,补足缺失数据

问题:

  1. 达梦创建用户时会自动创建同名schema,但是此时用dimp命令却无法导入,因为导入时指定schema的拥有者是sysdba;
    用sysdba导入后吧,又无法创建用户了,因为同名schema已存在,这就是比较扯淡的事情了,而且目前我这没找到其他办法解决,只能创建另外一个用户
  2. oracle往达梦迁移时有些格式数据是无法迁移的,比如日期型,在oracle可以存的格式有些进不了达梦库;有些字段会提示超长,比如text类型,可能存在varchar2转换成达梦有问题,没具体研究,只能比对缺少数据后重新导入,根据报错扩展字段长度

其他常规操作

类比sqlplus命令:
./disql sysdba/sysdba@10.10.10.30:5236
--新建表空间
CREATE TABLESPACE test DATAFILE '/home/dmdba/data/DAMENG/test01.dbf' SIZE 1024;
--新建用户,密码最短8位
Create user 
create user test identified by TEST_SYS123 default TABLESPACE test;
--赋权,没研究,暂按dba
grant dba to auth_sys;
--新建schema
create schema vim_sys authorization vim_sys