Mac下使用IDEA连接Docker中的Oracle

一、安装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)

       ![](http://upload-images.jianshu.io/upload_images/5344304-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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容