Docker部署Oracle 11g

部署步骤

开始之前,确保Docker环境已安装并运行。执行以下命令以启动Oracle 11g数据库容器:

# 启动容器
docker run -d -p 61251:1521 \
--name oracle11g \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
# 挂载到宿主机 -v /data/oracle:/home/oracle/app/oracle/oradata/orcl11g

# 进入容器
docker exec -it oracle11g bash

此命令中,61251是宿主机对外开放的端口,/data/oracle为宿主机上用于持久化Oracle数据的目录,racle_11g是容器的名称,而registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g是使用的Oracle 11g镜像地址。


修改环境变量

# cat ~/.bashrc 

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=orcl11g
export PATH=$ORACLE_HOME/bin:$PATH


登入数据库

docker exec -it oracle11g 
sqlplus / as SYSDBA

通过sqlplus / as SYSDBA命令登录到SQL*Plus,开始进行数据库的管理与配置。


数据库网络配置

1.修改 tnsnames.ora 文件

为了确保数据库能够正确响应外部请求,需要调整tnsnames.ora文件中的配置。在容器内部,文件路径通常位于:

1/home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora

示例配置如下:

ORCL11G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl11g.us.oracle.com)
    )
  )

LISTENER_ORCL11G =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))

这里的配置意味着监听器接受来自任何IP地址的连接请求,端口为1521。

2.重启监听服务

lsnrctl stop
lsnrctl start
lsnrctl status # 查看状态


本地客户端配置

为了从本地机器访问数据库,客户端的tnsnames.ora文件也需相应配置,示例如下:

ORCL11G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.xxx)(PORT = 61251))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl11g.us.oracle.com)
    )
  )

这里,172.16.140.135是运行Docker容器的宿主机IP地址,61251是宿主机上对外映射的端口。



Centos7 一键部署Oracle 11g

tar zxvf oracle-11g-offline.tar.gz 
bash  oracle-11g.sh