云贝教育 |【技术文章】迁移工具说明

19975296942 · · 1435 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1.工具演示

这两个文件放在同一目录下,然后打开cmd,在jar包所在目录执行下面命令

java -jar Migration-0.0.1-SNAPSHOT.jar

如下

如果报错8080端口被占用,可以尝试修改application.yml配置文件里的端口号再次执行

然后浏览器输入http://localhost:8080/,出现下面的页面

选择好数据源,然后选择好对象,点击第一个按钮,就会下载此对象以及此对象所有依赖,如果需要对比两个环境不同的代码进行迁移,则填好对象后,点击第二个按钮,就会下载不同的对象。

2. application.yml说明

继续看这个图

 

driver-class-name: oracle.jdbc.OracleDriver表示只能读取oracle数据库

url是固定写法,比如我的测试环境监听如下

这样就对应了ip+端口+服务名

 

Local表示当前测试环境,remote可以表示正式环境或者待迁移代码的环境,目的是从local迁移到remote

3. 数据库用户要求

在mapper文件中,涉及到dba_objects,dba_dependenciesd等权限查询依赖读写

需要DBMS_METADATA下载对象,

需要DBMS_CRYPTO 进行散列,从而判断对象是否发生了改变(可以使用第三方的散列工具,防止不同版本的数据库之间散列函数不同导致结果不同)

因此下面给出从零开始创建用户并授权语句

初始化用户 授权

“初始化用户”需要自行修改表空间,如果用户已经存在,可以只执行“授权”

两个环境local和remote用户都要授权,最好不要用管理员用户,以防出现异常或者JAR包被修改导致数据库对象受损,只要是只读用户,数据库会保证对象不被修改,从头到尾执行的存储过程只有DBMS_METADATA,DBMS_CRYPTO 和dbms_monitor

4. 初始化对象并测试

执行下面的脚本进行测试

初始化迁移环境

然后回到页面,执行下载

压缩包内容如下:

按顺序编译

 

5. 端点服务

前端页面采用thymeleaf开发,可以自行实现前端页面,这里也提供了端点服务,可以直接用postman调用

  • GET请求

1. 下载所有程序包:

http://localhost:8080/downloadAllDependenciesFile?owner=APPS&objectName=CUX_TABLE_PUB&objectType=PACKAGE&dataSource=local

2. 下载依赖图:

http://localhost:8080/downAllDependenciesGraph?owner=APPS&objectName=CUX_TABLE_PUB&objectType=PACKAGE&dataSource=local

 

3. 对比并下载源码

http://localhost:8080/downloadCompareDependenciesFile?owner1=APPS&objectName1=CUX_TABLE_PUB&objectType1=PACKAGE&dataSource1=local&owner2=APPS&objectName2=CUX_TABLE_PUB&objectType2=PACKAGE&dataSource2=remote

 

  • POST请求

1. 获取所有对象节点

http://localhost:8080/getAllDependencies

{
"owner":"APPS",
"objectName":"CUX_TEST_A",
"objectType":"PACKAGE",
"dataSource":"local"
}

 

示例如下

红框是需要注意修改的

 

2. 下载图

http://localhost:8080/allDependenciesGraph

{
"owner":"APPS",
"objectName":"CUX_TEST_A",
"objectType":"PACKAGE",
"dataSource":"local"
}

 

3. 下载图数据结构

http://localhost:8080/allDependenciesGraphCode

{
"owner":"APPS",
"objectName":"CUX_TEST_A",
"objectType":"PACKAGE",
"dataSource":"local"
}

 

6. 其它说明

1.项目JDK版本是JDK17,如果不能正常运行,请使用java --version查看并升级当前版本

下图是我的JRE版本(JDK包括JRE,JDK17及以上都可以适配)

如果报错,可以去下面链接下载配置JDK

Windows 10 配置Java 环境变量 | 菜鸟教程 (runoob.com)

 

2.依赖图基于jgrapht-core实现,效果着实有点丑,可以使用http://localhost:8080/allDependenciesGraphCode返回边和顶点信息,然后使用第三方框架自己实现图

3.虽然项目存储节点信息的对象全是原型Bean,但是未充分测试并发情况下,其对象是否被其它请求篡改,因此最好只在本地部署,如果部署到服务器,需要多次测试(部署方法是一样的)

4.为监控本工具对数据库负载影响,已为工具申请的会话设置了客户端标识

可以用下面sql进行查询

select * from v$session s where s.client_identifier='mybatis';

当开启资源消耗统计后就可以进行查询

begin
dbms_monitor.client_id_trace_enable(client_id => 'mybatis');
end;
select * from v$client_stats;--需要开启client_id_trace_enable

当开启跟踪后就能为这些会话生成跟踪文件

begin
dbms_monitor.client_id_trace_enable(client_id => 'mybatis');
end;

生成跟踪文件语法

 trcsess  output=/tmp/mybatis_trace.trc  clientid='mybatis' 
/usr/local/oracle19c/diag/rdbms/prod_primary/DUPDB/trace/*.trc   
/usr/local/oracle19c/diag/rdbms/prod_primary/DUPDB/trace替换成自己的trace文件所在路径

7.报错信息暂时未完善,比如你输入不存在的对象,可能界面没有反应,控制台会输出报错

8.两个数据库的对象必须要求owner(schema)一致,如果测试环境的APPS用户和正式环境的CUX用户,即使源码一致,仍然视为不同的对象

9.输入的字符串必须大写

 

 

7. 原文链接

迁移工具说明 附件


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1435 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传