创建目录
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进入容器
- 看一下配置文件
cat $ORACLE_HOME/network/admin/listener.ora- 修改监听地址为 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- 启动监听
lsnrctl start- 确认状态
lsnrctl status正常的话会看到 Listening Endpoints Summary 里有 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521))),并且 Services Summary 里出现 Service "LHR11G" 状态为 READY。
- 如果服务没注册进去,进 sqlplus 执行一次:
sqlplus / as sysdbasql下
ALTER SYSTEM REGISTER;
评论 (0)