開篇廢話
? ? 最近一個項目需要測試用的Oracle數(shù)據(jù)庫,但是使用公司資源得經(jīng)過各種協(xié)調(diào),自己電腦上的Oracle早就廢了,調(diào)試或者重新安裝又覺得費時間,總之一大堆理由讓我想到了Docker。
為了避免無用社交和節(jié)省時間,也為了以后隨時都有一個可用的Oracle數(shù)據(jù)庫給我玩,所以有了以下的過程。
安裝過程
1 找鏡像先去Docker Hub轉(zhuǎn)一下,看看有沒有官方的,帶有DOCKER CERTIFIED標志的是首選。你需要注冊一個Docker Hub賬號,登錄后搜索Oracle,果然找到了。居然還有Weblogic,有機會也要安裝下試試。

2 這是一個12C的鏡像,不過也足夠我用的了,點擊進去,繼續(xù)點擊“Proceed to Checkout”。雖然Proceed to Checkout翻譯為“進入結(jié)算”,不過不用擔心。跳轉(zhuǎn)到下面的頁面后,填寫一些個人信息,并且選中前兩個條款就好。

3 點擊“Get Content” 后,就會來到了安裝說明頁面。先使用頁面右側(cè)的docker命令拉取鏡像, 然后再慢慢看文檔吧。記得docker pull之前, 先登錄 docker login。
docker pull store/oracle/database-enterprise:12.2.0.1

4 鏡像拉取成功后,就可以啟動容器了,文檔中說明了鏡像的使用方法,我就不翻譯了,這里只說一些要點。
啟動命令:
docker run -d --name oracle -p 1521:1521 -e DB_SID=orcl -v /opt/oracle/data:/ORCL store/oracle/database-enterprise:12.2.0.1
正常啟動過程大約1分鐘,STATUS 含有 healthy 字樣。

不過,多數(shù)可能會報錯,用 docker logs 命令來查下日志, 會發(fā)現(xiàn):

這個錯誤的一些常規(guī)解決方法都不行,比如:
1) 設(shè)置宿主機映射文件目錄權(quán)限
2) chcon命令
3)?--privileged=true
以上都不好使, 后來去google了一下,在 Github 上找到了一個關(guān)于?Oracle 鏡像的?Issue,“Permission denied error for oracle/database:12.2.0.1-se2 container”。閱讀后發(fā)現(xiàn)了一個留言:

竟然是這樣子, 好, 執(zhí)行下試試吧。
chown -R 54321:54321 /opt/oracle/data
啟動成功了!
然后就可以愉快的使用了,根據(jù)文檔描述,默認用戶名 sys 密碼?Oradoc_db1。剛才docker run創(chuàng)建的 sid 是?orcl。有了這些就可以配置PL/SQL Developer了。

登錄,報錯!

這個錯誤很常見了,檢查配置吧。還是打開docker logs日志,會發(fā)現(xiàn)這樣的信息:

原來人家已經(jīng)告訴咱們怎么配置了,真是太貼心了。修改 SERVICE_NAME 為 orcl.localdomain, 終于PL/SQL Developer 也可以用了。
尾聲
Oracle鏡像還有個瘦身版的database-enterprise:12.2.0.1-slim,過程一致。
好了,Oracle搭建好了, 可以開始搬磚了。使用過程中的問題會繼續(xù)記錄跟蹤的。
追加
雖然 tnsnames.ora 文件中配置的是 SERVICE_NAME=orcl.localdomain,但是在寫數(shù)據(jù)源配置時不能寫成下面這種形式:
spring.datasource.url=jdbc:oracle:thin:@192.168.18.152:1521:orcl.localdomain
需要改寫成:
spring.datasource.url=jdbc:oracle:thin:@192.168.18.152:1521:orcl