背景:
新项目要求用国产数据库,作为实施人员,被要求将oracle数据导入达梦数据库(linux)。研究了一番,倒是能导入了,但其实还是有问题,只能后面看情况了。
整体思路:
其实这个是分场景,本例场景是linux版oracle迁移到linux的dm,不是同一个服务器,且两台服务器网络不通,且没有dm可视化管理工具能连接dm数据库,现在挨个场景说下
场景一:oracle与dm数据库能互联
这个场景相对简单,能连可视化工具的话,直接用DM数据迁移工具即可(Dts)
一.创建工程
打开dm数据库迁移工具后,点击创建工程,输入名称描述保存即可
二.新建迁移
点击工程,下拉点开迁移,右键,新建迁移,填写名称描述,确定即可
三.执行迁移
四.开始迁移(待补充)
场景二: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库数据表内容及缺失情况,补足缺失数据
问题:
- 达梦创建用户时会自动创建同名schema,但是此时用dimp命令却无法导入,因为导入时指定schema的拥有者是sysdba;
用sysdba导入后吧,又无法创建用户了,因为同名schema已存在,这就是比较扯淡的事情了,而且目前我这没找到其他办法解决,只能创建另外一个用户 - 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