一、安裝Docker
這里我們使用
Docker Toolbox
來安裝Docker
。Docker Toolbox 下載地址-
安裝就不需要我多說了,安裝之后多出3個應用程序。
- 第一個是
docker
命令行界面。 - 第二個是
docker gui
操作界面。 - 第三個是 虛擬機。
- 第一個是
-
這里我們啟動
Docker Quickstart Terminal
該程序會為我們做以下事項。打開命令控制臺。
創建
VirtualBox ISO
虛擬機和證書ssh key
。啟動
VirtualBox
并運行docker
進程。-
創建
default
的碼頭。 注意:如果你沒有出現上圖藍色框中的內容并且紅色框中什么都沒有,那么說明初始化失敗了,這時關掉這個命令控制臺,在重新啟動一下
Docker Quickstart Terminal
就好了。
-
啟動完畢之后,你就可以運行docker命令了。下面運行
hello-world
來校驗是否安裝成功。docker run hello-world
- 出現圖上的情況說明
Docker
已經成功安裝。
- 出現圖上的情況說明
-
而如果你出現圖下這種情況的話,說明你是在
Mac
終端運行的該命令,解決方法有兩種。- 啟動
Docker Quickstart Terminal
在該命令窗口執行上述命令。 - 獲取
default
虛擬機的環境變量,在連接到default
虛擬機之后執行第四步就沒問題了。
docker-machine env default
eval $(docker-machine env default)
- 啟動
二、配置Oracle加速器
安裝
Oracle
之前,我們可以給docker配置一個加速器。PS:配不配置都無所謂,不過配置后等會你下載Oracle速度應該會快一點。-
這里我使用的是阿里云提供的加速器。加速器地址
- 點擊加速器,就可以看到你的專屬加速器地址了。
我們可以通過修改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
-
執行該命令下載
Oracle
鏡像。docker pull alexeiled/docker-oracle-xe-11g
-
啟動
Oracle
鏡像,并命名Oracle
。docker run -h "oracle" --name "oracle" -d -p 49160:22 -p 49161:1521 -p 49162:8080 alexeiled/docker-oracle-xe-11g
-
查看
Oracle
是否成功安裝。docker ps
- 49160:是連接ssh對應的端口。
- 49161:是連接sqlplus對應的端口。
- 49162:是連接oem對應的端口。
-
成功安裝后我們試試連接
Oracle
。docker exec -it CID /bin/bash
- 這里的CID是你自己的
CONTAINER ID
,不知道自己的CID的請查看第三步。
* 仔細看,在執行紅色框中的命令后,藍色區域的變化。
- 這里的CID是你自己的
-
進入
Oracle
中的root
用戶后,在連接sqlplus
。Oracle有兩個用戶
sys
和system
默認密碼都是oracle
。-
這里我用
sys
賬戶登錄。- 首先進入
sqlplus
sqlplus
2. 執行上述命令后,會提示你輸入賬號和密碼,這里有個注意的地方!直接上圖講解。
>
3. 上圖第4點另外還有個注意的地方,就是第一次進入sqlplus時,會提示這個信息,大意就是密碼將在7天內過期。
ERROR: ORA-28002 : the password will expire within 7 days
* 出現上述情況的原因在于Oracle11g
在default profile
中設定了180 days
。PS:有人肯定會問這不是180天嗎跟7天有什么關系,在這里不作詳細解釋。
* 具體解決方案等會使用Intellij IDEA 連接后解決。PS:主要是好操作。 - 首先進入
三、使用 Intellij IDEA 連接 Oracle 數據庫
隨便創建一個項目。
-
然后連接Oracle數據庫。
-
配置。
* 這里注意Port
端口是49161。
*Host
通過docker-machine ip
命令獲取。
* 最后點擊Test Connection
出現上圖顯示則代表成功連接上Oracle。 -
現在來解決關于密碼7天過期的問題。
-
首先檢查該用戶的
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;
-
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;