You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Docker创建无CDB的Oracle 19c单实例数据库

Oracle Docker 单实例非CDB模式搭建方案

全新创建非CDB实例(推荐方式)

你在启动容器时,只需要额外添加ORACLE_CDB=false环境变量即可直接生成非CDB模式的实例,参考运行命令如下:

docker run -d \
  --name oracle-noncdb \
  -p 1521:1521 \
  -e ORACLE_SID=ORCL \
  -e ORACLE_PWD=自定义数据库密码 \
  -e ORACLE_CDB=false \
  -v 本地数据存储目录:/opt/oracle/oradata \
  你使用的Oracle镜像名称:版本标签

核心参数说明:ORACLE_CDB为官方镜像内置的控制参数,默认值为true(创建CDB模式实例),设置为false就会创建非CDB模式实例。

已运行CDB实例转换为非CDB模式

如果已经创建了CDB模式的容器,可以按以下步骤转换:

  1. 进入容器并以sysdba身份登录数据库
    docker exec -it 你的容器名称 bash
    sqlplus / as sysdba
  2. 关闭当前数据库
    shutdown immediate;
  3. 启动数据库到只读挂载状态
    startup mount;
    alter database open read only;
  4. 生成非CDB实例描述文件
    exec dbms_pdb.describe(pdb_descr_file => '/opt/oracle/oradata/noncdb.xml');
  5. 再次关闭数据库
    shutdown immediate;
  6. 基于描述文件创建非CDB实例,执行以下SQL命令(注意替换对应密码和路径):
CREATE DATABASE noncdb
USER SYS IDENTIFIED BY 你的SYS用户密码
USER SYSTEM IDENTIFIED BY 你的SYSTEM用户密码
EXTENT MANAGEMENT LOCAL
DEFAULT TABLESPACE users
DEFAULT TEMPORARY TABLESPACE temp
UNDO TABLESPACE undotbs1
ENABLE PLUGGABLE DATABASE
AS CLONE USING '/opt/oracle/oradata/noncdb.xml'
COPY FILE_NAME_CONVERT = ('/opt/oracle/oradata/ORCLCDB/', '/opt/oracle/oradata/ORCL/');
  1. 运行完后重启数据库即可完成转换。

模式验证

登录数据库后执行以下SQL即可确认当前模式:
select name, cdb from v$database;
返回结果中CDB列值为NO即为非CDB模式。

注意事项

  • 该配置仅适用于Oracle 12c及以上版本,12c以下版本默认就是非CDB模式,无需额外配置。
  • 转换操作前建议先备份数据库文件,避免数据丢失。

内容的提问来源于stack exchange,提问作者Nir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:06:04