随着数据存储的不断增加和云计算的普及,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的详细介绍,不同的安装方法适用于不同的场景,如有需要,请选择适合自己的方式进行安装和配置。