docker环境下 Oracle 19c 标准版如何转换为19c 企业版

我们知道,ORACLE 标准版,不能直接转换为企业版,这里除了版权问题之外,也有技术上的原因,如果在DOCKER环境下,如何操作呢?

oracle 19c 标准版转换为企业版,和传统模式的转换思路一样

传统模式:卸载标准版,不删除数据,重新安装企业版软件,打开前面安装的标准版的数据文件,即可。

DOCKER下面呢?

我们来看看.

1.前提
当前是19c 标准版,可以参考下文进行创建

oracle linux 9.6上安装oracle database 19.3 标准版 docker
2.做好备份
做好备份,既是在失败情况下的一个标准步骤,也是本次操作的必要步骤。本次使用的物理备份。

2.1 物理备份
停止docker
docker stop oracle19c
使用tar 冷备

tar -zcvf /mydata/oracle_se2_backup_$(date +%Y%m%d).tar.gz /mydata/oracle/oradata

tar: Removing leading `/' from member names

/mydata/oracle/oradata/

/mydata/oracle/oradata/ORCL/

/mydata/oracle/oradata/ORCL/system01.dbf

/mydata/oracle/oradata/ORCL/sysaux01.dbf

/mydata/oracle/oradata/ORCL/undotbs01.dbf

/mydata/oracle/oradata/ORCL/users01.dbf

/mydata/oracle/oradata/ORCL/control01.ctl

/mydata/oracle/oradata/ORCL/control02.ctl

/mydata/oracle/oradata/ORCL/redo01.log

/mydata/oracle/oradata/ORCL/redo02.log

/mydata/oracle/oradata/ORCL/redo03.log

/mydata/oracle/oradata/ORCL/temp01.dbf

/mydata/oracle/oradata/ORCL/tbs_his01.dbf

/mydata/oracle/oradata/ORCL/tbs_lis01.dbf

/mydata/oracle/oradata/.ORCL.created

/mydata/oracle/oradata/dbconfig/

/mydata/oracle/oradata/dbconfig/ORCL/

/mydata/oracle/oradata/dbconfig/ORCL/spfileORCL.ora

/mydata/oracle/oradata/dbconfig/ORCL/orapwORCL

/mydata/oracle/oradata/dbconfig/ORCL/sqlnet.ora

/mydata/oracle/oradata/dbconfig/ORCL/listener.ora

/mydata/oracle/oradata/dbconfig/ORCL/tnsnames.ora

/mydata/oracle/oradata/dbconfig/ORCL/.docker_standard

/mydata/oracle/oradata/dbconfig/ORCL/oratab

2.2 逻辑备份
启动docker

docker start oracle19c

进入docker

root@docker-hub dockerfiles]# docker exec -it oracle19c bash

--进行逻辑备份

bash-4.2$ expdp \'sys/oracle_4U@orcl as sysdba\' dumpfile=se2_full.dmp logfile=se2_full.log full=y

Export: Release 19.0.0.0.0 - Production on Tue Dec 2 15:39:27 2025

Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 19c Standard Edition 2 Release 19.0.0.0.0 - Production

Starting "SYS"."SYS_EXPORT_FULL_01": "sys/********@orcl AS SYSDBA" dumpfile=se2_full.dmp logfile=se2_full.log full=y

Processing object type DATABASE_EXPORT/EARLY_OPTIONS/VIEWS_AS_TABLES/TABLE_DATA

Processing object type DATABASE_EXPORT/NORMAL_OPTIONS/TABLE_DATA
。。。

. . exported "HR"."DEPARTMENTS" 6.132 KB 8 rows

. . exported "HR"."EMPLOYEES" 8.023 KB 20 rows

. . exported "HR"."JOB_HISTORY" 0 KB 0 rows

Master table "SYS"."SYS_EXPORT_FULL_01" successfully loaded/unloaded

******************************************************************************

Dump file set for SYS.SYS_EXPORT_FULL_01 is:

/opt/oracle/admin/ORCL/dpdump/se2_full.dmp

Job "SYS"."SYS_EXPORT_FULL_01" successfully completed at Tue Dec 2 15:41:30 2025 elapsed 0 00:02:01

--文件传到指定位置

root@docker-hub dockerfiles# docker cp oracle19c:/opt/oracle/admin/ORCL/dpdump/se2_full.dmp /mydata/oracle/.

Successfully copied 3.7MB to /mydata/oracle/.

root@docker-hub dockerfiles# ls -ltr /mydata/oracle/.

total 3608

drwxrwxrwx 4 root root 55 Dec 2 22:06 oradata

-rw-r----- 1 root root 3694592 Dec 2 23:41 se2_full.dmp

3.停止并删除前面的标准版docker

docker stop oracle19c

docker rm oracle19c

rm -fr /mydata/oracle/oradata/*
chmod -R 777 /mydata/oracle/oradata

4.创建企业版的image

./buildContainerImage.sh -i -v 19.3.0 -t oracle/database:19c -e

5.运行docker

docker run -d \

--restart always \

--shm-size=4g \

-p 1521:1521 -p 5500:5500 \

-e ORACLE_SID=ORCL \

-e ORACLE_PWD=oracle_4U \

-e ORACLE_CHARACTERSET=ZHS16GBK \

-v /mydata/oracle/oradata:/opt/oracle/oradata \

--name oracle19c \

oracle/database:19c

6.停数据库

进入docker

docker exec -it oracle19c /bin/bash

lsnrctl stop
sqlplus / as sysdba

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.
7.释放标准版的数据文件到对应位置
tar /mydata/oracle_se2_backup_20251202.tar.gz -C /

8.重新打开数据库
进入docker
docker exec -it oracle19c /bin/bash

打开监听
lsnrctl start

打开数据库
sql>startup

  1. 验证版本

SQL> select * from v$version;

BANNER


BANNER_FULL


BANNER_LEGACY


CON_ID


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

10.验证选项

SQL> SELECT parameter ,value from v$option

PARAMETER VALUE


Partitioning TRUE

Objects TRUE

Real Application Clusters FALSE

Advanced replication TRUE

Bit-mapped indexes TRUE

Connection multiplexing TRUE

Connection pooling TRUE

Database queuing TRUE

Incremental backup and recovery TRUE

Instead-of triggers TRUE

Parallel backup and recovery TRUE

PARAMETER VALUE


Parallel execution TRUE

Parallel load TRUE

Point-in-time tablespace recovery TRUE

Fine-grained access control TRUE

Proxy authentication/authorization TRUE

Change Data Capture TRUE

Plan Stability TRUE

Online Index Build TRUE

Coalesce Index TRUE

Managed Standby TRUE

Materialized view rewrite TRUE

PARAMETER VALUE


Database resource manager TRUE

Spatial TRUE

Automatic Storage Management FALSE

Export transportable tablespaces TRUE

Transparent Application Failover TRUE

Fast-Start Fault Recovery TRUE

Sample Scan TRUE

Duplexed backups TRUE

Java TRUE

OLAP Window Functions TRUE

Block Media Recovery TRUE

PARAMETER VALUE


Fine-grained Auditing TRUE

Application Role TRUE

Enterprise User Security TRUE

Oracle Data Guard TRUE

Oracle Label Security FALSE

OLAP TRUE

Basic Compression TRUE

Join index TRUE

Trial Recovery TRUE

Advanced Analytics TRUE

Online Redefinition TRUE

PARAMETER VALUE


Streams Capture TRUE

File Mapping TRUE

Block Change Tracking TRUE

Flashback Table TRUE

Flashback Database TRUE

Transparent Data Encryption TRUE

Backup Encryption TRUE

Unused Block Compression TRUE

Oracle Database Vault FALSE

Result Cache TRUE

SQL Plan Management TRUE

PARAMETER VALUE


SecureFiles Encryption TRUE

Real Application Testing TRUE

Flashback Data Archive TRUE

DICOM TRUE

Active Data Guard TRUE

Server Flash Cache TRUE

Advanced Compression TRUE

XStream TRUE

Deferred Segment Creation TRUE

Unified Auditing FALSE

Management Database FALSE

PARAMETER VALUE


I/O Server FALSE

ASM Proxy Instance FALSE

Exadata Discovery TRUE

Data Mining TRUE

Global Data Services TRUE

Adaptive Execution Plans TRUE

Table Clustering TRUE

Zone Maps TRUE

Real Application Security TRUE

Privilege Analysis TRUE

Data Redaction TRUE

PARAMETER VALUE


Cross Transportable Backups TRUE

Cache Fusion Lock Accelerator TRUE

Snapshot time recovery TRUE

Heat Map TRUE

Automatic Data Optimization TRUE

Transparent Sensitive Data Protection TRUE

In-Memory Column Store TRUE

Advanced Index Compression TRUE

In-Memory Aggregation TRUE

Centrally Managed User TRUE

87 rows selected.

企业版的功能都有了

11.无效对象

SQL> select count(*) from dba_objects where status<>'VALID';

COUNT(*)


0

12.组件

到此,标准版DOCKER转换为企业版过程结束。

13.总结一下:

需要注意,不能直接标准版的数据文件运行企业版的DOCKER,需要全新的企业版DOCKER,然后替换数据文件为前面的标准版备份的数据文件即可。

另外:标准版和企业版的版权问题,需要单独解决。

相关推荐
lichenyang4532 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4532 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4532 天前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4532 天前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
Patrick_Wilson7 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy7 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭7 天前
运行你的第一个Docker容器
后端·docker·容器
ClouGence8 天前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
宋均浩8 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵9 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程