您的位置:

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=
    -e ORACLE_HOME=/usr/lib/oracle/11.2/client64 mjung/oracle11g-client
 
   

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

十、Docker安装Oracle利弊

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

优点:

1、能够以容器化的方式部署Oracle数据库,提高了数据存储的弹性和可操作性。

2、使用容器镜像可以实现Oracle数据库的快速部署,减少服务器资源的损耗和管理成本。

3、能够为企业提供更快、更高效、更稳定的操作方式。

缺点:

1、Docker容器中的Oracle数据库不能使用所有的Oracle功能。

2、在容器中部署Oracle数据库会涉及到网络和数据存储等问题,需要特别注意。

3、Docker容器中的Oracle数据库可能会涉及到性能问题,在高负载情况下,容器可能无法提供足够的性能。

以上就是Docker安装Oracle的详细介绍,不同的安装方法适用于不同的场景,如有需要,请选择适合自己的方式进行安装和配置。