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

IT疑难杂症诊疗室 10w+人浏览 692人参与

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


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

### 使用 Docker 快速部署 Oracle 19c 教程 #### 准备工作 为了确保顺利安装,需确认主机有足够的磁盘空间。因为 Oracle 19c 镜像体积庞大,建议至少预留 10 GB 的可用存储空间[^2]。 #### 创建必要文件夹结构 在开始之前,创建用于保存持久化数据的目录是非常重要的一步。执行如下命令来建立所需的数据存放路径: ```bash mkdir -p /home/soft/oracle19c/data ``` 此操作会构建一个多级子目录 `/home/soft/oracle19c/data` 来容纳后续可能产生的数据库文件[^1]。 #### 获取官方镜像并启动服务实例 通过阿里云仓库获取预配置好的 Oracle 19c 镜像,并立即运行一个新的容器作为数据库服务器。具体指令如下所示: ```bash docker pull registry.cn-shenzhen.aliyuncs.com/xusong/oracle19c:1 docker run -d --name oracle-db \ -p 1521:1521 -p 5500:5500 \ -e ORACLE_SID=ORCL \ -e ORACLE_PDB=ORCLPDB1 \ -e ORACLE_PWD=Qwer1234 \ registry.cn-shenzhen.aliyuncs.com/xusong/oracle19c:1 ``` 上述脚本指定了两个网络端口映射关系以及几个必要的环境变量设置,其中 `ORACLE_PWD` 参数定义了初始管理员账户 (`SYSTEM`) 的密码为 `Qwer1234`;而 `-d` 标志表示以后台模式启动该进程。 #### 测试连接功能正常与否 完成以上步骤之后,可以尝试利用 SQL\*Plus 工具来进行简单的查询验证是否成功建立了有效的链接。这里给出了一种进入正在运行中的容器并通过本地 shell 执行客户端的方式: ```bash docker exec -it oracle-db /bin/bash sqlplus system/Qwer1234@localhost:1521/ORCLCDB ``` 如果一切无误,则应该能够看到类似下面这样的提示信息表明已经连上了目标数据库实例[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值