Mac下使用IDEA连接Docker中的Oracle

作者: z奕溟 | 来源:发表于2017-04-21 17:14 被阅读803次

    一、安装Docker

    1. 这里我们使用Docker Toolbox来安装DockerDocker Toolbox 下载地址

    2. 安装就不需要我多说了,安装之后多出3个应用程序。

      • 第一个是docker命令行界面。
      • 第二个是docker gui操作界面。
      • 第三个是 虚拟机。
    3. 这里我们启动Docker Quickstart Terminal该程序会为我们做以下事项。

      1. 打开命令控制台。

      2. 创建VirtualBox ISO虚拟机和证书ssh key

      3. 启动VirtualBox并运行docker进程。

      4. 创建default的码头。

      5. 注意:如果你没有出现上图蓝色框中的内容并且红色框中什么都没有,那么说明初始化失败了,这时关掉这个命令控制台,在重新启动一下Docker Quickstart Terminal就好了。

    4. 启动完毕之后,你就可以运行docker命令了。下面运行hello-world来校验是否安装成功。

      docker run hello-world

      • 出现图上的情况说明Docker已经成功安装。
    5. 而如果你出现图下这种情况的话,说明你是在Mac终端运行的该命令,解决方法有两种。

      1. 启动Docker Quickstart Terminal在该命令窗口执行上述命令。
      2. 获取default虚拟机的环境变量,在连接到default虚拟机之后执行第四步就没问题了。

      docker-machine env default
      eval $(docker-machine env default)

         ![](https://img.haomeiwen.com/i5344304/344a4b7869e15eb0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
      

    二、配置Oracle加速器

    1. 安装Oracle之前,我们可以给docker配置一个加速器。PS:配不配置都无所谓,不过配置后等会你下载Oracle速度应该会快一点。

    2. 这里我使用的是阿里云提供的加速器。加速器地址

      • 点击加速器,就可以看到你的专属加速器地址了。
    3. 我们可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。PS:link是你的专属加速地址。

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["link"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    ```


    三、安装Oracle

    1. 执行该命令下载Oracle镜像。

      docker pull alexeiled/docker-oracle-xe-11g

    2. 启动Oracle镜像,并命名Oracle

      docker run -h "oracle" --name "oracle" -d -p 49160:22 -p 49161:1521 -p 49162:8080 alexeiled/docker-oracle-xe-11g

    3. 查看Oracle是否成功安装。

      docker ps


      • 49160:是连接ssh对应的端口。
      • 49161:是连接sqlplus对应的端口。
      • 49162:是连接oem对应的端口。
    4. 成功安装后我们试试连接Oracle

      docker exec -it CID /bin/bash

      • 这里的CID是你自己的CONTAINER ID,不知道自己的CID的请查看第三步。

        * 仔细看,在执行红色框中的命令后,蓝色区域的变化。

    5. 进入Oracle中的root用户后,在连接sqlplus

      • Oracle有两个用户syssystem默认密码都是oracle

      • 这里我用sys账户登录。

        1. 首先进入sqlplus

        sqlplus
        2. 执行上述命令后,会提示你输入账号和密码,这里有个注意的地方!直接上图讲解。
        >


        3. 上图第4点另外还有个注意的地方,就是第一次进入sqlplus时,会提示这个信息,大意就是密码将在7天内过期。
        ERROR: ORA-28002 : the password will expire within 7 days
        * 出现上述情况的原因在于Oracle11gdefault profile中设定了180 days。PS:有人肯定会问这不是180天吗跟7天有什么关系,在这里不作详细解释。
        * 具体解决方案等会使用Intellij IDEA 连接后解决。PS:主要是好操作。

    三、使用 Intellij IDEA 连接 Oracle 数据库

    1. 随便创建一个项目。

    2. 然后连接Oracle数据库。

    3. 配置。


      * 这里注意Port端口是49161。
      * Host通过docker-machine ip命令获取。
      * 最后点击Test Connection 出现上图显示则代表成功连接上Oracle。
    4. 现在来解决关于密码7天过期的问题。

      1. 首先检查该用戶的profile是哪個,一般都是DEFAULT

        SQL SELECT username,PROFILE FROM dba_users;


        2. 查看该DEFAULT的密码有效期配置。

      SQL SELECT * FROM dba_profiles d WHERE d.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';



      3. 將密码有效期由180天改成无期限。

       > SQL ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;    
      
    Paste_Image.png
    4. 到这里就已经搞定,但是这只是代表了后面用别的用户登录不会出现`ORA-28002`错误,但之前我们用`sys`用户登录该用户密码依然会在7天后过期,所以只需要我们在修改一次密码行了。
    
        > alter user sys identified by 密码
    5. 眼尖的人在第一步发现我解锁了`HR`用户和`SCOTT`用户,既然都给你们看了,就顺便说下怎么解锁和创建吧!
        1. 解锁`HR`用户
            * 首先查看用户名和用户状态
            
                >SQL SELECT username,account_status FROM dba_users ORDER BY username;       
    

    * 然后解锁HR用户
             > SQL ALTER USER hr ACCOUNT UNLOCK ;
        2. 创建`SCOTT`用户
            * 首先创建用户
            
                > SQL CREATE USER  scott IDENTIFIED  BY tiger;
            * 然后授权
                
                >SQL GRANT CONNECT ,RESOURCE ,DBA TO scott;
    

    相关文章

      网友评论

        本文标题:Mac下使用IDEA连接Docker中的Oracle

        本文链接:https://www.haomeiwen.com/subject/ylndzttx.html