ITPub博客

首页 > 数据库 > Oracle > Docker中安装Oracle

Docker中安装Oracle

原创 Oracle 作者:lhrbest 时间:2020-03-31 15:30:06 0 删除 编辑
--------------- docker安装Oracle
docker  search oracle 
--------------------- docker安装Oracle 12.1.0.2  XE版本
1、安装阿里的docker源:
cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"]
}
 
2、重启docker服务
systemctl restart docker
3、这里选择获取12c版本:12.1.0.2.0
docker pull sath89/oracle-12c
docker images|grep 12c
sath89/oracle-12c       latest        ee3351d51185     7 months ago        5.7GB
4、安装
docker run -d --name oracle12c -h oracle12c -p 8080:8080 -p 1521:1521 -v $PWD/data:/mnt -e TZ=Asia/Shanghai sath89/oracle-12c
5、进入容器
docker exec -it 4d2c0efbb45e /bin/bash
sqlplus sys/lhr@121.36.78.6/xe AS sysdba
docker run -d --name oracle13c -h oracle13c -p 15210:1521  sath89/oracle-12c
--------------------- docker安装Oracle 11g 11.2.0.1.0 Enterprise Edition Release版本
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker run -d --name oracle11g -h oracle12c registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker start oracle_11g
docker exec -it oracle11g bash
sqlplus / as sysdba
alter user system identified by oracle;
alter user sys identified by oracle;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
su root 密码:helowin
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
source /etc/profile
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin


https://github.com/oracle/docker-images/tree/master/OracleDatabase/SingleInstance#running-oracle-database-11gr2-express-edition-in-a-docker-container


基于docker安装的oracle安装

  1. 拉取镜像:
    docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

  2. 下载完成后 查看镜像:
    docker images
    在这里插入图片描述

  3. 创建容器:
    docker run -d –p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
    这里说一下,命令后面的地址一定要是你下载的镜像地址也就是你拉取镜像名字,否则会出现名字已存在等问题!
    如果空间不足可以清理数据:
    删除所有dangling数据卷(即无用的Volume):

    docker volume rm $(docker volume ls -qf dangling=true)

  4. 启动容器
    docker start oracle11g
    在这里插入图片描述

  5. 进入镜像进行配置

    1. 进入oracle的命令环境中。
      docker exec -it oracle11g bash
      在这里插入图片描述
    2. 切换到oracle数据库的root 用户下
      su root
      密码:helowin
      在这里插入图片描述
    3. 编辑profile文件配置ORACLE环境变量
      export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
      export ORACLE_SID=helowin
      export PATH= O R A C L E H O M E / b i n : ORACLE_HOME/bin: O R A C L E H O M E / b i n :PATH
      在最后加上
      在这里插入图片描述
    4. 创建软连接
      ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
    5. 切换到oracle 用户
      这里还要说一下,一定要写中间的内条 - 必须要,否则软连接无效
      在这里插入图片描述
    6. 登录sqlplus–修改sys、system用户密码–创建用户
      在这里插入图片描述
      修改密码:
      alter user system identified by system;
      alter user sys identified by sys;
      ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
      创建用户
      create user test identified by test;
      并给用户赋予权限
      grant connect,resource,dba to test;
      在这里插入图片描述
      过程中出现的报错需要输入以下内容:
      输入:alter database mount;
      输入 :alter database open;
  6. 客户端安装:
    1. instantclient_11_2 软件目录放置到 C:\Program Files目录下
    2. 配置环境变量:
                变量名:ORACLE_HOME
                变量值:C:\Program Files\instantclient_11_2
                变量名:TNS_ADMIN
                变量值:C:\Program Files\instantclient_11_2
                变量名:NLS_LANG
                变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
                修改Path变量:在后面添加 C:\Program Files\instantclient_11_2
    3. 安装:plsqldev11.0.4.exe 除了可以选择安装路径外,其他全部默认。
    4. 打开PLSQL Developer软件后,取消登录,可以进入软件内部,进行破解。破解文件:PLSQL Developer10.0.3.1701_keygen.exe
    5. 配置plsql与客户端 instantclient的连接
    在这里插入图片描述

    1. 把instantclient_11_2目录中ADMIN文件夹中的 tnsnames.ora连接配置文件,复制进入instantclient_11_2根目录,并修改连接配置。
      host:指代服务所在ip地址。port指代:端口号 SERVICE_NAME 指代服务名
      docker_oracle11g =
            (DESCRIPTION =
                  (ADDRESS_LIST =
                              (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.136)(PORT = 1521))
                   )
                  (CONNECT_DATA =
                              (SERVICE_NAME = helowinXDB)
                   )
      )
      7.7 登录:
                  管理员账号sys 密码sys
                  connect as登录方式 sysdba



二,下载Oracle镜像并安装

使用 docker search oracle 来搜索  oracle 的版本,我这里选用的是  registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g ,这是阿里云的一个  oracle 11g 版本,需要其他版本的小伙伴可以自行选择。

使用如下命令来进行镜像的拉取

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

拉取完后,可以使用  docker images 来查看已有镜像

可以看到, REPOSITORY 就是镜像名称, TAG 是版本号, IMAGE ID 是镜像的编号,后面的见名知意了。

启动  Oracle 服务,使用如下命令即可, -p 将容器的  8080 端口映射到主机的  8080 端口(-p 主机端口:容器端口)

docker run --name registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g -p 1521:1521

之后使用  docker ps 来看启动中的容器。

 这里可以看到, oracle 服务已经启动(即 ff94a17f84a7)


三,导入数据、用户及表空间创建

3.1,导入  dmp 数据文件

首先,需要从本机拷贝  dmp(从其他库导出的数据文件,包含数据 + 表结构等) 数据到 Oracle 容器中

格式: docker cp /本地文件地址 容器ID:/容器文件存储地址,如下:

docker cp /home/oracle/data_20181104.dmp ff94a17f84a7:/home/cloudera

【注:容器ID(这里我的是ff94a17f84a7 )请换成自己的】 

3.2,创建表空间及用户

使用如下命令进入  docker 容器内

docker exec -it ff94a17f84a7 bash

使用数据库管理员方式进行登录

这里我使用  sqlplus,提示  command not found ,不用担心,使用  su - oracle 切换下用户到  oracle 用户 ,然后  sqlplus,之后  sys/sys as sysdba 进行登录,如下图,登录成功!

进行表空间的创建:

这里分为四小步:

1,创建临时表空间:

create temporary tablespace TEST_DBF_TEMP tempfile '/home/oracle/data/TEST_DBF_TEMP.dbf' size 50m autoextend on next 50m maxsize 2048m;

 

2,创建正式表空间:

create  tablespace TEST_DBF datafile '/home/oracle/data/TEST_DBF.dbf' size 50M autoextend on next 50m maxsize 2048m;

 3,创建用户并且指定表空间:

create user TEST identified by "123" default tablespace TEST_DBF temporary tablespace TEST_DBF_TEMP;

4,用户授权:

grant create session,connect,resource,dba to TEST;

 

3.3,导入 dmp 文件:

imp TEST/123 file = /data_20181210.dmp full=y;

静静等待导入完成即可。


PS:阿里云记得去云服务器控制台开放数据库对应的端口即可外网连接。

 配置规则 

 选择克隆一个,输入  docker ps 中  oracle 对应的主机端口即可:

配上成功图:

 Bingo!


常见问题(不定时更新):

Oracle服务无法连接&挂掉重启

今天起来准备工作,Oracle无法连接了,可能原因:

  1. 连接时使用的sid不正确,进入容器,连接后使用  SELECT name FROM v$database; 查看SID。
  2. dokcer容器中 Oracle 挂了。
  3. 其他未知原因(如电脑没有连网,磁盘空间满了,用户名密码错误等)。

马上进服务器去 docker ps 查询在线容器,但是发现Oracle还在。

于是, docker exec -it ff94a17f84a7 bash 进入到容器 。

lsnrctl start启动监听程序,如下图,提示已经启动了。

sqlplus  /nolog进入, conn / as sysdba管理员连接,然后 startup ,如下图,提示启动成功,数据库打开。

Bingo! 


重启容器后,端口变更,设置固定端口

1. 查看需要修改的容器,记住  container id

docker ps -a


2. 停止容器

docker stop xxx

3. 修改容器的端口映射配置文件

vim /var/lib/docker/containers/{container_id}/hostconfig.json

"PortBindings": {"80/tcp": [{"HostIp": "","HostPort": "8080"//宿主机ip}]},

4.重启docker服务

service docker restart


5.启动容器

docker start xxx


Error response from daemon: Cannot XX container

这个错误还真的是奇葩,我放个元旦回来,就什么都操作不了了?

解决方案

重启  docker 服务

systemctl restart docker

重启容器成功 






使用Docker安装Oracle数据库

  在很多时候,我们需要在本地安装Oracle数据库,但是整个安装的过程时间非常长而且安装文件大,那么有不有更好的办法来安装Oracle数据库既能减少安装的时间而且还能够快速进行部署呢?答案就是使用Docker来数据库容器,那么具体该怎么进行呢?本文介绍如何在Win7和Win10上面进行Oracle镜像的安装以及如何使用DataGrip建立连接。

  一 Windows7上面的安装

       首先就是在Window7上面安装Docker Toolbox,具体安装的过程,请参考 这篇文档。安装完成后在桌面上一般会有一个Oracle VM VirtualBox和一个Docker Quickstart Terminal,一般在进行操作之前右键单击Docker Quickstart Terminal,然后进入启动界面,如果出现下面的界面就表示安装已经成功了。

图一 启动Docker Quickstart Terminal

  启动完毕后我们就可以进行镜像的拉取和运行了,这里我们使用 docker search oracle 来搜索oralce镜像。 

  A    搜索镜像

图二 搜索Oracle镜像

  B 创建volume以持久化数据

  在命令行输入 docker volume create exeed-db命令创建名称为exeed-db的volume

  C 创建并运行Oracle数据库

        在命令行中输入:docker run -d --name exeed-db -p 1521:1521 -p 8080:8080 --shm-size=1g --restart=always -e ORACLE_PWD=XXX -v exeed-db:/u01/app/oracle/oradata zerda/oracle-database:11.2.0.2-xe

  这里有几点需要注意的是:

  1 --name exeed-db指定创建的volume .

  2  --shm-size=1g:设置/dev/shm的大小。格式为:。number必须大于0。unit可选,可以是b,k,m或g。如果不指定unit,系统默认使用字节。如果此参数不指定,默认使用64m。

  3  --restart=always  --restart 标志会检查容器的退出代码,并据此来决定是否要重启容器,默认是不会重启。--restart的参数说明  always:无论容器的退出代码是什么,Docker都会自动重启该容器。on-failure:只有当容器的退出代码为非0值的时候才会自动重启。另外,该参数还接受一个可选的重启次数参数,`--restart=on-fialure:5`表示当容器退出代码为非0时,Docker会尝试自动重启该容器,最多5次。(注意:这里如果不限定该重启策略,那么每一次重启电脑后都要手动通过docker start命令来重启当前容器)

  4   ORACLE_PWD用于设置当前Oracle数据库密码。

  5   -v exeed-db:/u01/app/oracle/oradata zerda/oracle-database:11.2.0.2-xe用于指定使用的Oracle镜像如果本地找不到的话那么就会去联网进行下载。

  当上面的命令执行完毕以后,如果出现下面的提示,则表示Oracle已经在当前机器上安装完毕并且没有错误。  

  SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
  #########################
  DATABASE IS READY TO USE!
  #########################

  D 查看安装镜像的状态

图三 查看已经正确运行的镜像

  E  使用DataGrip来连接创建的Oracle数据库

图四 DataGrip连接Oracle数据库

  这里也许对Host有疑问,不应该是localhost,这里其实我们安装的oracle是跑在虚拟机上面的,这里的地址指的是虚拟机的地址,我们可以在命令行中输入 docker-machine ls来查看当前的虚拟机的地址。

图五 获取当前的Docker Machine 信息

  这里我们使用sys as sysdba来作为登录用户,这里的密码就是执行docker run 运行时创建的密码,然后点击测试就可以连接自己的oracle数据库了。

  F 后续操作

  使用sys as sysdba登录后创建新的用户:AfterSales,这里记住要创建默认的表空间,接着我们就可以给刚才创建的用户AfterSales授予权限了,这样下次我们就可以通过新建的账户来进行数据库操作了。

  -- Oracle 管理用户

  -- 创建用户
  CREATE USER AfterSales IDENTIFIED BY XXX  DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users;

  -- 赋予权限
  GRANT CONNECT, CREATE TABLE, CREATE TRIGGER, CREATE PROCEDURE, CREATE VIEW, CREATE SEQUENCE, DEBUG CONNECT SESSION TO AfterSales ;

  -- 删除用户
  DROP USER AfterSales CASCADE;

   二  Windows10上面的安装

  Windows10上面的安装和Windows7上面有些差别,具体使用的技术也是完全不同的。

   A   启用Hyper-V

  打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,如图:

图六 开启Hyper-V

  B 安装Docker

  Docker下载地址请点击 这里, 点击如图处即可下载安装包,然后进行安装。

  C 重启机器

  在重启机器后我们可以在任务栏中发现已经运行的Docker,这点和Windows7上面不同,Windows7需要每次重启启动Docker Quickstart Terminal,Windows10则不需要。  

图七 Windows10中Docker任务栏图标

  另外后续的过程和Windows7中完全一样,只不过Windows10中Host不再是虚拟机的地址了,而是直接使用localhost便可以进行登录了。

  最后附上Oracle官方给出的在Docker上面安装Oracle的文档,请点击 这里。 








About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub、博客园、CSDN和个人微 信公众号( DB宝)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群号: 230161599 、618766405

● 微 信群:可加我微 信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友 646634621 ,注明添加缘由

● 于 2020-03-01 06:00 ~ 2020-03-31 24:00 在西安完成

● 最新修改时间:2020-03-01 06:00 ~ 2020-03-31 24:00

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麦苗出版的数据库类丛书http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用网络班http://blog.itpub.net/26736162/viewspace-2148098/

小麦苗腾讯课堂主页https://lhr.ke.qq.com/

........................................................................................................................

使用 微 信客户端扫描下面的二维码来关注小麦苗的微 信公众号( DB宝)及QQ群(DBA宝典)、添加小麦苗微 信, 学习最实用的数据库技术。

........................................................................................................................

欢迎与我联系

 

 



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2683586/,如需转载,请注明出处,否则将追究法律责任。

全部评论
【QQ:646634621】【微信:lhrbestxh】【微信公众号:DB宝】【11g、12c OCM】【QQ群:230161599、618766405】【《数据库笔试面试宝典》作者】【OCP、OCM、高可用(RAC+DG+OGG)、MySQL培训班已开讲,只讲实用内容】

注册时间:2012-09-23

  • 博文量
    1498
  • 访问量
    8685262