Docker部署Oracle-19c Apex Ords

github地址:https://github.com/fuzziebrain/docker-apex-stack.git


  • 准备:
curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo

yum makecache fast

yum install -y curl git docker-ce

systemctl enable docker && systemctl start docker
  • 克隆仓库:
cd /home

git clone https://github.com/fuzziebrain/docker-apex-stack.git
  • 下载缺少组件:
Oracle Database 19c
Oracle APEX 20.2
Oracle ORDS 20.2.1
Oracle JDK 8u271

链接:

# Oracle Database 19c
https://download.oracle.com/otn/linux/oracle19c/190000/LINUX.X64_193000_db_home.zip

# Oracle APEX
http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html

# Oracle ORDS
https://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html

# JDK
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
cd docker-apex-stack/files/

ls

apex_20.2.zip  jdk-8u271-linux-x64.tar.gz  LINUX.X64_193000_db_home.zip  ords-20.2.1.227.0350.zip

将所有下载的文件放到files目录下。

  • 自定义配置:
cd ..

cp settings_db19c.env.sample settings_db19c.env

vim settings_db19c.env
ORACLE_SID=ORCL
ORACLE_PDB=PDB01
ORACLE_PWD=Lzxlinux2021
[email protected]
APEX_ADMIN_PWD=Lzxlinux_2021
APEX_PUBLIC_USER_PWD=Lzxlinux2021
APEX_LISTENER_PWD=Lzxlinux2021
APEX_REST_PUBLIC_USER_PWD=Lzxlinux2021
ORDS_PUBLIC_USER_PWD=Lzxlinux2021
INSTALL_FILE_APEX=apex_20.2.zip
INSTALL_FILE_ORDS=ords-20.2.1.227.0350.zip
INSTALL_FILE_JAVA=jdk-8u271-linux-x64.tar.gz
DOCKER_ORDS_PORT=8080
DOCKER_EM_PORT=5500
DOCKER_DB_PORT=1521
DB_VERSION=19.3.0
DB_EDITION=ee
DOCKER_NETWORK_NAME=oracle_apex
ALLOW_DB_PATCHING=N
OML4R_SUPPORT=N
REST_ENABLED_SQL=Y
RTU_ENABLED=N
SQLDEVWEB=Y
DATABASEAPI=Y

参数说明:

DOCKER_NETWORK_NAME     指定 docker 网络,需要提前创建好

RTU_ENABLED             指定是否允许用户创建容器,用于通过 docker commit 创建镜像

FILES_DIR               指定所有必需安装文件的本地路径,例如 /path/to/my/downloads

ALLOW_DB_PATCHING       指定是否允许保存使用 OPatch 成功修复数据库软件所需的文件

OML4R_SUPPORT           指定是否安装数据库支持以运行嵌入式 R脚本

REST_ENABLED_SQL        指定是否支持 REST 的 SQL 特性

SQLDEVWEB               指定是否启用 SQL Developer Web,默认情况下启用。如果启用,则 REST_ENABLED_SQL 参数会被忽略

DATABASEAPI             指定是否启用对 19.x 和更高版本的 ORDS 的数据库API支持
  • 构建镜像:
docker pull oraclelinux:7-slim

sed -i 's/buildDockerImage.sh/buildContainerImage.sh/' 01-build.sh

bash 01-build.sh settings_db19c.env
  • 启动容器:
docker network create oracle_apex               #每个项目单独使用 docker network

bash 02-run.sh apex settings_db19c.env &

docker ps

CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS                    PORTS                                                                    NAMES
a48a680694e8   oracle/database:19.3.0-ee   "/bin/sh -c 'exec $O…"   24 minutes ago   Up 24 minutes (healthy)   0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp, 0.0.0.0:8080->8080/tcp   apex

oracle-19c 数据库的存储路径是 /home/docker-apex-stack/<docker name>-oradata/,此处是 /home/docker-apex-stack/apex-oradata/。在升级版本或迁移时,注意备份该目录。

ls /home/docker-apex-stack/apex-oradata/

dbconfig  ORCL  ordsconfig
  • 访问:

打开浏览器,访问 ip:8080/ords

在这里插入图片描述

workspace:INTERNAL、username:ADMIN、password: Lzxlinux_2021 登录,

在这里插入图片描述

  • nginx代理:
yum install -y nginx

vim /etc/nginx/conf.d/apex.conf
server {
    
    
    listen 80;
    server_name apex.lzxlinux.com;
    
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
    
    location / {
    
    
        proxy_pass http://localhost:8080;
        proxy_set_header Origin "" ;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_connect_timeout 120s;
        proxy_read_timeout    120s;
        proxy_send_timeout    120s;
    }
}
nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

systemctl enable nginx && systemctl start nginx

添加hosts:192.168.30.135 apex.lzxlinux.com,访问 apex.lzxlinux.com/ords

在这里插入图片描述

  • 汉化:
docker exec -it apex bash

cd /opt/oracle/product/apex/builder/zh-cn/

echo 'export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1' >> ~/.bash_profile

echo 'export ORACLE_SID=ORCL' >> !$

echo 'export PATH=$PATH:/opt/oracle/product/19c/dbhome_1/bin' >> !$

echo 'export NLS_LANG=American_America.AL32UTF8' >> !$

source !$

sqlplus / as sysdba

SQL> alter session set container = PDB01;

SQL> @load_zh-cn.sql

等待sql脚本执行完成,刷新网页,

在这里插入图片描述

  • 时区修改:

修改oracle所在服务器时区

docker exec -it apex bash

echo "export TZ='Asia/Shanghai'" >> ~/.bashrc && source ~/.bashrc

sqlplus / as sysdba

查看当前 session container

SQL> select sys_context('userenv','con_name') from dual;

SYS_CONTEXT('USERENV','CON_NAME')
--------------------------------------------------------------------------------
CDB$ROOT

CDB$ROOT 更改时区

SQL> select dbtimezone from dual;

SQL> alter database set time_zone='08:00';

SQL> shutdown immediate;

SQL> startup;

PDB01 更改时区

SQL> alter session set container = PDB01;

SQL> select dbtimezone from dual;

SQL> alter database set time_zone='08:00';

SQL> shutdown immediate;

SQL> startup;

查看数据库当前时间

SQL> select sysdate from dual;
  • 授权用户使用 dbms_crypto 加密包:
SQL> alter session set container = PDB01;

SQL> grant execute on sys.dbms_crypto to "<USERNAME>";

至此,docker部署 Oracle-19c Apex Ords 完成。

最后需要注意的是,Oracle-19c 与 Oracle-xe(18c) 不同,Oracle-19c 数据库空间大小没有限制,只不过商用需要官方授权。此外,在同一台服务器上启动多个 apex 容器,容器名、映射端口和 docker network 全部区分,不再有之前 Oracle-xe 的报错。因此,Oracle-19c 可以在正式环境下使用。


猜你喜欢

转载自blog.csdn.net/miss1181248983/article/details/114096896
今日推荐