背景:现有Oracle Apex 19.2环境,有若干工作区及应用
目标:将环境中APEX 19.2 版本,升级到APEX20.1
方法:drop apex、ords相关用户,重新安装apex 20.1文件
为确保升级后数据及应用稳定,按流程进行:
- 进入APEX管理后台,查看所有工作区,避免遗漏应用
- 导出所有应用,以DOS格式导出对应SQL文件
- 每个工作区对应restful服务导出 (这条容易被遗忘)
- 导出Oracle中对应用户
- 将Tomcat/webapps下 /i 文件夹更改别名,也就是安装apex时,里面对应的images文件夹
- drop所有APEX用户及ORDS用户
- 安装apex20.1及 ords
- 导入应用
- 导入restful
- 测试升级后的应用,是否正常启动
导出数据一般是在服务器上进行,推荐使用expdp命令导出相关用户,且最好指定log,否则导出多个用户时,log会覆盖。
expdp system/用户密码 directory=逻辑目录 dumpfile=esun_expdp_2020011.dmp schemas=esun log=esun_log_2020011.log
卸载APEX及ORDS用户相关操作:
alter session set "_oracle_script"=true;
drop user apex_190200 cascade;
drop user apex_instance_admin_user cascade;
drop user apex_listener cascade;
drop user apex_public_user cascade;
drop user apex_rest_public_user cascade;
drop user ords_metadata cascade;
drop user ords_public_user cascade;
drop user flows_files cascade;
安装apex 20.1、ords 按如下教程操作即可,只需参考里面安装APEX、安装ORDS部分。
参考链接:Oracle与Apex 安装教程
其他关于应用导出、导入,restful导出导入 按照Oracle Apex对应提示即可,这里不作详述。
当restful导入后,升级就已经结束,剩下就是测试新版本上应用的兼容性了。
目前发现一个BUG,apex 20.1上,如页项P5000_SELECT在LOV模式下,如果对应值列表来源是一个SQL,且有别名 D 、R则LOV弹框不会展示数据。(下拉选择 不会存在该问题)
select name d,id r from emp
如不用别名或者别名非D、R,则LOV数据会展示出来。
select name di,id ri from emp
还有一点,APEX 20.1上如页项与对应值列表数据类型不一致,会报错。在APEX 19.1及之前版本,会以页项的值为主,且不会报错。