Docker容器化运行Oracle 19c数据库

产品化项目实施过程中会遇到多个私有化环境,并且会有独立的数据库实例,通常数据库实例之间存在个性化差异,对于在本地调试应对多个实例的情况一般可以通过PDB解决,对于部署一些临时环境需要的数据库相对来说使用容器化会方便一些,随时可以启动不用每次手动安装。

通过官方封装镜像步骤说明封装生成了一个Docker镜像, 镜像封装方式参考官方文档,https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance#building-oracle-database-container-images镜像名称: arvinrong/oracle-database:19.3 (存放于docker hub中):

运行方式:

docker run --name "oracle19c" -p 1521:1521 -e ORACLE_PDB=orcl -e ORACLE_PWD=dbPassword -e ORACLE_MEM=2000 -e TZ=Asia/Shanghai -v /usr/local/docker-oracle/oradata:/opt/oracle/oradata -d arvinrong/oracle-database:19.3

启动命令说明:

  • --name "oracle19c" --指定了容器名称
  • -p 1521:1521 --将容器内监听端口映射到宿主机的1521端口,如果本地已经安装过数据库1521被占用,需要修改前面的端口号,例如:-p 1522:1521
  • -e ORACLE_PDB=orcl --指定数据库service name,连接串里使用这个名称进行连接
  • -e ORACLE_PWD=dbPassword --指定数据库system账号密码,这里是dbPassword
  • -e ORACLE_MEM=2000 --指定数据库使用内存,这里是2000MB
  • -e TZ=Asia/Shanghai --数据库时区
  • -v /usr/local/docker-oracle/oradata:/opt/oracle/oradata -- 这里将主机/usr/local/docker-oracle/oradata目录映射到容器中,作为oracle数据文件持久化保存的位置。注意:需要通过chown 54321:54321 /usr/local/docker-oracle/oradata 将主机oradata目录owner和group改为54321
  • -d --后台运行
  • arvinrong/oracle-database:19.3 --docker镜像名称

一般启动后可以将从其他数据库通过数据泵(expdp)导出的dmp文件放到oradata目录下,然后进入容器内命令行通过impdp进行导入。

一般导入步骤:

  1. 连接数据库执行脚本新建与源库相同的表空间(根据需要导入的schema使用的表空间决定)
  2. 进入容器内命令行执行数据泵导入操作,/opt/oracle/product/19c/dbhome_1/bin/impdp system/dbPassword@localhost:1521/orcl directory=ORACLE_BASE dumpfile=dumpdata20220612-2.dmp schemas=TEST logfile=20220612.log
    注意:ORACLE_BASE 是数据库中Directory内存在的目录别名,需要是存放dmp目录位置。
相关推荐
w-w0w-w7 小时前
SQL注入
网络·数据库·sql
tianyuanwo7 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
一条泥憨鱼7 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
IvorySQL8 小时前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制
数据库·postgresql
螺蛳粉 螺蛳粉9 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
幽灵诶9 小时前
Mysql(基于测试的学习)
数据库·mysql
砚底藏山河9 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
宇宙无敌暴龙战士66610 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊10 小时前
MySQL 的四种隔离级别
java·数据库·mysql
say_fall10 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++