【Docker】docker 安裝 oracle_11g_r2 並實現數據持久化

1.採用 docker-compose 安裝

1.創建相關文件

mkdir /usr/local/docker
cd /usr/local/docker
mkdir oracle
cd oracle
touch docker-compose.yml 

2.docker-compose.yml 配置文件的內容如下

version: '3.1'
services:
  master:
    image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
    container_name: oracle
    privileged: true
    ports:
      - 1521:1521

3.啓動容器,並進入容器

docker-compose up -d
docker exec -it oracle bash

4.配置環境,並創建一個用戶,實現外部連接

cd /home/oracle                                           # 進入到 oracle 用戶目錄
source .bash_profile                                      # 加載 oracle 環境變量
$PATH                                                     # 查看 oracle 環境變量是否生效
sqlplus / as sysdba                                       # 連接 oracle 數據庫
alter user system identified by oracle;                   # 修改 DBA 賬號的密碼
alter user sys identified by oracle;                      # 修改 DBA 賬號的密碼
alter profile default limit password_life_time unlimited; # 設置密碼爲永不過期
create user test identified by oracle;                    # 創建一個 test 用戶,密碼 oracle
select * from dba_users t where t.username = 'TEST';      # 查詢用戶是否創建成功
grant connect, resource, dba to test;                     # 給用戶授予連接和數據權限

5.相關配置(可省略)

grant select on V_$session to test;
grant select on V_$sesstat to test;
grant select on V_$statname to test;
show parameter deferred_segment_creation;          -- 查看是否啓用 true 爲啓動
alter system set deferred_segment_creation=false;  -- 修改爲不啓用
show parameter deferred_segment_creation;          -- 查看是否修改成功 false 未啓用

6,使用 plsql 連接

  • 賬號:test
  • 密碼:oracle
  • 連接:ip:1521/helowin

2.數據持久化

1.可以發現,helowin 的實例安裝在:/home/oracle/app/oracle/oradata/helowin 目錄下

2.拷貝數據到本地,並修改擁有者

docker cp oracle:/home/oracle/app/oracle/oradata/helowin /usr/local/docker/oracle/helowin
cd /usr/local/docker/oracle
chown -R 500.500 ./helowin  # 500 500 是容器內 oracle 組合用戶的 id

3.關閉容器:docker-compose down

4.重新啓動容器,並在 docker-composr.yml 添加數據卷配置

version: '3.1'
services:
  master:
    image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
    container_name: oracle
    privileged: true
    ports:
      - 1521:1521
    volumes:
      - ./helowin:/home/oracle/app/oracle/oradata/helowin

5.查看啓動日誌:docker logs -f oracle,我們發現了一個錯誤,這是由於 oracle 爲了數據安全,添加的版本驗證

6.進入容器內,解決錯誤

docker exec -it oracle bash
cd /home/oracle              # 進入到 oracle 用戶目錄
source .bash_profile         # 加載 oracle 環境變量(每次進入容器都要加載配置文件)

# 刪除新生成的版本控制文件,將數據卷中的版本控制文件複製爲新生成的版本控制文件
rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl

sqlplus / as sysdba          # 以 dba 身份連接 oracle 數據庫
shutdown immediate           # 關閉數據庫實例(這裏會報錯,不用管)
startup                      # 啓動實例

7.再次使用 plsql 連接,發現之前創建 test 用戶可以連接,數據持久化順利完成

PS,鏡像的 root 用戶賬號密碼:root/helowin

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章