Oracle Apex 19.2 升级至21.2

两年前按照王方钢 Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技 系列文章安装Oracle apex

当时Oracle数据库版本为XE-11g,APEX版本为19.2,ORDS版本为18.2。

现在截止2022年3月,APEX最新版本为21.2,新版本增添许多强大的功能,所以想对原来的APEX进行升级。

APEX 21.2 需要数据库版本至少为12及以上,ORDS版本至少为19及以上,因此也需要同时升级ORACLE 数据库和ORDS。

系统版本Centos 7.3
Oracle xe-11g  --> xe-18g
ORDS   18.2    --> 21.2
APEX   19.2    --> 21.2

Oracle 官方都给出了详尽软件升级文档,本教程主要参考官方文档给出。

我的个人博客 https://tjfish.top/

升级前准备

备份

首先在阿里云做好备份,选用阿里云快照功能对整个磁盘做备份。

下载安装包

数据库选择XE-18c版本,因为官方支持将APEX数据从XE-11g导入到XE-18c。

ORACLE 数据库 https://www.oracle.com/database/technologies/xe18c-downloads.html

APEX https://www.oracle.com/tools/downloads/apex-v191-downloads.html

ORDS https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads.html

cd /u01/media/
wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/apex/apex_21.2.zip
wget https://download.oracle.com/otn_software/java/ords/ords-21.4.1.025.0904.zip

升级Oracle 数据库至XE 18c

从11g导出数据

参考文档:Exporting and Importing Data between Oracle Database XE 11.2 and 18c

新建数据导出目录

su - root
mkdir -p /u01/dump_folder

连接数据库进行授权

sqlplus "/ AS SYSDBA"
SQL> CREATE DIRECTORY DUMP_DIR AS '/u01/dump_folder';
SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
SQL> exit

导出数据(替换system_password为你的数据库系统管理员密码)

expdp system/system_password full=Y directory=DUMP_DIR dumpfile=DB11G.dmp logfile=expdpDB11G.log

导出成功后可以看到导出目录下的DB11G.dmpexpdpDB11G.log文件

卸载11g数据库

卸载数据库需要谨慎,确保自己已经做好数据备份。

参考文档: Deinstalling Oracle Database XE

执行下面命令进行数据库卸载,会清空一切数据文件和数据库软件,只留下数据库根目录和少许日志。

su - root
rpm -e oracle-xe

安装18c数据库

参考文档: Installing Oracle Database XE Using RPM Packages

首先安装预环境设置

cd /u01/media/

curl -o oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm

yum -y localinstall oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm

安装数据库

确保已经下载了xe-18c的安装包到/u01/media目录下

yum -y localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm

优化内存占用

安装完成后,需要初始化数据库。但是这一步特别消耗内存,至少需要1GB空闲内存。如果内存不足很可能中途卡死。可以按以下步骤提高系统可用内存。

首先关闭tomcat 和 nginx (以及其他可能占用内存的进程)

systemctl stop tomcat
systemctl stop nginx

使用Swap 分区,调整swappiness参数

vi /etc/sysctl.conf
#修改vm.swappiness 参数(0~20之间,鉴于你机器物理内存的大小)
vm.swappiness = 20
# 保存退出后执行
sysctl -p

通过free命令查看内存占用情况

初始化数据库

初始化过程中将输入新数据库的sys、system的密码,记得做好记录保存,之后也要用到。整个流程会比较久,需要耐心等待。

/etc/init.d/oracle-xe-18c configure

设置oracle 用户环境变量

为oracle账号设置环境变量,以便保证每次切换到oracle用户时,都可以直接使用sqlplus等命令

su - oracle
echo 'ORACLE_SID=XE' >> ~/.bash_profile
echo 'ORAENV_ASK=NO' >> ~/.bash_profile
echo '. /opt/oracle/product/18c/dbhomeXE/bin/oraenv' >> ~/.bash_profile

测试一下环境变量是否已设置成功。

source ~/.bash_profile

测试一下数据库是否安装完成。直接用sqlplus连接数据库,用户名输入system,密码输入安装时的密码,看是否能够正常连上数据库。

sqlplus

导入数据至18c

参考文档:Exporting and Importing Data between Oracle Database XE 11.2 and 18c

导入数据

连接数据库进行授权

sqlplus / AS SYSDBA
SQL> ALTER SESSION SET CONTAINER=XEPDB1;
SQL> CREATE DIRECTORY DUMP_DIR AS '/u01/dump_folder';
SQL> GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SYSTEM;
SQL> exit;

导入数据,system_password替换为刚刚设置的system 密码。

impdp system/system_password@localhost/xepdb1 full=Y REMAP_DIRECTORY='/u01/app/oracle/oradata/XE/':'/opt/oracle/oradata/XE/XEPDB1' directory=DUMP_DIR dumpfile=DB11G.dmp logfile=impdpDB11G.log

运行数据库导入后脚本

下载 https://www.oracle.com/technetwork/developer-tools/apex/application-express/apxfix-5137274.zip and extract the apfix.sql script on your server.

cd /u01/media
wget https://www.oracle.com/technetwork/developer-tools/apex/application-express/apxfix-5137274.zip
## 解压至apex目录
unzip apxfix-5137274.zip /u01/apex

连接数据库执行脚本,运行 apxfix.sql,参数是老版本APEX的schema 名称。比如,我apex是19.2版本,那么参数名称是APEX_190200 。

sqlplus / AS SYSDBA
SQL> ALTER SESSION SET CONTAINER=XEPDB1;
SQL> @apxfix.sql APEX_190200 
SQL> EXIT

升级APEX

确保已经下载APEX最新版至/u01/media目录

安装最新版本APEX

将老版本apex 备份

mv /u01/apex /u01/apex_19_2

解压新版本apex

cd /u01/media
mkdir -p /u01/apex
unzip apex_20.2.zip -d /u01/
chown -R oracle:dba /u01/apex

现在新的APEX安装文件已经放在/u01/apex/目录下了,登录数据库执行升级。

cd /u01/apex

-- 以超级管理员身份登录数据库
sqlplus / as sysdba

--切换至xepdb1
SQL> ALTER SESSION SET CONTAINER=XEPDB1;

-- 安装APEX,指定默认表空间和静态文件别名
SQL> @apexins.sql SYSAUX SYSAUX TEMP /i/
   
-- 安装完毕后数据库会话会自动断开,再次以超级管理员身份登录数据库
sqlplus / as sysdba

-- 创建APEX实例管理员(Instance Administration)及密码,这个密码必须包含特殊符号,否则设置不上。这个密码很重要,是管理APEX平台的账号密码,以后创建新的应用schema、解锁账号等都靠它,第一次登录APEX时也要用到。
SQL> @apxchpwd.sql

-- 配置RESTful Services服务,记录好配置的两位用户密码
SQL> @apex_rest_config.sql

-- 禁用数据库内置的PL/SQL网关
SQL> exec dbms_xdb.sethttpport(0);
SQL> exec dbms_xdb.setftpport(0);

-- 解锁ORDS用户账号
SQL> alter user apex_public_user account unlock;
SQL> alter user apex_public_user identified by "your password";

-- 断开数据库会话
SQL> exit

复制APEX静态文件到Tomcat目录

## 切换到root用户
su - root

## 删除老版本apex的静态文件
rm -rf /u01/tomcat/webapps/i/

## 在Tomcat的webapps目录下新建一个名为`i`的文件夹
mkdir -p /u01/tomcat/webapps/i/

## 将APEX静态文件复制过去
cp -a /u01/apex/images/* /u01/tomcat/webapps/i/

## 重启Tomcat服务
systemctl restart tomcat

升级ORDS

卸载老版本ORDS

cd /u01/ords
java -jar ords.war uninstall

输入数据库

安装配置 ORDS

解压缩安装包

mkdir -p /u01/ords
unzip /u01/media/ords-21.4.1.025.0904.zip -d /u01/ords/

执行安装脚本

cd /u01/ords
java -jar ords.war install advanced

按照提示完成ORDS的安装配置。这里的参数要认真填写。注意database service name 是xepdb1。数据库名称name of the database server一定要跟数据库监听器里 /opt/app/oracle/product/18c/xe/network/admin/listener.ora 保持一致,否则后面会因为ORDS连接不上数据库,导致访问报错。另外这里要设置好几个数据库账号的密码,建议第一次安装时统一设置成一个,并做好记录,避免后面错乱。

若安装出错,重新安装

如果配置过程中出现参数配错的情况,或者ords报错的情况,可以重新设置ORDS的各项参数

java -jar ords.war setup

如果实在不行,就卸载重装

java -jar ords.war uninstall 
java -jar ords.war install advanced

为tomcat账号授权(需切换到root用户)

确保tomcat账号(安装Tomcat服务器时自动创建的)可以访问/u01/ords/config目录。

su - root
chown -R tomcat:tomcat /u01/ords/config

将 ords.war 部署到 Tomcat

现在我们可以将刚才生成的ords.war文件部署到Tomcat上了。

cp -a /u01/ords/ords.war /u01/tomcat/webapps/

## 重启Tomcat服务
systemctl restart tomcat

验证是否正常工作

记得启动tomcat和nginx 服务

## 重启Tomcat服务
systemctl restart tomcat
## 重启nginx服务
systemctl restart nginx

打开浏览器,访问http://your_ip:8080/ords,如果一切正常,应该可以访问到APEX的页面了。

后续步骤(可选)

安装中文语言包

语言安装包在apex/builder/zh-cn下

su - oracle
cd /u01/apex/builder/zh-cn

## 登录数据库
sqlplus / as sysdba

SQL> ALTER SESSION SET CONTAINER=XEPDB1;
SQL> alter session set current_schema=APEX_210200;
SQL> @load_zh-cn.sql

重新进入apex选择中文

对系统进行优化

参考 Oracle APEX 系列文章5:在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化) 对数据库,ORDS,Tomcat,Nginx 进行优化

posted @ 2022-03-15 12:13  TjFish  阅读(611)  评论(0编辑  收藏  举报