原地址:https://wangfanggang.com/Oracle/Oracle-APEX/apex-series-8/
本文是刚哥甲骨文APEX系列的第8篇。完整的产品目录如下:
Oracle APEX系列文章1: Oracle Apex,让你秒变全栈开发的黑科技。
Oracle APEX系列2:在阿里云上构建您自己的APEX完整开发环境(安装CentOS)
Oracle APEX系列文章三:在阿里云上构建自己的APEX完整开发环境(安装Tomcat,Nginx)
Oracle APEX系列文章四:在阿里云上搭建自己的APEX完整开发环境(安装XE、ORDS、APEX)。
Oracle APEX系列5:在阿里云上构建自己的APEX完整开发环境(进一步优化)
Oracle apex系列文章六:Oracle APEX适合企业环境吗?
Oracle APEX系列文章7:7的新特性:Oracle 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的ghost)。由于新版APEX的DB Schema已经改成APEX_180100,所以猜测和之前一样APEX 4升级到5,没有办法直接升级。以下升级过程在CentOS 6上运行,数据库为Oracle Database 11gR2,APEX版本为5.1.4。此外,如果不改变数据库,现有的APEX应用程序、工作区和模式不需要改变,升级后仍然可以使用,这一点应该得到APEX R & ampd部!事不宜迟,以下是相关组件:
APEX:不用说,不管你之前用的是3、4、5版本,你都要升级到最新的18.1版本;
ORDS:同步升级到最新版本18.1,重新配置部署到Tomcat 8.5
JAVA:ORDS 18.1要求JDK/JRE最低版本1.8以上;
Tomcat:ORDS 18.1要求Tomcat最低版本8.5以上;
Nignx:参数(SSL证书,静态文件路径等。)需要重新配置;
让刚哥带你开始今天的APEX升级(踩坑)之旅吧!
首先把升级需要的安装包上传到服务器,比如:/u02/Media。
停止当前的nginx,tomcat服务。
# #停止nginx服务
服务nginx停止
# #停止tomcat服务
服务tomcat停止
使用java-version检查当前的JDK版本。从下图可以看出,目前系统JDK版本是1.7,不符合ORDS的需求,所以Java版本必须升级。
安装JDK 1.8
yum install-y Java-1 . 8 . 0-open JDK . x86 _ 64 Java-1 . 8 . 0-open JDK-devel . x86 _ 64
安装JDK后,将环境变量添加到~/。bash_profile文件;
# .bash_profile
#获取别名和函数
if-f ~/。bashrc然后。~/.没有则创建
船方不负担装货费用
#用户特定的环境和启动程序
出口
NLS_LANG=American_America.AL32UTF8export JAVA_HOME=/u01/java/jdk1.8.0_162
export JRE_HOME=/u01/java/jdk1.8.0_162/jre
export ORACLE_SID=XE
PATH=/bin:/sbin:/usr/bin:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$HOME/bin
export PATH
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export CLASSPATH
手动初始化一下环境变量。
source ~/.bash_profile
## 再次查看JDK版本
java -version
JDK 版本应该已经变成1.8了。
下载 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/tomcat8
chmod -Rf755/u01/tomcat8/bin/*
由于我用的是 CentOS 6,用的脚本启动 Tomcat,所以需要修改下 /etc/init.d/tomcat文件。
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/u01/java/jdk1.8.0_162
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/u01/tomcat8
case $1 in
start)
/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.sh
exit 0
验证 tomcat 是否安装成功
service tomcat start
可以看到 tomcat 8 服务已经启动了,并且使用的是 jdk 1.8。
用浏览器访问 http://xxx.xxx.xxx.xxx:8080,也可以看到 tomcat 页面。
cd /u02/Media/
## 将安装包解压缩
unzip apex_18.1.zip
su - oracle
cd /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 是刚刚创建的 tablespace
SQL>@apexins APEX181 APEX181 temp /i/
--重置 APEX 管理控制台账号密码
SQL>@apxchpwd
--配置RESTfulServices服务
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
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/
unzip /u02/Media/ords.18.1.1.95.1251.zip-d /u01/ords/
java -jar ords.war install advanced
为 tomcat 账号授权,确保 tomcat 账号可以读取 /u01/ords/conf目录内文件。
chown -R tomcat:tomcat /u01/ords/conf
chown -Rf tomcat:tomcat /u01/tomcat8/webapps/
## 重启 tomcat 服务
service tomcat restart
钢哥注:如果想把 url 里的 ords替换成别的,比如 qingxi,需要在先将 ords.war重命名为 qingxi.war,然后再跑 java-jar qingxi.war install advanced命令完成安装和部署动作。
如果想重装 ORDS,可以执行 java-jar ords.war uninstall命令,卸载成功后在删除安装目录的所有文件即可。
登录到管理控制台,查看现有的工作空间(Existed Workspace),发现老铁都还在。
输入对应的账号后,检查之前的应用也都能正常运行,完美!!