• 在Docker里面安装oracle11R2


    主题:

      由于在网上找到的关于基于docker安装的oracle11R2的相关介绍有些地方不是那么明白,在安装的时候比较尴尬,因此为了以后方便使用,今日特做了个实际操作,  并把主要步骤进行记录;

    约定:

      linux:      centos7

      docker:  19.03.12

      oracle:   11R2

      安装目录:  /oracle/install

      工具:    yum install -y zip unzip

      oracle镜像:jaspeen/oracle-11g

              

    准备:

      1.linux安装docker ,安装过程省略;

      2.下载oracle11R2

        linux.x64_11gR2_database_1of2.zip   linux.x64_11gR2_database_2of2.zip

        下载链接:https://pan.baidu.com/s/196NODEjBvpri6xXo2JAFVw ,提取码:l5ss 

      3.复制安装包

        将上面下载的安装包解压到/oracle/install/目录下面,并解压(默认解压到database目录)。

      4.镜像下载

        docker pull jaspeen/oracle-11g 

      5.下载检测

        docker images 

        

         至此,我们的镜像已经成功下载;由于oracle许可限制等原因,当前镜像并不能直接启用运行,该镜像仅仅完成了关于oracle的有关配置,实际安装还需要用到我们的安装包(解压出来的database)

      6.镜像安装脚本  

    #!/usr/bin/env bash
    set -e
    source /assets/colorecho
     
    trap "echo_red '******* ERROR: Something went wrong.'; exit 1" SIGTERM
    trap "echo_red '******* Caught SIGINT signal. Stopping...'; exit 2" SIGINT
     
    if [ ! -d "/install/database" ]; then
        echo_red "Installation files not found. Unzip installation files into mounted(/install) folder"
        exit 1
    fi
     
    echo_yellow "Installing Oracle Database 11g"
     
    su oracle -c "/install/database/runInstaller -silent -ignorePrereq -waitforcompletion -responseFile /assets/db_install.rsp"
    /opt/oracle/oraInventory/orainstRoot.sh
    /opt/oracle/app/product/11.2.0/dbhome_1/root.sh

        通过上面的镜像安装脚本可知,在制作镜像的时候,里面默认回到/install/database/目录下面去找安装文件,因此主机里面的Oracle安装目录需要映射到容器里面,才能正确的安装。

    安装:

      1.安装命令

        命令解释:

    privileged 给这个容器特权,安装oracle可能需要操作需要root权限的文件或目录
    name 给这个容器名一个名字
    p 映射端口
    v 挂在文件到容器指定目录 (/server/install/database 对应容器 /install/database)
    jaspeen/oracle-11g 代表启动指定的容器

        安装命令:

          docker run --privileged --name oracle11g -p 1521:1521 -v /server/install:/install jaspeen/oracle-11g

      2.开始安装

        根据上面的安装命令,我们约定主机的1521端口应和到容器的1521端口;8080端口映射到容器的8080端口;此处暂时不映射8080端口,因此执行上面的安装命令,Oracle将安装到容器里面,接下来开始安装:

        

          接下来就是自动安装的一个过程,由于其按照时间比较久,因此开始安装后请耐性等待(由于本次是夜间安装,因此后半夜睡觉了,也不知道什么时候安装完成,早上起来关机收成果)

      3.安装验证

        经过了一个晚上,接下来该是验证成果了;

        首先检测容器是否正常启动 docker ps

          

            通过截图,我们知道容器已经安装成功了。

        解锁账号,修改密码

          进入容器:  docker exec -it oracle11g /bin/bash  

          切换账号:  su oracle  

          nosql登录:      sqlplus / as sysdba

            

             alter user scott  account unlock;

          commit;

          alter user scott identitfied by 123456;

          conn system/manager as sysdba;

          alter user system identified by manager;

          alter user sys identified by manager;

          exit ;(退出sql)

          此致已基本验证了我们的容器是可以正常运行的;

      4.提交镜像

        由于我们在工作中根据实际需要需要快速的搭建oracle的环境,但是不能每次都这么搭建,否则太慢了,还费人力、精力,接下来我们把刚才的容器提交为新的镜像,备份镜像以供实际需要。

        从容器创建镜像口令:

          docker commit [options] 容器ID  镜像名称:版本号,具体参数如下:

            -a "提交作者"

            -c 使用Dockerfile指令创建容器

            -m 提交时的说明文字

            -p commit时暂停容器

        根据容器制作镜像:

          镜像取名 oracle11g-installed

          docker commit -p -a "liwenxue" -m "first oracle11g image" oracle11g-installed:v0  

          

         验证镜像制作结果:

          检查新镜像:

          

             查看镜像信息:

          docker image inspect toracle11g-installed:v0

          

              截图显示,已经生成了镜像。

         停用原版容器,根据新的镜像生产新的容器,并做好端口、数据目录映射

      5.安装结束

        至此基本安装结束。

      6.镜像应用

        停止模板容器:docker stop oracle11g

        启动新的容器:            

    无目录映射:
    docker run --name test-oracle11g -lnt --restart=always -p 15210:1521 -p 15211:8080 -d oracle11g-installed  (不带目录映射)

    有目录映射:
    docker run --name test-oracle11g -lnt --restart=always -p 15210:1521 -p 15211:8080 -v /opt/oracle/app/oradata/orcl:/opt/oracle/app/oradata/orcl -v /opt/oracle/dpdump:/opt/oracle/dpdump -d oracle11g-installed

        端口放行15210,15211

        连接测试

          

          此时提示一个类似: ora-01033 oracle initialization 这样的错误信息,显然没有成功连接,接下来我们就来解决这个问题;

          docker exec -it test-oracle11g /bin/bash  #进入容器

          su oracle  #切换oracle账号

          sqlplus nolog  #使用命令模式

          conn sys/manager as sysdba  #连接数据库

          shutdown normal    #关闭数据库oracle例程服务

          startup mount    #重启oracle例程服务

          alter database open; #打开数据库(本例中已成功运行)

          如果打开数据库还是失败,则根据提示继续找原因(有很多种,比如dbf文件删除,dbf文件损坏)

          (

            dbf文件损坏类型:修复口令参考如下(此处以XXX.DBF为例):

            alter database datafile 6 offline drop;

            drop user XXX cascade;        

          )

           操作截图:

            

            再次连接测试:

            

            至此,基于Docker Orcle11R2 容器成功安装.

        重新生成镜像

          docker commit -p -a "liwenxue" -m "修正db连接,恢复正常使用" f5addb819024  oracle11g-installed:v1

      7.导出镜像

        省略

      8.导入镜像

        省略

      9.上传镜像

        省略

      10.其他应用

        省略

  • 相关阅读:
    Leetcode 811. Subdomain Visit Count
    Leetcode 70. Climbing Stairs
    Leetcode 509. Fibonacci Number
    Leetcode 771. Jewels and Stones
    Leetcode 217. Contains Duplicate
    MYSQL安装第三步报错
    .net 开发WEB程序
    JDK版本问题
    打开ECLIPSE 报failed to load the jni shared library
    ANSI_NULLS SQL语句
  • 原文地址:https://www.cnblogs.com/oumi/p/14123220.html
Copyright © 2020-2023  润新知