在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.其他應用

    省略

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM