• CENTOS 7 使用Docker安装oracle 11g


    1.docker第一次安装失败,下一次会提示同名的容器已经存在,解决办法:

    docker container ls -a

    根据上面执行的接口,选择一个containerid,然后带入到下面的命令

    docker container rm -f containerid

    2.安装的时候报文件找不到

    我是在WINDOWS上通过CHROME浏览器下载并在WINDOWS上解压的(经验告诉我解压第一个PART会自动解压第二个,但是并没有),只解压了第一个oracle安装文件(linux.x64_11gR2_database_1of2.zip),第二个(linux.x64_11gR2_database_2of2.zip)没有解压。。。所以报错。

    3.修改sys/system用户密码

    使用sqlplus / as sysdba登陆进去之后执行如下命令:

    alter user sys identified by abc123;
    alter user system identified by abc123;

    4.创建新用户

    使用sqlplus / as sysdba登陆进去之后执行如下命令或者使用IDE工具以SYS/SYSTEM登录之后执行:

    create user acct identified by abc123;
    grant resource,connect to acct;
    grant select any table to acct;
    grant debug any procedure,debug connect session to acct;

    5.查看ORACLE SID或者SERVICENAME

    一般来说SID和SERVICENAME是一致的

    使用sqlplus / as sysdba登陆进去之后执行如下命令:

    select instance_name from  V$instance;

    6.重启服务器之后重启docker(要求root权限)

    执行命令:

    docker start 043afeb3a74d

    检查oracle是否启动成功

    netstat -anp|grep 1521

    7.设置开机启动

    7.1首先docker自己得先开机启动

    systemctl enable docker.service

    7.2将oracle容器设置为开机启动

    要求容器没有运行

    docker run --restart=always 043afeb3a74d

    要求containerid=043afeb3a74d的容器是运行着的(我自己测试这种方式)

    docker update --restart=always 043afeb3a74d

    测试:先reboot机器

    然后执行netstat -anp|grep 1521

    使用Docker安装oracle 11g

    简介

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。

    借助docker,安装oracle不再困难,只需要几步即可。

    一,安装Docker(就不截图了)

    如果没有root用户或者你的用户没有加入sudoers列表,你是没法玩的

    yum update

    yum install -y yum-utils device-mapper-persistent-data lvm2

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    yum list docker-ce --showduplicates | sort -r

    yum install docker-ce-18.06.3.ce-3.el7

    二,安装

    2.1、安装oracle 11g镜像到docker

    2.1.1、搜索符合条件的镜像

    docker search oracle
    
    NAME                                  DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    oraclelinux                           Official Docker builds of Oracle Linux.         573                 [OK]
    jaspeen/oracle-11g                    Docker image for Oracle 11g database            99                                      [OK]
    oracle/openjdk                        Docker images containing OpenJDK Oracle Linux   55                                      [OK]
    ……
    

    2.1.2、选择安装 jaspeen/oracle-11g,等待下载安装完成

    docker pull jaspeen/oracle-11g
    

    2.1.3、查看下载好的镜像

    docker images
    
    REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
    jaspeen/oracle-11g         latest              0c8711fe4f0f        3 years ago         281MB
    

    注意,这个镜像没有直接安装好oracle,他帮我们配置好了环境,提供了安装脚本,我们只需要按照要求把oracle的安装目录配置好,启动镜像,即可

    2.2、准备oracle 11g安装文件

    2.2.1、下载oracle 11g安装文件

    oracle 官网 下载所需要的安装包,这里我们以oracle 11g 为例子,分别下载 linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip两个压缩包,下载完成后解压到home目录(如下目录结构)

    
      home
        └─database
            ├─doc
            ├─install
            ├─response
            ├─rpm
            ├─sshsetup
            ├─stage
            ├─runInstaller
            └─welcome.html
    

    2.3、安装oracle

    2.3.1、注意事项

    为什么要解压成上面的目录结构,我们先来看看jaspeen/oracle-11g镜像提供的安装脚本

    #!/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目录,如果不存在会给出提示Installation files not found. Unzip installation files into mounted(/install) folder

    2.3.2、启动镜像(执行安装oracle)

    命令的解释:

    • docker run 启动容器的命令
    • privileged 给这个容器特权,安装oracle可能需要操作需要root权限的文件或目录
    • name 给这个容器名一个名字
    • p 映射端口
    • v 挂在文件到容器指定目录 (/home 对应容器 /install/database)
    • jaspeen/oracle-11g 代表启动指定的容器
    docker run --privileged --name oracle11g -p 1521:1521 -v /home:/install jaspeen/oracle-11g
    
    Database is not installed. Installing...
    Installing Oracle Database 11g
    Starting Oracle Universal Installer...
    
    Checking Temp space: must be greater than 120 MB.   Actual 47303 MB    Passed
    Checking swap space: must be greater than 150 MB.   Actual 1023 MB    Passed
    Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-04-17_08-14-23AM. Please wait ...
    You can find the log of this install session at:
     /opt/oracle/oraInventory/logs/installActions2019-04-17_08-14-23AM.log
     ……
    

    这个安装过程会很漫长,日志也很多,这里只提供部分。注意到日志里有 100% complete 打印,代表oracle安装成功

    2.3.3、安装完成

    再次查看运行状态,oracle已经启动完成

    docker ps -a
    
    CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                      PORTS                                                                             NAMES
    7f53f07c93e5        jaspeen/oracle-11g   "/assets/entrypoint.…"   About an hour ago   Up About an hour            0.0.0.0:1521->1521/tcp, 8080/tcp                                                  oracle11g
    

    2.3.4、其他需要注意的,如果日志长时间没有更新,检查docker是否已经死掉

    查看docker的状态

    docker ps -a
    
    Error response from daemon: An invalid argument was supplied.
    

    如果出现如上提示,表示docker已经死掉,我们只需要重新执行安装步骤,让oracle安装完成

    ps:根据我的猜测,我给docker分配的资源不够导致的,我重新把docker的内存和cpu调高一点后oracle顺利安装完成。

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

    三,配置

    默认scott用户是被锁定的,我们需要解锁,通过数据库工具即可成功连接到oracle

    3.1,连接到容器,

    docker exec -it oracle11g /bin/bash
    

    3.2,切换到oracle用户,然后连接到sql控制台

    [root@7f53f07c93e5 /]# su - oracle
    Last login: Wed Apr 17 08:29:31 UTC 2019
    [oracle@7f53f07c93e5 ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 11.2.0.1.0 Production on Wed Apr 17 09:29:49 2019
    
    Copyright (c) 1982, 2009, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL>
    

    3.3,解锁账户

    SQL> alter user scott account unlock;
    User altered.
    SQL> commit;
    Commit complete.
    SQL> conn scott/tiger
    ERROR:
    ORA-28001: the password has expired
    Changing password for scott
    New password:
    Retype new password:
    Password changed
    Connected.
    SQL> 

    3.4,使用PL/SQL Devolper连接Oracle数据库

    编辑本机oracle客户端或者服务端tnsnames.ora文件,增加如下配置

    ACCT_LOCAL_DCOKER =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.11)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )

    打开PL/SQL Developer选择ACCT_LOCAL_DCOKER,输入账号、密码即可

    3.5使用DBeaver连接Oracle

     
  • 相关阅读:
    如何添加mysql到环境变量
    SQLyog客户端无法连接MySQL服务器
    linux下插入的mysql数据乱码问题及第三方工具显示乱码问题
    mysql-5.7.10产生的日志时间与系统时间不一致
    linux—文件目录简单介绍
    python编程中的if __name__ == 'main' 的作用和原理
    Windows下Python版本的切换
    python—第三库的安装方法
    阿里云ubuntu16.04安装beef
    xss利用-beef攻击-演示
  • 原文地址:https://www.cnblogs.com/lcword/p/16048342.html
Copyright © 2020-2023  润新知