2021-04-06

本文详细介绍了如何在Mac上安装Docker,然后使用Oracle的Dockerfile构建12.2版本的Oracle数据库镜像,并在Docker中部署和管理Oracle实例,包括启动、停止容器及连接数据库的方法。
摘要由CSDN通过智能技术生成

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
1
其实安装完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
1
2
3
其中的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
1
2
3
4
此时,数据文件已经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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
如果“DATABASE IS READY TO USE!”字样已经出现,且后面的log一直停着不动,可以在别的窗口重启container:注意到了最后,光标会停在那里,估计run命令最后调用类似docker logs -f oracle这样的命令,会类似如tail -f输出,所以我们可以直接在别的窗口运行docker stop oracle再docker start oracle。 


5. 启动,停止oracle docker容器
其实我们在上一步已经操作过启停docker,即:

# docker stop oracle

# docker start oracle
1
2
3
如果要看alertlog,可以:

# docker logs oracle

# docker logs -f oracle
1
2
3
后者是以tail -f的方式查看的。 


6. 连接数据库
我们可以通过如下命令来修改oracle密码:

# docker exec oracle ./setPassword.sh root123*
1

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


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

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

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


7. 参考文章
https://oracleblog.org/study-note/how-to-deploy-122-on-docker-on-mac/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值