zoukankan      html  css  js  c++  java
  • oracle11在docker环境下的运行

    目的

    Ø 在测试的环境下oracle数据库不存在或访问不方便时,可以将这个环境快速恢复出来

    Ø 开发时方便测试之用

    可以在任何包含docker服务的机器上运行,具体的docker的安装可以参考如下:

    rpm -ivh --nodeps --force *.rpm

    systemctl enable docker.service

    service docker restart

    我们提供了11g的2个版本

    Ø Express:这是内存消耗较少,速度快

    Ø 企业版:完整的企业版本

    根据情况选择使用

    场景

    在我们的centos7机器上或客户类似环境的机器上[只要安装了docker均可],直接运行这些服务

    前提条件

    修改/etc/selinux/config文件,设置为disable

    #     disabled - No SELinux policy is loaded.

    SELINUX=disable

    重启机器

    [这个很关键,多次的实验表明如果不设置这个,pull下来的容器启动后没有oracle实例,尝试了多次的教训]

    Oracle Express 11版本

    这个使用的是dockerfile文件进行安装出来的

    https://github.com/wnameless/docker-oracle-xe-11g 其中基于ubuntu16的版本有问题,获取的是ubuntu14的分支

    还原镜像

    Ø 还原系统Ubuntu

    首先还原出来一个ubuntu14的镜像

    #docker load < ubuntu_14.04.4.tar

    Ø 还原oracle express

    n 解压docker 文件: tar -xvzf docker-oracle-xe-11g.tar.gz -C /root/.

    n cd /root/docker-oracle-xe-11g ; docker build -t oracle_xe11g .

    如下就是恢复出来的系统

    [root@demo docker-oracle-xe-11g]# docker images

    REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE

    oracle_xe11g                                                    latest              3d2fb0c62e4d        38 minutes ago      2.251 GB

    docker.io/ubuntu                                       14.04.4             0ccb13bf1954        11 months ago       187.9 MB

    运行

    Ø 第一次运行

    docker run -d -P -p 1521:1521 --name xe oracle_xe11g

    运行后可以查看系统的情况

    [root@demo docker-oracle-xe-11g]# docker ps -a

    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                                                                    NAMES

    130510c450e8        oracle_xe11g                 "/bin/sh -c '/usr/sbi"   41 minutes ago      Up 2 seconds                 0.0.0.0:1521->1521/tcp, 0.0.0.0:32778->22/tcp, 0.0.0.0:32777->8080/tcp xe

    Ø 后续运行

    在该机器上运行时,可以使用以下的简化命令

    docker stop xe 停止容器

    docker start xe 启动容器

    Ø 进入容器的SHELL

    执行结果类似如下[必须有这些守护进程才可用]

    [root@demo docker-oracle-xe-11g]# docker exec -it xe bash

    root@130510c450e8:/# ps ax

      PID TTY      STAT   TIME COMMAND

        1 ?        Ss     0:00 /bin/sh -c /usr/sbin/startup.sh && /usr/sbin/sshd -D

       22 ?        Ssl    0:00 /u01/app/oracle/product/11.2.0/xe/bin/tnslsnr LISTENER -inherit

       36 ?        Ss     0:00 xe_pmon_XE

       38 ?        Ss     0:00 xe_psp0_XE

       40 ?        Ss     0:00 xe_vktm_XE

       44 ?        Ss     0:00 xe_gen0_XE

       46 ?        Ss     0:00 xe_diag_XE

       48 ?        Ss     0:00 xe_dbrm_XE

       50 ?        Ss     0:00 xe_dia0_XE

       52 ?        Ss     0:00 xe_mman_XE

       54 ?        Ss     0:00 xe_dbw0_XE

       56 ?        Ss     0:00 xe_lgwr_XE

       58 ?        Ss     0:00 xe_ckpt_XE

       60 ?        Ss     0:00 xe_smon_XE

       62 ?        Ss     0:00 xe_reco_XE

       64 ?        Ss     0:00 xe_mmon_XE

       66 ?        Ss     0:00 xe_mmnl_XE

       68 ?        Ss     0:00 xe_d000_XE

       70 ?        Ss     0:00 xe_s000_XE

       72 ?        Ss     0:00 xe_s001_XE

       74 ?        Ss     0:00 xe_s002_XE

       76 ?        Ss     0:00 xe_s003_XE

       84 ?        Ss     0:00 xe_vkrm_XE

       86 ?        Ss     0:00 xe_qmnc_XE

       88 ?        S      0:00 /usr/sbin/sshd -D

      102 ?        Ss     0:00 xe_cjq0_XE

      112 ?        Ss     0:00 xe_q000_XE

      114 ?        Ss     0:00 xe_q001_XE

      116 ?        Ss     0:00 xe_j000_XE

      118 ?        Ss     0:00 xe_j001_XE

      119 ?        Ss     0:00 bash

      132 ?        R+     0:00 ps ax

    root@130510c450e8:/#

    Ø 数据库账号

    n sys/oralce

    n system/oracle

    n SID: xe

    wpsC460.tmp

    Oracle 11g版本

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

    已经把这个存为了helowin_oracel11g.tar

    还原镜像

    #docker load < helowin_oracel11g.tar

    可以看到类似如下:

    [root@demo docker-oracle-xe-11g]# docker images

    REPOSITORY                                             TAG                 IMAGE ID            CREATED             SIZE

    registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g   latest              3fa112fd3642        17 months ago       6.849 GB

    运行

    Ø 第一次运行

    docker run -d -P --name 11g 3fa

    运行后可以查看系统的情况

    [root@demo docker-oracle-xe-11g]# docker ps -a

    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES

    53b4ba87ef34        3fa                 "/bin/sh -c '/home/or"   About an hour ago   Up 6 seconds        0.0.0.0:32776->1521/tcp                                                  11g

    Ø 后续运行

    在该机器上运行时,可以使用以下的简化命令

    docker stop 11g 停止容器

    docker start 11g 启动容器

    Ø 进入容器的SHELL

    执行结果类似如下[必须有这些守护进程才可用]

    [root@demo docker-oracle-xe-11g]# docker exec -it 11g bash

    [oracle@53b4ba87ef34 /]$ ps ax

      PID TTY      STAT   TIME COMMAND

        1 ?        Ss     0:00 /bin/sh -c /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart /home/oracle/app/oracle/product/11.2.0/dbhome_2 && tail -f /home/oracle/app

       18 ?        Ssl    0:00 /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/tnslsnr LISTENER -inherit

       57 ?        Ss     0:00 ora_pmon_helowin

       59 ?        Ss     0:00 ora_vktm_helowin

       63 ?        Ss     0:00 ora_gen0_helowin

       65 ?        Ss     0:00 ora_diag_helowin

       67 ?        Ss     0:00 ora_dbrm_helowin

       69 ?        Ss     0:00 ora_psp0_helowin

       71 ?        Ss     0:00 ora_dia0_helowin

       73 ?        Ss     0:00 ora_mman_helowin

       75 ?        Ss     0:00 ora_dbw0_helowin

       77 ?        Ss     0:00 ora_lgwr_helowin

       79 ?        Ss     0:00 ora_ckpt_helowin

       81 ?        Ss     0:00 ora_smon_helowin

       83 ?        Ss     0:00 ora_reco_helowin

       85 ?        Ss     0:00 ora_mmon_helowin

       87 ?        Ss     0:00 ora_mmnl_helowin

       89 ?        Ss     0:00 ora_d000_helowin

       91 ?        Ss     0:00 ora_s000_helowin

       99 ?        Ss     0:00 ora_p000_helowin

      101 ?        Ss     0:00 ora_p001_helowin

      105 ?        Ss     0:00 ora_qmnc_helowin

      122 ?        S      0:00 tail -f /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log

      136 ?        Ss     0:00 ora_cjq0_helowin

      148 ?        Ss     0:00 ora_q000_helowin

      150 ?        Ss     0:00 ora_q001_helowin

      152 ?        Ss     0:00 ora_j000_helowin

      154 ?        Ss     0:00 ora_j001_helowin

      155 ?        Ss     0:00 bash

      168 ?        R+     0:00 ps ax

    [oracle@53b4ba87ef34 /]$

    在此Shell下执行如下的语句

    export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2

    export ORACLE_SID=helowin

    export PATH=$PATH:$ORACLE_HOME/bin

    sqlplus / as sysdba

    alter user system identified by oracle;

    alter user sys identified by oracle;

    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

    LINUX账号: root helowin

    Ø 数据库账号

    n sys/oralce

    n system/oracle

    n SID: helowin

    wpsC471.tmp

     

  • 相关阅读:
    Oracle数据库的dual表的作用
    数据库中CASE函数和Oracle的DECODE函数的用法
    Oracle数据库中,通过function的方式建立自增字段
    Java学习(十三):抽象类和接口的区别,各自的优缺点
    Java学习(十八):二叉树的三种递归遍历
    Sublime工具插件安装
    sizeof和strlen
    I2C接口的EEPROM操作
    关于窗口看门狗
    关于指针传入函数
  • 原文地址:https://www.cnblogs.com/2018/p/7148749.html
Copyright © 2011-2022 走看看