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,然后替换数据文件为前面的标准版备份的数据文件即可。

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

相关推荐
做个文艺程序员21 分钟前
Linux第22篇:用Docker容器化你的Java SaaS应用:一次构建,随处运行
java·docker·容器
—Miss. Z—1 小时前
计算机二级MySQL——简单应用题(存储过程&存储函数)
数据库·oracle·php
梦梦代码精2 小时前
基于ThinkPHP6 + Vue3的家政预约系统全解析:从LBS定位到自动派单的完整实现
java·docker·开源·php·代码规范
小的博客3 小时前
windows下安装Docker Desptop
运维·docker·容器
李迟3 小时前
我的docker随笔48:Docker版本号演进史
docker
Zhu7583 小时前
在k8s环境部署Apache zookeeper3.9.5,高可用,多pod
容器·kubernetes·apache
阿拉雷️4 小时前
部署实战】Docker + AI Agent:让AI一键部署Spring Boot到服务器,从打包到上线只要一条指令
人工智能·spring boot·docker
雨声不在4 小时前
macos 12使用docker
macos·docker·容器
NineData4 小时前
Oracle 卡住时先看阻塞源,ChatDBA 会先把锁链路理出来
数据库·oracle·ninedata·锁故障·锁等待·chatdba·锁阻塞
运维大师5 小时前
【K8S 运维实战】07-Pod生命周期与故障排查
运维·容器·kubernetes