本文是钢哥的 Oracle APEX 系列文章的第8篇完整文章目录如下
- Oracle APEX 系列文章1Oracle APEX, 让你秒变全栈开发的黑科技
- Oracle APEX 系列文章2在阿里云上打造属于你自己的APEX完整开发环境 (安装 CentOS)
- Oracle APEX 系列文章3在阿里云上打造属于你自己的APEX完整开发环境 (安装 Tomcat, Nginx)
- Oracle APEX 系列文章4在阿里云上打造属于你自己的APEX完整开发环境 (安装XE, ORDS, APEX)
- Oracle APEX 系列文章5在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化)
- Oracle APEX 系列文章6Oracle APEX 到底适不适合企业环境
- Oracle APEX 系列文章7Oracle APEX 18.1 新特性
- Oracle APEX 系列文章8如何从 APEX 5.1.4 升级到 最新的 APEX 18.1
引言
Oracle APEX 18.1 发布已经有几天了相信很多搞APEX的同学都尝过鲜了接下来需要面临的问题就是如何从早期的 APEX 版本升级到最新的 APEX 18.1。
简单看了一下 APEX 18.1 的文档并没有提到有现成的升级脚本文件可以跑虽然安装目录下也有个叫apxpatch.sql的鬼。由于新版本的 APEX 的 DB Schema 已经变成了 APEX_180100猜测跟之前 APEX 4 升到 5 一样没办法直接升级。以下升级过程是跑在 CentOS 6 上的数据库用的是 Oracle Database 11gR2APEX 版本是 5.1.4。另外如果不更换数据库已有的 APEX Application 应用、Workspace 及 Schema 都不需要改升级后还可以使用这一点要为 APEX 研发部门点赞闲话少说以下就是涉及到的组件- APEX这个自不必说不管之前用的是 3、4 还是 5 版本的都要升级到最新的 18.1
- ORDS同步升级到最新的 18.1 版本并重新配置部署到 Tomcat 8.5 上
- JAVAORDS 18.1 要求 JDK/JRE 最低版本 1.8 以上
- TomcatORDS 18.1 要求 Tomcat 最低版本 8.5 以上
- Nignx需要重新配置参数SSL证书、静态文件路径等
下面就让钢哥带你开始今天的 APEX 升级踩坑之旅
准备工作
上传安装包
首先将升级需要用到的安装包上传到服务器上比如/u02/Media。
停止当前 nginxtomcat 服务。
## 停止 nginx 服务service nginx stop## 停止 tomcat 服务service tomcat stop
升级 JDK / JRE
利用java -version查看当前 JDK 版本从下图可知当前系统 JDK 版本是 1.7 的不满足 ORDS 的需要必须升级 Java 版本。
安装 JDK 1.8
yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
安装完 JDK将环境变量添加到 ~/.bash_profile 文件中
# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsexport NLS_LANGAmerican_America.AL32UTF8export JAVA_HOME/u01/java/jdk1.8.0_162export JRE_HOME/u01/java/jdk1.8.0_162/jreexport ORACLE_SIDXEPATH/bin:/sbin:/usr/bin:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$HOME/binexport PATHCLASSPATH$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport CLASSPATH
手动初始化一下环境变量。
source ~/.bash_profile## 再次查看JDK版本java -version
JDK 版本应该已经变成1.8了。
升级 Tomcat
由于我当前用的 tomcat 版本是 7 的ORDS 18.1 要求 tomcat 8.5 以上版本所以需要更新一下 tomcat。
下载 Tomcat 8.5
## 切换到安装包目录cd /u02/Media## 下载tomcat 8.5以上版本wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.zip## 解压缩安装包unzip apache-tomcat-8.5.31.zip## 将解压完的文件移动到 /u01/tomcat8 目录下mv apache-tomcat-8.5.31/* /u01/tomcat8## 授权chown -Rf tomcat:tomcat /u01/tomcat8chmod -Rf 755 /u01/tomcat8/bin/*
由于我用的是 CentOS 6用的脚本启动 Tomcat所以需要修改下/etc/init.d/tomcat文件。
#!/bin/bash# description: Tomcat Start Stop Restart# processname: tomcat# chkconfig: 234 20 80JAVA_HOME/u01/java/jdk1.8.0_162export JAVA_HOMEPATH$JAVA_HOME/bin:$PATHexport PATHCATALINA_HOME/u01/tomcat8case $1 instart)/bin/su tomcat $CATALINA_HOME/bin/startup.sh;;stop)/bin/su tomcat $CATALINA_HOME/bin/shutdown.sh;;restart)/bin/su tomcat $CATALINA_HOME/bin/shutdown.sh/bin/su tomcat $CATALINA_HOME/bin/startup.sh;;esac. /root/firewall.shexit 0
验证 tomcat 是否安装成功
service tomcat start
可以看到 tomcat 8 服务已经启动了并且使用的是 jdk 1.8。
用浏览器访问 http://xxx.xxx.xxx.xxx:8080也可以看到 tomcat 页面。
升级 APEX 18.1
解压缩安装包
## 切换到安装包目录cd /u02/Media/## 将安装包解压缩unzip apex_18.1.zip
执行脚本安装 APEX 18.1
## 切换到 oracle 用户su - oraclecd /u02/Media/apex
以超级管理员身份登录数据库这里以 Oracle Database 11g 数据库举例12c 安装步骤类似。
sqlplus / as sysdba-- 创建单独的 tablespace不建议用系统默认的表空间SQL> create tablespace APEX181 DATAFILE /u03/oradata/apex181.dbf SIZE 1024m REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;-- 安装 APEX 18.1安装过程可能会持续5-10分钟-- 这里的 APEX181 是刚刚创建的 tablespaceSQL> apexins APEX181 APEX181 temp /i/-- 重置 APEX 管理控制台账号密码SQL> apxchpwd-- 配置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
将静态文件部署到 tomcat
## 切换到root用户su - root## 在 Tomcat 的 webapps 目录下新建一个名为i的文件夹mkdir -p /u01/tomcat8/webapps/i/## 将APEX静态文件部署到tomcat目录下cp -a /u02/Media/apex/images/* /u01/tomcat8/webapps/i/## 授予相应权限chown -Rf tomcat:tomcat /u01/tomcat8/webapps/
升级 ORDS 18.1
解压缩安装包
mkdir -p /u01/ordsunzip /u02/Media/ords.18.1.1.95.1251.zip -d /u01/ords/
执行安装脚本
cd /u01/ordsjava -jar ords.war install advanced
为 tomcat 账号授权确保 tomcat 账号可以读取/u01/ords/conf目录内文件。
chown -R tomcat:tomcat /u01/ords/conf
将 ords.war 部署到 Tomcat
cp -a /u01/ords/ords.war /u01/tomcat8/webapps/chown -Rf tomcat:tomcat /u01/tomcat8/webapps/## 重启 tomcat 服务service tomcat restart
验证 ORDS 已部署成功
打开浏览器访问 http://xxx.xxx.xxx.xxx:8080/ords如果部署成功APEX 应该就可以访问了。
钢哥注如果想把 url 里的ords替换成别的比如qingxi需要在先将ords.war重命名为qingxi.war然后再跑java -jar qingxi.war install advanced命令完成安装和部署动作。如果想重装 ORDS可以执行java -jar ords.war uninstall命令卸载成功后在删除安装目录的所有文件即可。
配置 Nginx (可选)
检查 nginx.conf 里是否有需要修改的地方比如更新i目录
测试升级后的环境
打开浏览器访问 http://xxx.xxx.xxx.xxx/ords如果部署成功APEX 应该就可以访问了。
登录到管理控制台查看现有的工作空间Existed Workspace发现老铁都还在。
输入对应的账号后检查之前的应用也都能正常运行完美