在Docker上安装oracle 19c

栏目: 数据库 · 发布时间: 5年前

内容简介:基于docker的安装非常简单。其实就两行核心命令:我们假设你已经在Mac上安装好了docker,我们开始安装oracle 19c。在docker上安装数据库或应用,是基于dockerfile的,目前Oracle官方还没发布基于19c的dockerfile,但是我们可以使用别人已经做好的dockerfile(感谢

基于 docker 的安装非常简单。

其实就两行核心命令:

./buildDockerImage.sh -v 19.2.0 -e
docker run --name oracle19c -p 1521:1521 -p 5500:5500 -v /Users/lovehouse/iDocker/dockervolums/oradata/oracle19c:/opt/oracle/oradata oracle/database:19.2.0-ee

我们假设你已经在Mac上安装好了docker,我们开始安装oracle 19c。在docker上安装数据库或应用,是基于dockerfile的,目前Oracle官方还没发布基于19c的dockerfile,但是我们可以使用别人已经做好的dockerfile(感谢 kamus 告诉我这个docker file)。

如果你不知道如何在Mac上安装docker,可以参考我这篇《 在Mac上安装docker并部署oracle 12.2

我们先来试一下官方在github上的dockerfile:

LoveHousedeiMac:iDocker lovehouse$ pwd
/Users/lovehouse/iDocker/oracle
LoveHousedeiMac:iDocker lovehouse$ git clone https://github.com/oracle/docker-images.git
Cloning into 'docker-images'...
remote: Enumerating objects: 77, done.
remote: Counting objects: 100% (77/77), done.
remote: Compressing objects: 100% (52/52), done.
remote: Total 9878 (delta 25), reused 55 (delta 23), pack-reused 9801
Receiving objects: 100% (9878/9878), 10.20 MiB | 2.47 MiB/s, done.
Resolving deltas: 100% (5686/5686), done.
LoveHousedeiMac:iDocker lovehouse$ 
LoveHousedeiMac:iDocker lovehouse$ 
LoveHousedeiMac:iDocker lovehouse$ ls -l
total 0
drwxr-xr-x  31 lovehouse  staff  1054 Feb 16 17:07 docker-images
LoveHousedeiMac:iDocker lovehouse$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles    
LoveHousedeiMac:dockerfiles lovehouse$ ls -l
total 16
drwxr-xr-x   8 lovehouse  staff   272 Feb 16 17:07 11.2.0.2
drwxr-xr-x  18 lovehouse  staff   612 Feb 16 17:07 12.1.0.2
drwxr-xr-x  16 lovehouse  staff   544 Feb 16 17:07 12.2.0.1
drwxr-xr-x  16 lovehouse  staff   544 Feb 16 17:07 18.3.0
drwxr-xr-x   8 lovehouse  staff   272 Feb 16 17:07 18.4.0
-rwxr-xr-x   1 lovehouse  staff  5088 Feb 16 17:07 buildDockerImage.sh
LoveHousedeiMac:dockerfiles lovehouse$ 

我们看到只有11.2.0.2,12.1.0.2,12.2.0.1,18.3.0和18.4.0几个版本,还没发布19c。

我们用marcelo-ochoa做好的dockerfile,具体的信息在 这里 。我们开始安装:

1. 先利用git clone下载marcelo-ochoa做好的dockerfiles:

LoveHousedeiMac:iDocker lovehouse$ mkdir marcelo-ochoa
LoveHousedeiMac:iDocker lovehouse$ cd /Users/lovehouse/iDocker/marcelo-ochoa
LoveHousedeiMac:marcelo-ochoa lovehouse$ 
LoveHousedeiMac:marcelo-ochoa lovehouse$  git clone https://github.com/marcelo-ochoa/docker-images.git
Cloning into 'docker-images'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 9111 (delta 7), reused 7 (delta 3), pack-reused 9087
Receiving objects: 100% (9111/9111), 10.01 MiB | 1.59 MiB/s, done.
Resolving deltas: 100% (5204/5204), done.
LoveHousedeiMac:marcelo-ochoa lovehouse$ 

我们看到是存在19.2.0的dockerfile的,同时检查其安装的安装包文件名:

LoveHousedeiMac:dockerfiles lovehouse$ cd /Users/lovehouse/iDocker/marcelo-ochoa/docker-images/OracleDatabase/SingleInstance/dockerfiles
LoveHousedeiMac:dockerfiles lovehouse$ ls -l
total 16
drwxr-xr-x   8 lovehouse  staff   272 Feb 16 17:09 11.2.0.2
drwxr-xr-x  18 lovehouse  staff   612 Feb 16 17:09 12.1.0.2
drwxr-xr-x  16 lovehouse  staff   544 Feb 16 17:09 12.2.0.1
drwxr-xr-x  16 lovehouse  staff   544 Feb 16 17:09 18.3.0
drwxr-xr-x   8 lovehouse  staff   272 Feb 16 17:09 18.4.0
drwxr-xr-x  17 lovehouse  staff   578 Feb 16 17:33 19.2.0
-rwxr-xr-x   1 lovehouse  staff  5145 Feb 16 17:09 buildDockerImage.sh
LoveHousedeiMac:dockerfiles lovehouse$ cd 19.2.0
LoveHousedeiMac:19.2.0 lovehouse$ ls -l
total 136
-rw-r--r--  1 lovehouse  staff    49 Feb 16 17:09 Checksum.ee
-rw-r--r--  1 lovehouse  staff  3405 Feb 16 17:09 Dockerfile
-rwxr-xr-x  1 lovehouse  staff  1148 Feb 16 17:09 checkDBStatus.sh
-rwxr-xr-x  1 lovehouse  staff   905 Feb 16 17:09 checkSpace.sh
-rwxr-xr-x  1 lovehouse  staff  3012 Feb 16 17:09 createDB.sh
-rw-r--r--  1 lovehouse  staff  6878 Feb 16 17:09 db_inst.rsp
-rw-r--r--  1 lovehouse  staff  9204 Feb 16 17:09 dbca.rsp.tmpl
-rwxr-xr-x  1 lovehouse  staff  2526 Feb 16 17:09 installDBBinaries.sh
-rwxr-xr-x  1 lovehouse  staff  6526 Feb 16 17:09 runOracle.sh
-rwxr-xr-x  1 lovehouse  staff  1015 Feb 16 17:09 runUserScripts.sh
-rwxr-xr-x  1 lovehouse  staff   758 Feb 16 17:09 setPassword.sh
-rwxr-xr-x  1 lovehouse  staff   932 Feb 16 17:09 setupLinuxEnv.sh
-rwxr-xr-x  1 lovehouse  staff   678 Feb 16 17:09 startDB.sh
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ cat Dockerfile 
LoveHousedeiMac:19.2.0 lovehouse$ cat Dockerfile |grep INSTALL_FILE_1
    INSTALL_FILE_1="V981623-01.zip" \
COPY --chown=oracle:dba $INSTALL_FILE_1 $INSTALL_RSP $INSTALL_DB_BINARIES_FILE $INSTALL_DIR/
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:dockerfiles lovehouse$ 

我们可以看到,安装包就是叫V981623-01.zip,这和edelivery.oracle.com上下载的db安装包是同名的,不用改名。

2. 将安装包拷贝到该目录下,运行开始安装:

LoveHousedeiMac:19.2.0 lovehouse$ pwd
/Users/lovehouse/iDocker/marcelo-ochoa/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.2.0
LoveHousedeiMac:19.2.0 lovehouse$ cp /Users/lovehouse/Downloads/V981623-01.zip ./
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ ls -l
total 11528424
-rw-r--r--  1 lovehouse  staff          49 Feb 16 17:09 Checksum.ee
-rw-r--r--  1 lovehouse  staff        3405 Feb 16 17:09 Dockerfile
-rw-r--r--@ 1 lovehouse  staff  3032822863 Feb 16 17:33 V981623-01.zip
-rw-r--r--@ 1 lovehouse  staff  2869657581 Feb 16 17:14 V981627-01.zip
-rwxr-xr-x  1 lovehouse  staff        1148 Feb 16 17:09 checkDBStatus.sh
-rwxr-xr-x  1 lovehouse  staff         905 Feb 16 17:09 checkSpace.sh
-rwxr-xr-x  1 lovehouse  staff        3012 Feb 16 17:09 createDB.sh
-rw-r--r--  1 lovehouse  staff        6878 Feb 16 17:09 db_inst.rsp
-rw-r--r--  1 lovehouse  staff        9204 Feb 16 17:09 dbca.rsp.tmpl
-rwxr-xr-x  1 lovehouse  staff        2526 Feb 16 17:09 installDBBinaries.sh
-rwxr-xr-x  1 lovehouse  staff        6526 Feb 16 17:09 runOracle.sh
-rwxr-xr-x  1 lovehouse  staff        1015 Feb 16 17:09 runUserScripts.sh
-rwxr-xr-x  1 lovehouse  staff         758 Feb 16 17:09 setPassword.sh
-rwxr-xr-x  1 lovehouse  staff         932 Feb 16 17:09 setupLinuxEnv.sh
-rwxr-xr-x  1 lovehouse  staff         678 Feb 16 17:09 startDB.sh
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ cd ..
LoveHousedeiMac:dockerfiles lovehouse$ ls
11.2.0.2                12.1.0.2                12.2.0.1                18.3.0                  18.4.0                  19.2.0                  buildDockerImage.sh
LoveHousedeiMac:dockerfiles lovehouse$ ./buildDockerImage.sh -v 19.2.0 -e
Ignored MD5 sum, 'md5sum' command not available.
==========================
DOCKER info:
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 18.09.2
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
 
......
 
Step 24/24 : CMD exec $ORACLE_BASE/$RUN_FILE
 ---> Running in f4bddc96e630
Removing intermediate container f4bddc96e630
 ---> 65cdd07a7bc1
Successfully built 65cdd07a7bc1
Successfully tagged oracle/database:19.2.0-ee
 
 
  Oracle Database Docker Image for 'ee' version 19.2.0 is ready to be extended: 
    
    --> oracle/database:19.2.0-ee
 
  Build completed in 574 seconds.
  
LoveHousedeiMac:dockerfiles lovehouse$     
LoveHousedeiMac:dockerfiles lovehouse$ 

附件是完整的log:build19c.log

我们看到image已经安装好,注意它是附带安装了一个slim版的oracle linux,这个在12.2安装的时候,就是这种模式:

LoveHousedeiMac:dockerfiles lovehouse$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
oracle/database     19.2.0-ee           65cdd07a7bc1        About an hour ago   6.33GB
oraclelinux         7-slim              c3d869388183        4 weeks ago         117MB
LoveHousedeiMac:dockerfiles lovehouse$ 

3. 我们开始安装数据库实例:

注意oracle 企业版的docker run的命令格式如下(XE版的都有所区别):

docker run --name <container name> \
-p <host port>:1521 -p <host port>:5500 \
-e ORACLE_SID=<your SID> \
-e ORACLE_PDB=<your PDB name> \
-e ORACLE_PWD=<your database passwords> \
-e ORACLE_CHARACTERSET=<your character set> \
-v [<host mount point>:]/opt/oracle/oradata \
oracle/database:18.3.0-ee
 
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 /opt/oracle/oradata
                  The data volume to use for the database.
                  Has to be writable by the Unix "oracle" (uid: 54321) user inside the container!
                  If omitted the database will not be persisted over container recreation.
   -v /opt/oracle/scripts/startup | /docker-entrypoint-initdb.d/startup
                  Optional: A volume with custom scripts to be run after database startup.
                  For further details see the "Running scripts after setup and on startup" section below.
   -v /opt/oracle/scripts/setup | /docker-entrypoint-initdb.d/setup
                  Optional: A volume with custom scripts to be run after database setup.
                  For further details see the "Running scripts after setup and on startup" section below.

我们开始安装实例(注意这里会生成一个sys,system和pdbadmin的密码):

LoveHousedeiMac:dockerfiles lovehouse$ docker run --name oracle19c -p 1521:1521 -p 5500:5500 -v /Users/lovehouse/iDocker/dockervolums/oradata/oracle19c:/opt/oracle/oradata oracle/database:19.2.0-ee
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: L40uti33Ojk=1
 
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 16-FEB-2019 10:55:17
 
......
 
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
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"
2019-02-16T11:06:30.379489+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCLCDB/control01.ctl' SCOPE=SPFILE;
2019-02-16T11:06:30.383959+00:00
ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
   ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
Completed:    ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE

注,如果“DATABASE IS READY TO USE!”字样已经出现,且后面的log一直停着不动,可以在别的窗口重启container。

附件是完整的log:run19c.log

登陆主机或数据库进行操作:

LoveHousedeiMac:19.2.0 lovehouse$  docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                    PORTS                                            NAMES
39284f79172b        oracle/database:19.2.0-ee   "/bin/sh -c 'exec $O…"   26 minutes ago      Up 11 minutes (healthy)   0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp   oracle19c
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ 
LoveHousedeiMac:19.2.0 lovehouse$ docker exec -it 39284f79172b /bin/bash
[oracle@39284f79172b ~]$ 
[oracle@39284f79172b ~]$ 
[oracle@39284f79172b admin]$ sqlplus sys/L40uti33Ojk=1@ORCLPDB1 as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Feb 16 11:44:29 2019
Version 19.2.0.0.0
 
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.2.0.0.0
 
SQL>  
LoveHousedeiMac:~ lovehouse$ docker ps   
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                    PORTS                                            NAMES
39284f79172b        oracle/database:19.2.0-ee   "/bin/sh -c 'exec $O…"   About an hour ago   Up 39 minutes (healthy)   0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp   oracle19c
LoveHousedeiMac:~ lovehouse$ 
LoveHousedeiMac:~ lovehouse$ docker run --rm -ti oracle/database:19.2.0-ee sqlplus pdbadmin/L40uti33Ojk=1@//172.17.0.2:1521/ORCLPDB1
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Feb 16 11:50:21 2019
Version 19.2.0.0.0
 
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
 
Last Successful login time: Sat Feb 16 2019 11:50:12 +00:00
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.2.0.0.0
 
SQL> 

另外注意一下,以主机的方式登陆进去之后,直接sqlplus会报错ORA-12162,是因为docker镜像中没有指定ORACLE_SID,export一下就可以了:

[oracle@39284f79172b admin]$ sqlplus "/ as sysdba"
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Feb 16 12:09:40 2019
Version 19.2.0.0.0
 
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
 
 
Enter user-name: 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
 
 
Enter user-name: 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
 
 
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
[oracle@39284f79172b admin]$ 
[oracle@39284f79172b admin]$ ps -ef |grep SID
[oracle@39284f79172b admin]$ ps -ef |grep ora_smon |grep -v grep
oracle      65     1  0 11:10 ?        00:00:00 ora_smon_ORCLCDB
[oracle@39284f79172b admin]$ 
[oracle@39284f79172b admin]$ export ORACLE_SID=ORCLCDB
[oracle@39284f79172b admin]$ 
[oracle@39284f79172b admin]$ 
[oracle@39284f79172b admin]$ sqlplus "/ as sysdba"
 
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Feb 16 12:13:14 2019
Version 19.2.0.0.0
 
Copyright (c) 1982, 2018, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.2.0.0.0
 
SQL> 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Node即学即用

Node即学即用

[英] Tom Hughes-Croucher、[英] Mike Wilson / 郑达韡 / 人民邮电出版社 / 2013-2 / 39.00元

《Node即学即用》由休斯-克劳奇、威尔逊编著,《Node即学即用》讲解如何用Node构建可扩展因特网应用,是全面的实用指南,除了详细介绍Node提供的API外,还用大量篇幅介绍了服务器事件驱动开发的重要概念。内容涉及跨服务器的并发连接、非阻塞I/O和事件驱动的编程、如何支持各种数据库和数据存储工具、NodeAPI的使用示例等。适合对JavaScript及编程有一定程度了解的读者阅读。一起来看看 《Node即学即用》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具