Docker安装Oracle详解

发布时间:2023-05-20

Docker安装Oracle数据库详解

随着数据存储的不断增加和云计算的普及,Oracle数据库成为了企业中最受欢迎的数据库,而Docker容器技术也越来越流行。在这篇文章中,我们将会详细介绍如何使用Docker容器安装Oracle数据库,同时提供各种场景下的解决方案。

一、Docker安装Oracle19c

Oracle19c是当前最新的数据库版本,具有高效的本机加密、在内存处理JSON和图形数据、自动并行优化等特性,而Docker安装Oracle19c的步骤如下: **第一步:**安装Docker并启动服务。

sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker && sudo systemctl enable docker

**第二步:**创建一个新的目录并下载Oracle Docker镜像,并执行运行命令。

sudo mkdir -p /opt/oracle18c/dbhome
sudo docker pull container-registry.oracle.com/database/standard:19.3.0.0
sudo docker run --name oracle19c -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=password -v /opt/oracle18c/dbhome:/opt/oracle/oradata container-registry.oracle.com/database/standard:19.3.0.0

其中,“-p”标识可以将Docker容器中的端口映射到主机,使得主机可以通过这些端口连接到容器内,"-v"标识可以挂载主机上的目录到Docker容器内,实现数据的持久化。

二、Docker安装Oracle11g

注:此方法不再推荐使用,已过时。 Oracle11g是之前最常用的版本之一,这里我们提供在Docker中安装Oracle11g的步骤: **第一步:**安装Docker并启动服务,同上。 **第二步:**下载Oracle Docker镜像并执行运行命令。

docker pull wnameless/oracle-xe-11g
docker run -d -p 1521:1521 -p 8080:8080 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g

“-d”标识意味着容器将在后台运行,不会占用当前终端。

三、Docker安装Oracle19c特别慢

有时候,Docker安装Oracle19c可能会比较缓慢,这时候可以尝试更改Docker的镜像源为国内高速源,然后再执行Docker命令,如下所示。 **第一步:**添加阿里云Docker源。

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7urk5sqq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

**第二步:**下载Oracle Docker镜像并执行启动命令。

sudo docker pull container-registry.oracle.com/database/standard:19.3.0.0
sudo docker run -d -p 1521:1521 -p 5500:5500 --name oracle19c --network=bridge -e ORACLE_SID=ORCLCDB -e ORACLE_PDB=PDB1 -e ORACLE_PWD=Oradoc_db1 -v /oracle/oradata -v /oracle/scripts -v /oracle/dpdump container-registry.oracle.com/database/standard:19.3.0.0

这样我们就将Oracle19c安装到了Docker中,注意需要使用--network=bridge参数启用桥接网络模式。

四、Docker安装Oracle桥接网络

在默认情况下,容器内的网络是与主机隔离的。为了使容器可以通过网络访问其他容器和主机,我们需要使用桥接网络。步骤如下: **第一步:**创建一个新的桥接网络。

docker network create mynet

**第二步:**启动Oracle容器并指定刚刚创建的桥接网络。

docker run -d --name oracle11g --network=mynet ......

现在,我们可以在同一桥接网络中启动其他容器,例如使用Tomcat容器连接Oracle数据库。

五、Docker安装Oracle19c卡在42

有时,Docker安装Oracle19c可能会卡在43%(或42%),这时候可以使用以下方法解决问题。 **第一步:**安装依赖软件包。

apt-get install libaio1 libaio-dev

**第二步:**将Linux内核参数更改为适合Oracle的设置。

sudo sysctl -w fs.file-max=6815744
sudo sysctl -w kernel.sem=250 32000 100 128
sudo sysctl -w fs.suid_dumpable=1
sudo sysctl -w net.ipv4.ip_local_port_range='9000 65500'
sudo sysctl -w kernel.sysrq=1
sudo sysctl -w kernel.shmall=1073741824
sudo sysctl -w kernel.shmmax=4398046511104
sudo sysctl -w kernel.panic_on_oops=1
sudo sysctl -w net.core.rmem_default=262144
sudo sysctl -w net.core.rmem_max=4194304
sudo sysctl -w net.core.wmem_default=262144
sudo sysctl -w net.core.wmem_max=1048576
sudo sysctl -w vm.max_map_count=262144

**第三步:**重新启动服务器并重试Oracle19c Docker安装。

六、Docker安装Oracle19c卡在46

在安装Oracle19c期间,Docker进度条可能会卡在46%-47%左右。这个问题也可以通过以下解决方案来解决。 **第一步:**终止Docker容器。

docker stop [container-name]
docker rm [container-name]

**第二步:**删除Docker容器的目录。

rm -rf /u01/app/oracle
rm -rf /u01/app/oraInventory

注意,如果你有其他的容器需要保留,那么不要删除Docker的目录。 **第三步:**重新构建Docker镜像。

sudo docker build -t myoracle:19c .

接着,重新启动Docker容器,就可以正常安装Oracle19c。

七、Docker安装Oracle19c

这里我们提供一个最简单的安装Oracle19c的方法: **第一步:**下载Oracle Docker镜像并启动容器。

docker run --name oracle19c -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=password -v /my/oracle/home:/opt/oracle/oradata container-registry.oracle.com/database/standard:19.3.0.0

这样,我们就成功地将Oracle19c安装在了Docker容器中。

八、Docker安装Oracle重启后数据没了

如果在Docker容器中安装Oracle,并且在容器重启后你发现数据变丢失了,这里提供一种解决方案。 **第一步:**使用docker-compose管理Oracle容器。 **第二步:**将Oracle数据文件卷挂载到本地目录。

volumes:
    - ./db_data:/opt/oracle/oradata

**第三步:**在docker-compose.yml文件中添加一些其余设置。

environment:
    - ORACLE_ALLOW_REMOTE=true
    - ORACLE_PWD=p@ssword
    - ORACLE_CHARACTERSET=AL32UTF8
    - ORACLE_DBNAME=orcl
    - ORACLE_BASE=/opt/oracle
    - ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
    - ORACLE_SID=ORCLCDB

**第四步:**启动Oracle容器并检查数据是否成功持久化。

sudo docker-compose up -d
docker exec -it oracle19c bash
ls /opt/oracle/oradata

九、Docker安装Oracle客户端

有时候,我们可能需要在Docker容器中安装Oracle客户端,可以使用以下命令来安装:

docker pull mjung/oracle11g-client
docker run --name oracle_client --network host -e TWO_TASK=<db-tcp-entry> -e ORACLE_HOME=/usr/lib/oracle/11.2/client64 mjung/oracle11g-client

其中,-e标识可以指定Docker容器中的环境变量,使得容器中的应用程序可以获取这些值。

十、Docker安装Oracle利弊

最后,我们对Docker安装Oracle的优缺点进行了总结: 优点:

  1. 能够以容器化的方式部署Oracle数据库,提高了数据存储的弹性和可操作性。
  2. 使用容器镜像可以实现Oracle数据库的快速部署,减少服务器资源的损耗和管理成本。
  3. 能够为企业提供更快、更高效、更稳定的操作方式。 缺点:
  4. Docker容器中的Oracle数据库不能使用所有的Oracle功能。
  5. 在容器中部署Oracle数据库会涉及到网络和数据存储等问题,需要特别注意。
  6. Docker容器中的Oracle数据库可能会涉及到性能问题,在高负载情况下,容器可能无法提供足够的性能。 以上就是Docker安装Oracle的详细介绍,不同的安装方法适用于不同的场景,如有需要,请选择适合自己的方式进行安装和配置。