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