Oracle APEX 安装 和 EBS 集成(一)

前言

Oracle APEX 是一款基于Oracle数据库的低代码开发工具,而 EBS 是 Oracle 提供的一套ERP系统, Oracle数据库作为其重要组成部分。但 EBS 的界面是比较原始的表单界面,说实话比较丑,操作也不便捷,使用的也是老版本的java,对浏览器的兼容性比较差。
所以考虑将 Oracle APEX 与 EBS进行集成,后续用户可以使用 Oracle APEX 处理业务。

本文为第一篇,介绍了 Oracle APEX 搭建的全步骤,搭建相关版本如下:
apex_22.1.zip
jdk-11.0.15.1_linux-x64_bin.tar.gz
ords-22.2.0.172.1758.zip
apache-tomcat-9.0.67.tar.gz

安装 APEX

我安装的版本为 Oracle APEX 22.1,点击 APEX下载 可在官网进行下载。
服务器:Oracle Linux 7.4,ebstest.mylinux.com,192.168.15.200

安装要求

  1. 数据库要求
  • 数据库版本
    22.1 支持 ORACLE 12.1.0.2.0 或之后版本,可通过以下语句查询
SELECT *
  FROM v$version;

在这里插入图片描述

  • 检查 MEMORY_TARGET
show parameter MEMORY_TARGET
  • 检查 workarea_size_policy,值必须是 auto
show parameter workarea_size_policy
  1. 浏览器要求
    谷歌,火狐,微软edge都可以。

  2. 网络服务要求
    官方推荐使用 Oracle REST Data Services (ORDS) 20.x or later,后面会介绍如何安装。

  3. 磁盘要求
    一般够用,略

  4. Oracle XML DB
    检查下数据库 Oracle XML DB 是否有安装,可以查询下SQL,一般都有预安装
    检查:

SELECT comp_name, version, status, comp_id
  FROM dba_registry
 WHERE comp_id = 'XDB';

安装

  1. 创建目录,上传并解压 apex_22.1.zip,并将文件拥有者改为数据库用户,我这里是 oratest
mkdir /u01/apex
cd /u01/apex
unzip apex_22.1.zip
chown -R oratest:dba /u01/apex/
  1. 建议给 apex 单独创建 apex 表空间,参考语句如下:
sqlplus / as sysdba
CREATE TABLESPACE APEX DATAFILE '/u01/test/db/data/apex_01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 1000M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
CREATE TEMPORARY TABLESPACE APEX_TEMP TEMPFILE '/u01/test/db/data/apex_temp_01.dbf' SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 1000M EXTENT MANAGEMENT LOCAL;
  1. 完整的开发环境安装
    共有两种安装模式
    (1)完整的开发环境(apexins.sql)
    (2)仅运行环境(apxrtins)

这里我选择完整的开发环境来安装

进入apex所在目录,进入sqlplus,执行 @apxrtins.sql tablespace_apex tablespace_files tablespace_temp images

  • tablespace_apex:应用用户的表空间
  • tablespace_files:文件用户的表空间
  • tablespace_temp:临时表空间
  • images:Oracle APEX images 的虚拟目录,为了支持未来的APEX升级,设置为 /i/ 即可

切换至数据库用户 oratest,执行安装脚本, 本次安装脚本如下:

[oratest@ebstest ~]$ cd /u01/apex/apex
[oratest@ebstest apex]$ sqlplus / as sysdba
SQL> @apexins.sql APEX APEX APEX_TEMP /i/

等待执行完成后,数据库中以下用户自动被创建了:

  • APEX_220100:此帐户拥有 Oracle APEX 架构和元数据,不同版本后缀会有区别。
  • FLOWS_FILES:此帐户拥有 Oracle APEX 上传的文件。
  • APEX_PUBLIC_USER:此最低权限帐户用于使用 Oracle REST 数据服务或 Oracle HTTP Server 和 mod_plsql 进行 Oracle APEX 配置。

另外可以执行以下sql确认是否安装

SELECT comp_name, version, status FROM dba_registry WHERE comp_id = 'APEX';

继续执行脚本, 创建用户 APEX_LISTENER and APEX_REST_PUBLIC_USER

[oratest@ebstest ~]$ cd /u01/apex/apex
[oratest@ebstest apex]$ sqlplus / as sysdba
SQL> @apex_rest_config.sql
  1. 解锁账户,如果想直接登录,还需先修改密码,相关脚本如下,
ALTER USER APEX_PUBLIC_USER identified BY APEX_PUBLIC_USER;
ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
ALTER USER APEX_220100 identified BY APEX_220100;
ALTER USER APEX_220100 ACCOUNT UNLOCK;
ALTER USER FLOWS_FILES identified BY FLOWS_FILES;
ALTER USER FLOWS_FILES ACCOUNT UNLOCK;

  1. 加载中文
sqlplus / as sysdba
@load_trans.sql

-->输入 SIMPLIFIED CHINESE
  1. 设置 admin 账号和密码
sqlplus / as sysdba
SQL> @apxchpwd.sql
...set_appun.sql
================================================================================
This script can be used to change the password of an Oracle APEX
instance administrator. If the user does not yet exist, a user record will be
created.
================================================================================
Enter the administrator's username [ADMIN]
User "ADMIN" does not yet exist and will be created.
Enter ADMIN's email [ADMIN]
Enter ADMIN's password []  --> 密码要求有点复杂 !QAZ2wsx
Created instance administrator ADMIN.

安装 Oracle REST Data Services

官网下载 ORDS,另外 ORDS 需要 java 11以上版本,也需要下载安装。
服务器:Oracle Linux 7.4,ords.mylinux.com,192.168.15.201

新建用户、创建目录

这里我新建用户ordstest 来安装,和 oratest 在一个组dba下

useradd -g dba -d /home/ordstest -m ordstest
echo "ordstest" | passwd ordstest --stdin

mkdir -p /u01/ords/ords
mkdir -p /u01/ords/java
mkdir -p /u01/ords/config
chown -R ordstest:dba /u01/ords

安装 java 11

在官网下载 java11 后,我下的版本是 jdk-11.0.15.1_linux-x64_bin.tar.gz,上传服务器 /u01/ords/java,并解压

[ordstest@ebstest java]$ tar -zxvf jdk-11.0.15.1_linux-x64_bin.tar.gz

设置环境变量,修改 ~/.bash_profile,在最后添加以下内容

export JAVA_HOME=/u01/ords/java/jdk-11.0.15.1
export PATH=$JAVA_HOME/bin:$PATH

执行 source ~/.bash_profile 或者 重新登录 ordstest后,运行 java -version 验证是否安装成功

[ordstest@ebstest ~]$ source ~/.bash_profile
[ordstest@ebstest ~]$ java -version
java version "11.0.15.1" 2022-04-22 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.15.1+2-LTS-10)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.15.1+2-LTS-10, mixed mode)

安装 ORDS

  1. 将 ORDS 文件上传至服务器 /u01/ords/ords/,并解压
[ordstest@ebstest ~]$ cd /u01/ords/ords
[ordstest@ebstest ords]$ unzip ords-22.2.0.172.1758.zip
  1. 添加环境变量,echo -e 'export PATH="$PATH:/<ords product folder>/bin"' >> ~/.bash_profile,本地安装目录为 /u01/ords/ords,脚本参考如下
echo -e 'export PATH="$PATH:/u01/ords/ords/bin"' >> ~/.bash_profile
  1. 安装
    (1)遵循最小权限原则,这里不直接使用 sys,新建数据库用户 ords_admin,并赋予必要的安装权限
    赋权脚本在 <ords product folder>/scripts/installer/ords_installer_privileges.sql
[root@ebstest ~]# cd /u01/apex/apex
[root@ebstest apex]# cp /u01/ords/ords/scripts/installer/ords_installer_privileges.sql ords_installer_privileges.sql
[root@ebstest apex]# chown oratest:dba ords_installer_privileges.sql
[root@ebstest apex]# chmod +x ords_installer_privileges.sql

切换至数据库用户 oratest

[oratest@ebstest ~]$ cd /u01/apex/apex
[oratest@ebstest apex]$ sqlplus / as sysdba
--创建数据库用户
CREATE USER ORDS_ADMIN IDENTIFIED BY ORDS_ADMIN DEFAULT TABLESPACE APEX TEMPORARY TABLESPACE APEX_TEMP;
--赋权
SQL> @ords_installer_privileges.sql
Enter value for 1: ORDS_ADMIN

(2)开始安装,–config 可以指定配置文件位置,不存在会自动创建,官方不建议放在ords安装目录下

[ordstest@ebstest ords]$ ords --config /u01/ords/config install

ORDS:发行版 22.2 生产,发行日期 周五 930 06:26:02 2022

版权所有 (c) 2010,2022,Oracle。

配置:
  /u01/ords/config/

配置文件夹 /u01/ords/config 不包含任何配置文件。

Oracle REST Data Services - 交互式安装

  输入相应编号以选择安装类型
    [1] 仅在数据库中安装或升级 ORDS
    [2] 创建或更新数据库池并在数据库中安装/升级 ORDS
    [3] 仅创建或更新数据库池
  Choose [2]:
  输入相应编号以选择要使用的数据库连接类型
    [1] 基本(主机名、端口、服务名称)
    [2] TNS(TNS 别名、TNS 目录)
    [3] 定制数据库 URL
  Choose [1]:
  输入数据库主机名 [localhost]:
  输入数据库监听端口 [1521]:
  输入数据库服务名 [orcl]: TEST
  提供具有管理员权限的数据库用户名。
    输入管理员用户名: ORDS_ADMIN  
  输入ORDS_ADMIN的数据库口令:
正在连接到数据库用户:ORDS_ADMIN URL:jdbc:oracle:thin:@//localhost:1521/TEST

检索信息.
  输入 ORDS_METADATA 和 ORDS_PUBLIC_USER 的默认表空间 [SYSAUX]: APEX
  输入 ORDS_METADATA 和 ORDS_PUBLIC_USER 的临时表空间 [TEMP]: APEX_TEMP
  输入相应编号以选择要启用的其他功能:
    [1] 数据库操作(启用所有功能)
    [2] 启用 REST 的 SQL 和数据库 API
    [3] 启用 REST 的 SQL
    [4] 数据库 API
    [5] 无
  Choose [1]:
  输入相应编号以在独立模式下配置和启动 ORDS
    [1] 在独立模式下配置和启动 ORDS --> 会直接以独立模式启动,可以直接强制退出,因为还需要设置图片才能正常显示
    [2] 跳过
  Choose [1]:
  输入相应编号以使用 HTTP 或 HTTPS 协议
    [1] HTTP
    [2] HTTPS
  Choose [1]:
  输入 HTTP 端口 [8080]:
  输入 APEX 静态资源位置: /i/ -->检测到APEX用户存在,会出现该提示,不过值无所谓,实际还是前面 apex 中的设置
  ...
  ...
  ...
  [*** 信息:已完成 Oracle REST Data Services 版本 22.2.0.r1721758 的 PL/SQL 网关用户配置。用时:00:00:00.86
 ]
2022-09-30T06:29:17.928Z INFO        HTTP and HTTP/2 cleartext listening on host: 0.0.0.0 port: 8080
2022-09-30T06:29:17.942Z INFO        Disabling document root because the specified folder does not exist: /u01/ords/config/global/doc_root
2022-09-30T06:29:22.252Z INFO        Configuration properties for: |default|lo|
db.servicename=TEST
standalone.context.path=/ords
db.hostname=localhost
db.password=******
conf.use.wallet=true
security.requestValidationFunction=wwv_flow_epg_include_modules.authorize
standalone.static.context.path=/i
database.api.enabled=true
db.username=ORDS_PUBLIC_USER
standalone.http.port=8080
standalone.static.path=/i
restEnabledSql.active=true
resource.templates.enabled=false
plsql.gateway.mode=proxied
db.port=1521
feature.sdw=true
config.required=true
db.connectionType=basic
standalone.doc.root=/u01/ords/config/global/doc_root

2022-09-30T06:29:22.253Z WARNING     *** 配置|default|lo|中的jdbc.MaxLimit使用的是值10, 对于生产环境, 可能无法充分调整此设置的大小 ***
2022-09-30T06:29:22.253Z WARNING     *** 配置|default|lo|中的jdbc.InitialLimit使用的是值3, 对于生产环境, 可能无法充分调整此设置的大小 ***
2022-09-30T06:29:31.474Z INFO        Oracle REST Data Services initialized
Oracle REST Data Services version : 22.2.0.r1721758
Oracle REST Data Services server info: jetty/9.4.46.v20220331
Oracle REST Data Services java info: Java HotSpot(TM) 64-Bit Server VM 11.0.15.1+2-LTS-10

(3)设置静态图片
查看设置文件,因为我们 config 目录位置是 /u01/ords/config,可以在该目录的 global 下 查到文件 settings.xml

[ordstest@ebstest ~]$ cd /u01/ords/config/global
[ordstest@ebstest global]$ cat settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Saved on Fri Sep 30 06:29:02 UTC 2022</comment>
<entry key="database.api.enabled">true</entry>
<entry key="standalone.context.path">/ords</entry>
<entry key="standalone.doc.root">/u01/ords/config/global/doc_root</entry>
<entry key="standalone.http.port">8080</entry>
<entry key="standalone.static.context.path">/i</entry>
<entry key="standalone.static.path">/i</entry>
</properties>

standalone.doc.root:存放静态资源的根目录
standalone.static.context.path:静态资源的目录
为了能正常显示图片,我们将图片资源从 apex 中复制到 ords 下的相应目录中

[root@ebstest ~]# mkdir -p /u01/ords/config/global/doc_root/i
[root@ebstest ~]# cp -r /u01/apex/apex/images/* /u01/ords/config/global/doc_root/i
[root@ebstest ~]# chown ordstest:dba /u01/ords/config/global/doc_root

(4)启动服务,未指定端口,则 http 默认是 8080,指定端口则使用 --port XXXX

ords --config /u01/ords/config serve 

另外还有一点要注意的,因为该语句退出后,服务直接停止了,所以可以用nohup后台运行

nohup ords --config /u01/ords/config serve &
tail -f nohup.out --查看日志

需要停止服务,则 ps -ef | grep ords 获取 pid,再通过 kill -9 xxx 来停止服务

~/.bash_profile 添加 export ORDS_CONFIG=/u01/ords/config,设置环境变量,后续启用就不再需要指定 --config
(5)登录
管理服务登录网址:http://192.168.15.200:8080/ords/apex_admin,该网址登录的管理员账号就是前面安装apex后,创建的 admin 用户,即 admin/!QZAZ2wsx
在这里插入图片描述
开发网址:http://192.168.15.200:8080/ords/
在这里插入图片描述

安装 Tomcat

除了以独立模式发布服务,还可以使用 Tomcat,设置步骤如下:
(1)下载 Tomcat 并上传至 /u01/ords/tomcat,然后解压,本例中使用的版本是 apache-tomcat-9.0.67.tar.gz

[ordstest@ebstest ~]$ cd /u01/ords/tomcat
[ordstest@ebstest tomcat]$ tar -zxvf apache-tomcat-9.0.67.tar.gz

(2)复制图片至 webapps 下(root用户)

[root@ebstest ~]# mkdir -p /u01/ords/tomcat/apache-tomcat-9.0.67/webapps/i
[root@ebstest ~]# cp -r /u01/apex/apex/images/* /u01/ords/tomcat/apache-tomcat-9.0.67/webapps/i
[root@ebstest ~]# chown -R ordstest:dba /u01/ords/tomcat/apache-tomcat-9.0.67/webapps/i

(3)复制 war文件至 tomcat 下(ordstest用户)

[ordstest@ebstest ~]# cp -r /u01/ords/ords/ords.war /u01/ords/tomcat/apache-tomcat-9.0.67/webapps/ords.war

(3)设置环境变量,指定 -Dconfig.url,使得 ORDS 能知道配置文件位置
~/.bash_profile 添加 export JAVA_OPTS="-Dconfig.url=${ORDS_CONFIG} -Xms1024M -Xmx1024M"
(4)启用或关闭服务(ordstest用户)

##启动服务
/u01/ords/tomcat/apache-tomcat-9.0.67/bin/startup.sh
##关闭服务
/u01/ords/tomcat/apache-tomcat-9.0.67/bin/shutdown.sh

(5)另外,需要说明的是,对于高版本的Tomcat,server解析不了一些特殊字符,比如说 \,比如说搜索时:
在这里插入图片描述
拼接的url中因包含 \,导致 Tomcat 无法解析,报错如下:
在这里插入图片描述

这里需要设置 <Tomcat Install Dir>/conf/server.xml,添加如下配置relaxedPathChars="|{}[],%\" relaxedQueryChars="|{}[],%\
在这里插入图片描述
还有额外的特殊字符,可以在 relaxedPathCharsrelaxedQueryChars 添加即可。

其他

登录 APEX_220100,通过以下sql可以查询当前的图片路径

SELECT * FROM apex_instance_parameters WHERE name = 'IMAGE_PREFIX';

如果需要修改,可通过 reset_image_prefix.sql 来修改,脚本在 apex 安装目录的 utilities

问题解决

  1. 访问 http://192.168.15.200:8080/ords/ 出现如下提示:
ERR-7620 Could not determine workspace for application (4500).

Contact your application administrator.

在这里插入图片描述
原因:这是因为安装APEX的时候,装的时 runtime 模式
解决方案:Converting a Runtime Environment to a Full Development Environment

cd <APEX INSTALL>
sqlplus / as sysdba
@apxdvins.sql
  1. 安装 ords 使用 sys 用户时,密码正确却无法登录,可能是 sys 不允许外部直接登录,一般建议新创建用户,并赋予必要的安装权限,如果非要用使用 sys 来安装,可以通过下面语句来允许外部直接登录sys
orapwd file=orapw<ORACLE_SID> password=manager entries=30 force=y

SELECT * FROM V$PWFILE_USERS;
  1. 登录时提示错误:

There is a problem with your environment because the Oracle APEX files have not been loaded. Please verify that you have copied the images directory to your application server as instructed in the Installation Guide. In addition, please verify that your image prefix path is correct. Your current path is /i/ (it should contain both starting and ending forward slashes, such as the default /i/). Use the SQL script reset_image_prefix.sql if you need to change it.

需要复制图片至对应目录,具体见上文。

  1. 访问提示错误
    /ords/apex_admin 404 The procedure named apex_admin could not be accessed or found
    在这里插入图片描述
    原因:缺少 apex_admin,
    解决:需要执行 @apxchpwd.sql,设置下 admin用户
  2. 启动时提示错误
2022-07-07T01:44:03.752Z WARNING     The pool named: |default|lo| is invalid and will be ignored: The username or password for the connection pool named |default|lo|, are invalid, expired, or the account is locked

原因:检查下连接信息,可能是域名或者账号锁定,密码修改过。
解决方法:如果密码有修改过,则可执行一下语句进行修改

ords --config <ORDS_CONFIG_PATH> config secret --password-stdin db.password
这里输入新的密码,回车

在这里插入图片描述
另外如果有其他设置需要调整,比如域名,数据库端口等,后面文章另行介绍。
PS: 老版本只要修改配置文件里就行了,可以参考下看看

cd <ORDS_CONFIG_DIR>/databases/default
vi 

在这里插入图片描述
查看 pom.xml 内容,检查连接信息,并且添加密码信息如下,前面加上!
在这里插入图片描述
不用担心密码明文,在启动 ords 后,会自动替换成加密后的内容
So the ORDS process has written the file back out.

!string = ORDS, please take this new password for the pool, then write it back such that no one else can read it, please.
@string = ORDS is using this password, but you can’t see it.
string = ORDS, this is the actual password, don’t touch it.

参考资料
Oracle APEX Installation Guide
Oracle REST Data Services 22.2
oracle安装APEX组件
Oracle REST Data Services (ORDS) : Installation on Tomcat (ORDS Version 22.1 Onward)
Extending Oracle E-Business Suite Release 12.1.3 and Above Using Oracle Application Express (APEX) (Doc ID 1306563.1)
apex20安装,Tomcat,Nginx配置优化
ORACLE EBS 启用REST服务-1-环境安装篇
ORACLE EBS 启用REST服务-2-开发篇
ORACLE APEX 21.2安装及一键部署

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值