您的位置:

Docker安装Oracle数据库完整教程

Oracle是大型企业数据库管理系统,为企业级应用提供了高可用性和可伸缩性。在Docker容器化技术的帮助下,Oracle可以更方便、更高效地管理和部署。本篇文章将为大家提供Docker安装Oracle数据库的完整教程。

一、安装Docker

安装Docker前需要先卸载旧版并进行更新,在安装Docker之前,需要先在系统中更新内核版本,否则会造成安装过程中的兼容性问题。以下给出更新内核版本和安装Docker的详细步骤。

1、更新内核

sudo yum update -y
sudo reboot

2、添加Docker官方源并安装Docker

sudo yum remove -y docker-ce docker-ce-cli containerd.io # 卸载旧版

sudo yum install -y yum-utils # 安装工具包,用于获取Docker官方源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 添加Docker官方源

sudo yum install -y docker-ce docker-ce-cli containerd.io # 安装Docker

sudo systemctl start docker # 启动Docker并设置为开机启动
sudo systemctl enable docker

二、下载Oracle数据库安装文件

在Oracle官网下载页面下载所需版本的Oracle数据库安装文件。需要注意的是,Oracle数据库的安装文件很大,具体大小根据不同版本而定。本教程使用的是Oracle 19c的Linux版本,大小约为5.5GB。

三、构建Oracle数据库Docker镜像

在下载完Oracle数据库安装文件之后,需要使用Dockerfile构建一个Oracle数据库的Docker镜像。

1、创建文件夹和文件

sudo mkdir -p /opt/oracle && cd /opt/oracle # 创建文件夹

sudo touch Dockerfile # 创建Dockerfile

2、将Oracle安装文件复制到指定文件夹下

将下载的Oracle安装文件复制到/opt/oracle下,然后解压缩。

sudo cp /path/to/oracle/linuxx64_12201_database.zip /opt/oracle/
cd /opt/oracle
sudo unzip linuxx64_12201_database.zip

3、编辑Dockerfile

使用vim编辑器打开Dockerfile,并粘贴以下内容:

FROM oraclelinux:7-slim

ADD oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm /tmp/
ADD linuxx64_12201_database.zip /tmp/

RUN yum -y install oracle-database-preinstall-19c && \
    rm -rf /var/cache/yum/* && \
    mkdir /opt/oracle && \
    unzip /tmp/linuxx64_12201_database.zip -d /opt/oracle && \
    rm /tmp/linuxx64_12201_database.zip && \
    rpm -ivh /tmp/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm && \
    rm /tmp/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

ENV ORACLE_SID=ORCLCDB \
    ORACLE_PDB=ORCLPDB1 \
    ORACLE_PWD=oracle \
    ORACLE_CHARACTERSET=AL32UTF8

ADD init.sql /opt/oracle/
ADD initXe.sql /opt/oracle/

# 修改权限,否则报错
RUN chown -R oracle:oinstall /opt/oracle && \
    chmod -R 775 /opt/oracle && \
    echo "oracle:oracle" | chpasswd

ADD /entrypoint.sh /entrypoint.sh
RUN chmod a+x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

EXPOSE 1521 5500
CMD ["/opt/oracle/runOracle.sh"]

保存并退出后,执行以下命令构建Docker镜像:

sudo docker build -t oracle/database:19.3.0-ee . # 注意后面有一个英文句号

四、运行Oracle数据库Docker容器

在构建好Oracle数据库的Docker镜像后,就可以运行容器来操作数据库了。运行容器时需要注意使用docker run命令的一些参数,主要是用户、文件夹映射和端口设置等。

sudo docker run --name oracle \
    -p 1521:1521 -p 5500:5500 \
    --restart=always \
    --detach=true \
    --shm-size="8g" \
    -e TZ=Asia/Shanghai \
    -v /opt/oracle:/ORCL \
    oracle/database:19.3.0-ee

其中:

  • --name:为Docker容器起一个名称
  • -p:指定容器端口号和主机端口号的映射,这里设置1521是为了访问数据库,5500是为了访问Web应用程序Express
  • -v:指定宿主机目录和容器内部目录的映射,这里将/opt/oracle和/ORCL映射到一起,容器内的数据会保存在/opt/oracle目录下,宿主机可以通过挂载此目录访问
  • --shm-size:指定共享内存的大小,这对于Oracle数据库的正常运行至关重要
  • -e:设置环境变量,这里设置时区为亚洲/上海,确保时间一致

五、连接Oracle数据库

运行container的时候,我们可以在容器运行后的日志中看到以下默认连接详情:

ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: oracle
ORACLE DATABASE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: oracle
ORACLE AUTO GENERATED PASSWORD FOR ORACLE APEX ADMIN ACCOUNTS: GnoVYF9Kiu.
ORACLE CHARACTER SET is AL32UTF8
This is a non CDB database

根据上面提供的连接信息去使用SQL Plus去进行连接即可。

sqlplus system/oracle@//localhost:1521/ORCLCDB

六、总结

通过本篇文章的介绍,您已经学会了使用Docker快速搭建Oracle数据库的方法,相比传统的安装方式,Docker更加方便、高效、便于维护和升级。希望这篇教程能对您有所帮助。