Docker 安装 Oracle

本文最后更新于:2 年前

Oracle 用 Docker 来安装很方便,其他的都麻烦,不省心。但是也有一些坑要踩,故有此文。

安装 Oracle

Docker 自行安装

下载镜像:
docker pull sath89/oracle-12c
镜像较大,速度较慢,建议换源加速

安装完后启动:

1
docker run --name myoracle -d -p 8080:8080 -p 1521:1521 -v /docker_data/oracle:/u01/app/oracle sath89/oracle-12c

参数解释如下:

  1. --name:容器名字
  2. -d:后台运行容器,并返回容器ID;
  3. -p:端口映射,本机:容器
  4. -v:挂载本地目录,将数据保留在本机来达到数据持久化的目的,要不每次起的容器都是全新的。本机:容器

容器需要初始化,通过 docker logs -f myoracle 来查看进度。出现最底下的 Database ready to use. Enjoy! ;) 后代表初始化成功。

接下来进入容器:su oracle,连接 Oracle:$ORACLE_HOME/bin/sqlplus / as sysdba

新建一个表测试一下数据持久化:

1
2
3
4
5
6
7
create table student (
xh number(4), -- 学号
xm varchar2(20), -- 姓名
sex char(2), -- 性别
birthday date, -- 出生日期
sal number(7,2) -- 奖学金
);

退出容器后,停止并删除容器:docker stop myoracle; docker rm myoracle

接下来再起一次,docker logs -f myoracle 会显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
found files in /u01/app/oracle/oradata Using them instead of initial database
ORACLE instance started.

Total System Global Area 629145600 bytes
Fixed Size 2927528 bytes
Variable Size 306185304 bytes
Database Buffers 314572800 bytes
Redo Buffers 5459968 bytes
Database mounted.
Database opened.
Starting web management console

PL/SQL procedure successfully completed.

[IMPORT] Not a first start, SKIPPING Import from Volume '/docker-entrypoint-initdb.d'
[IMPORT] If you want to enable import at any state - add 'IMPORT_FROM_VOLUME=true' variable

Database ready to use. Enjoy! ;)

没有再初始化了。进入数据库看看:

1
2
3
4
5
SQL> select count(*) from student;

COUNT(*)
----------
0

证明数据已经可以持久化,安装完成!

来呀快活呀


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!