Oracle官方已经正式发布了Oracle 19.3的dockerfile,在自己的笔记本上安装Oracle数据库,docker方式已然成为最简单的方式之一。另外的一种方式是rpm安装,但是要求操作系统是Linux。对于使用macOS的用户来说,Oracle on docker是非常优秀的体验和测试Oracle数据库的方法。
下载Oracle 19.3.0 for Linux安装盘
在OTN网站上下载最新的Oracle Database 19c for Linux x86-64的安装盘。
下载官方dockerfile
在任意目录下通过git方式将dockerfile下载到本地。这里我们创建了~/oracle目录。
mkdir ~/oracle
cd ~/oracle
git clone https://github.com/oracle/docker-images.git
将下载的安装盘拷贝到dockerfile相同目录下
cp LINUX.X64_193000_db_home.zip ~/oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
构建docker镜像
$ cd ~/oracle/docker-images/OracleDatabase/SingleInstance/dockerfiles
$ ./buildDockerImage.sh -v 19.3.0 -e
完成以后可以看到已经有成功构建的Oracle 19c docker image了,同时构建了Oracle Linux 7的基础镜像。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 19.3.0-ee 04c75bcbb886 4 minutes ago 6.64GB
oraclelinux 7-slim f7512ac13c1b 3 weeks ago 118MB
运行容器
完整的运行指南可以在git下来的官方dockerfile目录中找到。
docker-images/OracleDatabase/SingleInstance/README.md
也可以从github页面中直接阅读 – Oracle Database on Docker 。
我们创建一个目录,以存储Oracle数据文件。
mkdir -p ~/oracle/oradata/oracle19c
在第一次运行容器的时候,会自动创建新的数据库,使用-v参数,将之前新创建的目录映射到容器内的/opt/oracle/oradata目录中,这样就完成了将数据文件存储在本机文件系统中,而非docker容器内。
docker run --name oracle19c \
-p 1521:1521 \
-p 5500:5500 \
-v /Users/Kamus/oracle/oradata/oracle19c:/opt/oracle/oradata \
oracle/database:19.3.0-ee
执行改命令之后,可以注意到第一行的回显列出了自动生成的SYS等用户的密码,本文中是sSNc5GFeSAg=1。
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: sSNc5GFeSAg=1
如果需要修改数据库用户密码,可以在容器运行之后,通过以下命令修改。
docker exec <container name> ./setPassword.sh <your password>
比如下面的例子,将数据库sys用户密码设置为简单的oracle(当然这不推荐)。
$ docker exec oracle19c ./setPassword.sh oracle
The Oracle base remains unchanged with value /opt/oracle
SQL*Plus: Release 19.0.0.0.0 - Production on Tue May 21 15:30:50 2019
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
User altered.
SQL>
User altered.
SQL>
Session altered.
SQL>
User altered.
SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
一直到出现以下字样,表示数据库已经正常创建并且可以使用了。
######################### DATABASE IS READY TO USE! #########################
默认创建的数据库SID是ORCLCDB,创建的PDB是ORCLPDB1,也可以在第一次docker run的时候,用-e参数来指定SID和PDB的名字。比如:
docker run --name new-oracle19c \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_SID=ORCL \
-e ORACLE_PDB=MYPDB1 \
-v /Users/Kamus/oracle/oradata/oracle19c:/opt/oracle/oradata \
oracle/database:19.3.0-ee
测试容器中的Oracle 19c数据库
在成功运行完docker run命令以后,可以看到容器已经正常运行。
$ docker ps | grep oracle
b03dae342bf5 oracle/database:19.3.0-ee "/bin/sh -c 'exec $O…" About an hour ago Up About an hour (healthy) 0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp oracle19c
直接登录容器使用sqlplus做简单的验证。注意使用之前docker run时候回显的用户密码。
$ docker exec -it oracle19c /bin/bash
SQL*Plus: Release 19.0.0.0.0 - Production on Mon May 6 04:42:04 2019
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> show con_id
CON_ID
------------------------------
3
SQL>
也可以在浏览器中登录Oracle 19c内置的EM Express来通过图形界面访问和监控。
4 Comments Add yours