oracle2c-r2(12.2.0.1) 的镜像
docker- 构建 oracle2c-r2(12.2.0.1) 的镜像
需求
由于公司的数据库需要使用新的oracle版本(12c-r2 -->12.2.0.1),从之前的oracle11g迁移到12c。所以,便有了我们今天的内容。
首先,我们就先来介绍一下如何构建oracle12c的镜像(docker image)。
如果大家有使用的需求而又不是正式的项目,可以直接到docker hub 上面 pull 一个别人家的。在这里附上链接:https://hub.docker.com/r/mritschel/oracle12cr2_base/
PS.这个真的不是广告啊,我本来也是想这么搞得,毕竟不用重复造轮子么。。。无奈是公司的项目需求,不能使用第三方的,所以就只能自己构建吧。。。
准备
准备工作主要分为两部分:
part1
需要下载oracle相关的东东,例如安装文件,dockerfile。这些都可以从oracle 的github 上面找到。https://github.com/oracle/docker-images/tree/master/OracleDatabase
下载完成以后,新建一个目录,我这里是/oracle12c,把dockerfile(其实是一个shell脚本buildDockerImage.sh)放到里面:

然后再在这个目录下创建一个子目录,我这里是/oracle12c/12.2.0.1; 最后再把下载的oracle12c-r2的安装包和从GitHub上面下载的相关文件统统放到里面。类似下图:

Part2
在这里还需要强调一点,由于Oracle12c需要container的空间 大于默认值(10g),因此我们需要为container扩容。请注意:只有 Storage Driver = devicemapper 的文件存储格式才支持扩容。由于我这里环境是centos7,且安装的docker版本是1.13,而且文件存储格式是devicemapper, 所以可以按照下面方法对container进行扩容。。。貌似最新的docker17.03采用的是 “overlay2”的文件存储格式,也许可以省略这一步。
solution1 - 启动docker daemon时设定参数
# dockerd --storage-opt dm.basesize=30G
solution2 - 修改配置文件 "/etc/sysconfig/docker-storage"
# vi /etc/sysconfig/docker-storage
修改参数为:DOCKER_STORAGE_OPTIONS=--storage-opt dm.basesize=30G
到这里,我们的准备工作就完成了。
开始构建
构建工作相对简单,只是需要运行dockerfile即可。由于构建的过程中需要在线下载和安装一些组件,此时需要保证网络畅通。
完成构建
完成构建之后,我们可以看到oracle12c-r2的docker image 已经存在于本地:

运行镜像
# docker run -it --name ora12c-r2 -p 1521:1521 -p 5500:5500 -e ORACLE_SID=xxx -e ORACLE_PDB=xxx -e ORACLE_PWD=xxx -e ORACLE_CHARACTERSET=AL32UTF8 -v /DATA/oracle_12c/sharedData:/opt/oracle/oradata oracle/database:12.2.0.1-se2
这里贴出命令行参数:

Parameters:
--name: The name of the container (default: auto generated)
-p: The port mapping of the host port to the container port.
Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express)
-e ORACLE_SID: The Oracle Database SID that should be used (default: ORCLCDB)
-e ORACLE_PDB: The Oracle Database PDB name that should be used (default: ORCLPDB1)
-e ORACLE_PWD: The Oracle Database SYS, SYSTEM and PDB_ADMIN password (default: auto generated)
-e ORACLE_CHARACTERSET:
The character set to use when creating the database (default: AL32UTF8)
-v The data volume to use for the database.
Has to be owned by the Unix user "oracle" or set appropriately.
If omitted the database will not be persisted over container recreation.

第一次运行容器是,会根据我们的指令进行初始化操作,例如安装oracle instance, 启动服务等等。。。直到我们看到
#########################
DATABASE IS READY TO USE!
########################
我们的oracle12c-r2数据库就创建完成。
进入运行的container,连接数据库:
# docker exec -it ora12c-r2 /bin/bash
# sqlplus sys/<your password>@//localhost:1521/<your SID> as sysdba
OK, 我们的工作已经完成了,现在我们就可以在本地使用oracle12c-r2啦 :) 最后,感谢大家的观看,欢迎留言交流。。。
参考资料:
https://blogs.oracle.com/developer/creating-an-oracle-database-docker-image
http://www.projectatomic.io/blog/2016/03/daemon_option_basedevicesize/
https://bobcares.com/blog/docker-container-size/
oracle2c-r2(12.2.0.1) 的镜像的更多相关文章
- docker- 构建 oracle2c-r2(12.2.0.1) 的镜像
需求 由于公司要数据库需要使用新的oracle版本(12c-r2 ->12.2.0.1),需要从之前的oracle11g迁移到12c.所以,我们今天就先来介绍一下如何构建oracle12c的镜像 ...
- RedHat 7.3 Oracle 12.2.0.1 RAC 安装手册(转)
1 准备工作 1.1 关于GRID的一些变化 1.1.1 简化的基于映像的Oracle Grid Infrastructure安装 从Oracle Grid Infrastructure 12 ...
- Oracle 12.1.0.2 New Feature翻译学习【In-Memory column store内存列存储】【原创】
翻译没有追求信达雅,不是为了学英语翻译,是为了快速了解新特性,如有语义理解错误可以指正.欢迎加微信12735770或QQ12735770探讨oracle技术问题:) In-Memory Column ...
- DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版及制作Visual Studio C#项目模板文件详解
关于 DotNetBar for Windows Forms 12.9.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版原创发布-带官方示例程序版
关于 DotNetBar for Windows Forms 12.7.0.10_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版------------- ...
- DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版原创发布-带官方示例程序版
关于 DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- DotNetBar for Windows Forms 12.2.0.7_冰河之刃重打包版原创发布-带官方示例程序版
关于 DotNetBar for Windows Forms 12.2.0.7_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- DotNetBar for Windows Forms 12.1.0.0_冰河之刃重打包版 原创发布
关于 DotNetBar for Windows Forms 12.1.0.0_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- 探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1)
探索Oracle数据库升级6 11.2.0.4.3 Upgrade12c(12.1.0.1) 一.前言: Oracle 12c公布距今已经一年有余了,其最大亮点是一个能够插拔的数据库(PD ...
随机推荐
- POJ Oulipo(KMP模板题)
题意:找出模板在文本串中出现的次数 思路:KMP模板题 #include<cstdio> #include<cstring> #include<cmath> #in ...
- scrapy--介绍
Scrapy一个开源和协作的框架,其最初是为了页面抓取所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可用于如数据挖掘.监测和自动化测试等领 ...
- GO语言学习(十二)Go 语言函数
Go 语言函数 函数是基本的代码块,用于执行一个任务. Go 语言最少有个 main() 函数. 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务. 函数声明告诉了编译器函数的名称,返回 ...
- [置顶]
WebService学习总结(1)——WebService相关概念
一.序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分.但是不得不承认的是W ...
- Android Material风格的应用(二)--RecyclerView
添加RecyclerView Android Material风格的应用(一)--AppBar TabLayoutAndroid Material风格的应用(二)--RecyclerViewAndro ...
- Project Euler 516 5-smooth totients (数论)
题目链接: https://projecteuler.net/problem=516 题目: \(5\)-smooth numbers are numbers whose largest prime ...
- python3 随机生成10以内的加法算术题
今晚晚饭过后,看到小孩在做加法题,全是10以内的,因为她现在只会10以内的加法题.而这些题是老婆手动出的题目. 看到这个情景,突然想到,可以用python来实现随机出题,而且可以指定出多少题,出多少以 ...
- 手机用appnium,web自动化用eclips+webdriver2
手机用appnium,web自动化用eclips+webdriver2 吴建清 pycharm 1.安装环境2.pycharm类似eclipse,写脚本,运行脚本3.uiautomatorviewer ...
- 原生js大总结一
001.浅谈堆和栈的理解? js变量存储有栈存储和堆存储,基本数据类型的变量存储在栈中,引用数据类型的变量存储在堆中 引用类型数据的地址也存在栈中 当访问基础类型变量时,直接从栈中取值.当访问 ...
- [React Intl] Format Date and Time Using react-intl FormattedDate and FormattedTime
Using the react-intl FormattedDate and FormattedTime components, we’ll render a JavaScript Date into ...