MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 数据库 / 正文

Oracle低代码平台APEX如何实现工作区所有应用一次导出和导入

2024-11-26 19:54 huorong 数据库 6 ℃ 0 评论

APEX环境的迁移往往涉及三个方面:

  1. 业务数据的迁移,一般是业务数据相关Schema的导入导出,如使用工具expdp/impdp等
  2. 目标环境APEX的安装,迁移时一般会在目标环境下安装最新的APEX版本
  3. APEX工作区及下面所有应用的迁移

第一点主要是DBA的工作,也有成熟的工具可用。第二点主要就是一个APEX的安装过程。这里主要记录第三点:

关于工作区的导出,可以直接在界面上操作,将整个工作区配置导出来,然后再导入到目标APEX环境就可以了,这点相当于直接在界面上点一下导出、导入,非常简单。但是,导出工作区并不会将下面的应用导出来。虽然应用也可以在界面上逐个导出,但如果应用很多那就很麻烦。

Oracle提供了一个很好用的工具SQLcl,相当于SQL Developer的命令行版本,直接减压即可(依赖于java11+,所以可能提前安装java 17即可,并设置一下JAVA_HOME和PATH环境变量)。目标环境下工作区创建或导入后,就可以迁移应用了。

一次性导出所有应用的脚本 (export_all_apps.sh):

#!/bin/sh

DB_CONNECTION=testuser/MyPassword123@192.168.1.9:1521/PDB1.mydb.com  #数据库连接
WSID=12290542509412485 #工作区ID,在界面上【关于】菜单里面有
EXP_DIR=./apex_apps #应用导出位置,它是相对目录,相对于当前执行命令的目录

sql $DB_CONNECTION << EOF
    apex export -workspaceid $WSID -dir $EXP_DIR -expPubReports -expSavedReports -expSupportingObjects Y -expType APPLICATION_SOURCE
EOF

导入单个应用的脚本 (import_apex_app.sh)

#!/bin/sh

WORKSPACE=$1
APPID=$2
IMP_DIR=$3
DB_CONNECTION=$4

sql $DB_CONNECTION << EOF

echo '*** Setting parameters ...'

begin
   apex_application_install.set_workspace_id($WORKSPACE);
   apex_application_install.set_application_id($APPID);
   apex_application_install.generate_offset;
   apex_application_install.set_auto_install_sup_obj( p_auto_install_sup_obj => true );
end;
/

echo '*** Importing the application f$APPID.sql'

@$IMP_DIR/f$APPID.sql

echo '*** Importing the application f$APPID.sql...[Done]'

EOF

一次性导入所有应用的脚本(import_all_apps.sh,它会循环调用导入单个应用的脚本import_apex_app.sh)

#!/bin/sh

DB_CONNECTION=testuser/MyPassword123@192.168.1.10:1521/PDB1.mydb.com  #数据库连接
IMP_DIR=./apex_apps  #之前应用导出的位置,它是相对目录,相对于当前执行命令的目录
WORKSPACE=11174905805663674  #工作区ID,在界面上【关于】菜单里面有

apps=$(ls $IMP_DIR)

for app in $apps 
do
   appid=$(echo $app | sed 's/^f//' | sed 's/\.sql//')
   ./import_apex_app.sh $WORKSPACE $appid $IMP_DIR $DB_CONNECTION
done

Tags:oracle的数据导出

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言