docker安装oracle

奥黛丽·逐爱者
2026-10-23 / 0 评论 / 3 阅读 / 正在检测是否收录...

创建目录

mkdir -p /vdb/docker/compose/oracle11g/app

创建临时容器

docker create --name oracle11g_temp \
  registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle_11g_ee_lhr_11.2.0.4:1.0

复制容器内容

docker cp oracle11g_temp:/u01/app/. /vdb/docker/compose/oracle11g/app/

删除容器

docker rm oracle11g_temp

编排配置

version: "3.8"

services:
  oracle:
    image: registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle_11g_ee_lhr_11.2.0.4:1.0
    container_name: oracle_test
    privileged: true
    restart: always
    init: true
    environment:
      - TZ=Asia/Shanghai
      - ORACLE_SID=LHR11G
      - NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    ports:
      - "1521:1521"
    volumes:
      # === 统一时区卷挂载 ===
      - /usr/share/zoneinfo:/usr/share/zoneinfo:ro
      - /etc/localtime:/etc/localtime:ro
      # === 数据存储挂载 ===
      - /data/vdb/oracle_test/app:/u01/app
      # 自动启动监听和数据库,并前台挂住日志
    command: |
      bash -c '
        su - oracle -c "
          export ORACLE_SID=LHR11G
          lsnrctl start
          sqlplus / as sysdba <<EOF
            startup
            exit
          EOF
        "
        tail -F \
          /u01/app/oracle/diag/tnslsnr/$(hostname)/listener/trace/listener.log \
          /u01/app/oracle/diag/rdbms/lhr11g/LHR11G/trace/alert_LHR11G.log
      '
    networks:
      - ixjkj_network
networks:
  ixjkj_network:
    external: true

进入容器

  1. 看一下配置文件
cat $ORACLE_HOME/network/admin/listener.ora
  1. 修改监听地址为 0.0.0.0
vi $ORACLE_HOME/network/admin/listener.ora

或者直接修改宿主机/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

把里面的 HOST = lhrora11204(或类似的值)改成 HOST = 0.0.0.0,保存。改完类似:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
  1. 启动监听
lsnrctl start
  1. 确认状态
lsnrctl status

正常的话会看到 Listening Endpoints Summary 里有 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))),并且 Services Summary 里出现 Service "LHR11G" 状态为 READY。

  1. 如果服务没注册进去,进 sqlplus 执行一次:
sqlplus / as sysdba

sql下

ALTER SYSTEM REGISTER;
0

评论 (0)

取消