使用docker安装部署oracle12.2_docker 官方oracle 12.2安装包-程序员宅基地

技术标签: Docker  

1. 步骤

  • 在Mac上安装docker
  • 使用oracle的dockerfile,构建image
  • 在docker中运行oracle实例
  • 启动,停止oracle docker容器
  • 连接数据库

2. 在Mac上安装docker

到docker store下载docker-for-mac。

我们需要适当调整一下cpu内存分配,如4核CPU,16G内存。
这里写图片描述

点击reveal in finder可以看到了image的位置在哪里;点击move disk image把镜像移到其他的路径下。
这里写图片描述

启动之后,你就可以在终端敲docker info检查了。

# docker info

其实安装完docker之后,你可以在docker store中直接搜索oracle database 12c(12.1.0.2版本)。但是一方面这个版本是oracle 12.1版本,不是最新的12.2版本;另一方面数据库是包含在container中,如果删除container,也就一并删除了database,这不是我们所想要的。我们选择将container和database的数据文件分离。

3. 使用oracle的dockerfile,构建image

去github,下载oracle的构建文件:docker-images-master.zip,大小约5M。

下载完成后,找个目录解压,然后到oracle官网下载oracle 12.2的安装介质linuxx64_12201_database.zip,大小约3.2G。

下载完成后,将安装介质放在docker-images-master解压之后的目录下:/path/to/docker-images-master/OracleDatabase/dockerfiles/12.2.0.1/,即
这里写图片描述

接着我们开始构建镜像。很简单,就一条命令:

# cd /path/to/docker-images-master/OracleDatabase/dockerfiles

# ./buildDockerImage.sh -v 12.2.0.1 -e

其中的Parameters意义如下:
-v: version to build, Choose one of: 11.2.0.2 12.1.0.2 12.2.0.1
-e: creates image based on ‘Enterprise Edition’
-s: creates image based on ‘Standard Edition 2’
-x: creates image based on ‘Express Edition’
-i: ignores the MD5 checksums

需要注意的时候,在安装过程中需要联网,因为他会下载oraclelinux:7-slim和yum install pre-install的包。附件是完整的安装log

安装完成这一步后,我们就可以用# docker images命令看我们的安装情况了,可以看到oracle linux和oracle database软件已经被装好。

4. 在docker中部署oracle数据库

在docker容器中运行数据库实例,也只需要一条命令:

# docker run --name oracle \ 
-p 1521:1521 -p 5500:5500 \
-v /path/to/oradata:/opt/oracle/oradata \
oracle/database:12.2.0.1-ee

此时,数据文件已经map到/path/to/oradata下,就算你删除了container,这些数据文件还是会被保留的。对应的log如下:

ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: scXX7Cj+1m0=1

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 20-MAY-2017 14:25:30

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Starting /opt/oracle/product/12.2.0.1/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /opt/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/c9f09116cc83/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))

……

SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
Completed: alter pluggable database ORCLPDB1 open
2017-05-20T14:31:25.862061+00:00
ORCLPDB1(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT  AUTO
ORCLPDB1(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL  SEGMENT SPACE MANAGEMENT  AUTO
ORCLPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2017-05-20T14:31:26.657295+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCLCDB/control01.ctl' SCOPE=SPFILE;
   ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
Completed:    ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE

如果“DATABASE IS READY TO USE!”字样已经出现,且后面的log一直停着不动,可以在别的窗口重启container:注意到了最后,光标会停在那里,估计run命令最后调用类似docker logs -f oracle这样的命令,会类似如tail -f输出,所以我们可以直接在别的窗口运行docker stop oracledocker start oracle

5. 启动,停止oracle docker容器

其实我们在上一步已经操作过启停docker,即:

# docker stop oracle

# docker start oracle

如果要看alertlog,可以:

# docker logs oracle

# docker logs -f oracle

后者是以tail -f的方式查看的。

6. 连接数据库

我们可以通过如下命令来修改oracle密码:

# docker exec oracle ./setPassword.sh root123*

这里写图片描述
然后我们可以用Navicat这个Mac上最流行的客户端,连接oracle数据库。
这里写图片描述

如果你想以传统的方式,进入container管理数据库,可以这样:

# docker ps -a   # 先查询出container的container id

# docker exec -it [container id]  /bin/bash  # 连接oracle


7. 参考文章

https://oracleblog.org/study-note/how-to-deploy-122-on-docker-on-mac/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yjk13703623757/article/details/79513415

智能推荐

虚幻引擎图文笔记:自定义GameInstance(5月30日 更新)_虚幻获取mygameinstance-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏8次。自定义一个 GameInstance类,这个流程很像 Godot中的 AutoLoad_虚幻获取mygameinstance

PHP-生成缩略图和添加水印图-学习笔记-程序员宅基地

文章浏览阅读82次。1.开始 在网站上传图片过程,经常用到缩略图功能。这里我自己写了一个图片处理的Image类,能生成缩略图,并且可以添加水印图。2.如何生成缩略图 生成缩略图,关键的是如何计算缩放比率。 这里,我根据图片等比缩放,宽高的几种常见变化,得出一个算缩放比率算法是,使用新图(即缩略图)的宽高,分别除以原图的宽高,看哪个值大,就取它作为缩放比率:...

dyld: Library not loaded: @rpath/libswiftCore.dylib ... Reason: image not found 解决-程序员宅基地

文章浏览阅读2.7k次。在室友Xcode继承一些framework时,爆出了如下错误:dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /private/var/containers/Bundle/Application/1761A6FE-9D6B-45F7-9F9F-922C94BF54A3/demo.app/Framewor..._library not loaded: @rpath/libswiftcore.dylib

linux gvim 快捷键tab,Linux中Vim的常用命令及快捷键-程序员宅基地

文章浏览阅读356次。光标控制命令h或^h向左移一个字符j或^j或^n向下移一行k或^p向上移一行l或空格向右移一个字符G移到文件的最后一行nG移到文件的第n行w..._gvim itab

umi4 项目使用umi-plugin-keep-alive缓存页面(react-activation)-程序员宅基地

文章浏览阅读1k次,点赞12次,收藏10次。按 name 卸载缓存状态下的 节点,name 可选类型为 String 或 RegExp,注意,仅卸载命中 的第一层内容,不会卸载 中嵌套的、未命中的。按 name 刷新缓存状态下的 节点,name 可选类型为 String 或 RegExp,注意,仅刷新命中 的第一层内容,不会刷新 中嵌套的、未命中的。按 name 卸载缓存状态下的 节点,name 可选类型为 String 或 RegExp,将卸载命中 的所有内容,包括 中嵌套的所有。true: 卸载时缓存。获取所有缓存中的节点。_umi-plugin-keep-alive

memory compiler使用流程-程序员宅基地

文章浏览阅读3k次,点赞2次,收藏25次。用了几天的memory compiler,搞清楚了它的使用流程。因为这个软件是不开源的,而且手册又很长,没有快速阅读指南,所以就花了挺多时间学习手册细节,想把其中比较主要的流程记录下来,供大家学习参考。它是一个用来综合一些IP核的软件,它里面各种各样的memory compiler,可以根据自己的选择选中一个,设置好参数之后就能生成想要的参数的memory。 因为每个memory compiler可能工艺不一样,端口数不一样,所以里面有手册告诉你这些细节的。(手册很多,每个手册几百页上下)1、首先就是要安装_memory compiler

随便推点

ALBERT文本分类任务实现_albef分类任务-程序员宅基地

文章浏览阅读5.2k次,点赞2次,收藏15次。#! -*- coding:utf-8 -*-# 情感分析类似,加载albert_zh权重(https://github.com/brightmart/albert_zh)import jsonimport osimport numpy as npimport pandas as pdfrom keras_radam import RAdamfrom bert4keras.b..._albef分类任务

Hive与HBase之间的区别和联系_hive hbase-程序员宅基地

文章浏览阅读2.7w次,点赞36次,收藏161次。首先要知道Hive和HBase两者的区别,我们必须要知道两者的作用和在大数据中扮演的角色概念Hive1.Hive是hadoop数据仓库管理工具,严格来说,不是数据库,本身是不存储数据和处理数据的,其依赖于HDFS存储数据,依赖于MapReducer进行数据处理。2.Hive的优点是学习成本低,可以通过类SQL语句(HSQL)快速实现简单的MR任务,不必开发专门的MR程序。3.由于Hive是依赖于MapReducer处理数据的,因此有很高的延迟性,不适用于实时数据处理(数据查询,数据插_hive hbase

【故障诊断】BP神经网络电机数据特征提取与故障诊断【含Matlab源码 2569期】_故障特征量为无编码比值的bp神经网络-程序员宅基地

文章浏览阅读402次。BP神经网络电机数据特征提取与故障诊断完整的代码,方可运行;可提供运行操作视频!适合小白!_故障特征量为无编码比值的bp神经网络

BIOS、Legacy BIOS和UEFI BIOS:你需要知道的一切-程序员宅基地

文章浏览阅读1.1k次。BIOS 是计算机历史上的一个重要组成部分。这个术语最早是在 20 世纪 70 年代作为 Gary Kildall 开发的 CP/M(微型计算机控制程序)操作系统的一部分使用的。但 BIOS 至今仍在使用。然而,成功的技术现在越来越多地用于现代计算机。Legacy BIOS 和 UEFI BIOSBIOS 的含义是什么?该术语是 Basic Input/Output System(基本输入/输出系统)的首字母缩写,它描述的是作为非易失性存储器储存在计算机主板上的固件。_legacy bios

GitLab集成gitlab-runner_gitlab-runner 16.1.2-程序员宅基地

文章浏览阅读2k次。​GitLab Runner是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与GitLab CI结合使用,GitLab CI是GitLab随附的用于协调作业的开源持续集成服务。​。_gitlab-runner 16.1.2