我们知道,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 9. 验证版本 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,然后替换数据文件为前面的标准版备份的数据文件即可。 另外:标准版和企业版的版权问题,需要单独解决。