docker 部署 Oracle 11G

1. 拉取鏡像

  • 首先執行如下命令將鏡像下載到本地(這個其實就是一個已經安裝好 Oracle 數據庫的鏡像,我們運行後稍作配置就可以直接使用了):
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
  • 由於鏡像比較大,執行如下命令刪除所有 dangling 數據卷(即無用的 Volume),避免空間不足:
docker volume rm $(docker volume ls -qf dangling=true)

2. 啓動容器

  • 執行如下命令實例化 Oracle 服務:
docker run --name oracle11g --restart=always --privileged=true \
-p 1521:1521 \
-v /home/oracle/conf/profile:/etc/profile \
-d registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
  • 執行 docker ps 命令確認容器啓動成功。
    在這裏插入圖片描述

3. 進行配置

  • 首先執行如下命令進入 oracle 的命令環境中:
docker exec -it oracle11g bash
  • 接着執行如下命令切換到 oracle 數據庫的 root 用戶下(密碼爲:helowin)
su root
  • 編輯 profile 文件:
vi /etc/profile
  • 在末尾處添加如下 ORACLE 環境變量參數後保存退出:
    注意:作者原先製作這個鏡像時,設置的數據庫 SID 爲 helowin,所以這裏的 SID 不做修改(修改了也沒用,因爲要改變 SID 的話修改多處地方)。
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
  • 接着執行如下命令創建軟連接:
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
  • 然後執行如下命令切換到 oracle 用戶:
    注意:一定要寫中間的那一橫條(-)必須要,否則軟連接無效。
su - oracle
  • 接着依次執行如下命令登錄 sqlplus:
sqlplus /nolog
conn /as sysdba

在這裏插入圖片描述

如果是做了數據持久化則需要完成以下步驟
先完成掛載目錄的授權 chmod 777 -R /home/oracle
在此步驟中完成 oracle 數據庫的重啓使權限生效

SQL>
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size             402655344 bytes
Database Buffers         1191182336 bytes
Redo Buffers                7360512 bytes
Database mounted.
Database opened.
SQL>
  • 執行如下命令將 system 和 sys 兩個賬戶的密碼設爲 abc:
alter user system identified by abc;
alter user sys identified by abc;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
  • 我們還可以執行如下命令解鎖 scott 用戶,同時將其密碼設置爲 abc:
    SCOTT 是 ORACLE 內部的一個示例用戶,下面有 emp、dept 等實例表,這些表和表間的關係演示了關係型數據庫的一些基本原理。
alter user scott account unlock;
alter user scott identified by abc;
commit;
  • 配置完畢後,連續執行多個 exit 即可退出容器,返回到宿主機。

4. 連接測試

我們使用客戶端工具連接下這個 Oracle 數據庫(其中 SID 爲 helowin),可以發現連接成功:
在這裏插入圖片描述

5. 數據持久化

- 創建持久化掛載目錄
mkdir -p /home/oracle/{oradata,flash_recovery_area,conf}
mkdir -p /home/oracle/conf/security
cd /home/oracle/conf/
vi profile	//什麼都不用改直接保存退出
cd /home/oracle/conf/security
vi limits.conf	//什麼都不用改直接保存退出

- 將需要持久化的目錄或文件,拷貝出來以供掛載
docker cp oracle11g:/home/oracle/app/oracle/oradata/helowin /home/oracle/oradata
docker cp oracle11g:/home/oracle/app/oracle/flash_recovery_area/helowin/ /home/oracle/flash_recovery_area
docker cp oracle11g:/etc/security/limits.conf /home/oracle/conf/security/limits.conf

- 停止並刪除原有 oracle 容器
docker stop oracle11g && docker rm oracle11g

- 重新 run 一個新的 oracle 容器並將第二步拷貝出來的目錄及文件掛載到容器卷
docker run --name oracle11g --restart=always --privileged=true \
-p 1521:1521 \
-v /home/oracle/oradata/:/home/oracle/app/oracle/oradata/ \
-v /home/oracle/flash_recovery_area/helowin/:/home/oracle/app/oracle/flash_recovery_area/helowin/ \
-v /home/oracle/conf/profile:/etc/profile \
-v /home/oracle/conf/security/limits.conf:/etc/security/limits.conf \
-d registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

- 容器啓動成功後, 給掛載目錄授權
chmod 777 -R /home/oracle

- 重新執行 [3, 4] 兩部
如果出現 Permission denied 問題, 進入容器後
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章