{%hackmd @Airethz/Theme_GrayAndBlue_01 %} > 實作版本:Oracle Database 21c (21.3) ## 前言 * Docker安裝可參考:[Windows 11專業版:Docker安裝及WSL設定](/PASpwFp2QJOI0tZh2v0UCQ) * [Docker Compose的描述檔](/0FetTaT4Q8mmuS9G4R2-pQ) ## 參考文件 * [使用 Windows Docker Desktop 建立 Oracle 環境](https://hackmd.io/@CloudyWing/SJsMfcGMo) * [使用 Docker 建立 Oracle 12c & 新增使用者建立範例資料庫](https://ithelp.ithome.com.tw/articles/10229655) * [GitHub - Oracle image說明](https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance) * 影片:[Docker Oracle21c Database \||Oracle Database installation on docker container \|| Docker Image \||](https://www.youtube.com/watch?v=knES4E7At_k) ## (一) 建立Docker的Oracle容器 ### 1. 下載 [Oracle Image(GitHub)](https://github.com/oracle/docker-images/tree/main) ![](https://hackmd.io/_uploads/HkciHBWK2.png) ### 2. 另存OracleDatabase資料夾內容 > [color=#D2B4DE]主要是為了裡面的dockerfiles資料夾,有各式的Oracle版本可供使用。 路徑:\OracleDatabase\SingleInstance\dockerfiles ![](https://hackmd.io/_uploads/BJUsLrbK2.png) #### dockerfiles 資料夾 ![](https://hackmd.io/_uploads/BkblDBZK2.png) ### 3. 下載二進制檔案(binaries) :::danger 下載對應「版本」的檔案。 不需下載檔案的版本(跳過,直接進行第5點):請參考 [此文件](https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance#building-oracle-database-container-images)。 ::: * 連結:[Oracle Database 21c](https://www.oracle.com/database/technologies/oracle21c-linux-downloads.html) * 下載 Oracle Database 21c (21.3) for Linux x86-64的「LINUX.X64_213000_db_home.zip」 ![](https://hackmd.io/_uploads/rkbxdS-F2.png) ### 4. zip檔案搬移 :::danger 放到相對應的版本,此以21c為例故放在21.3.0資料夾。 ::: ![](https://hackmd.io/_uploads/S1L2dHZK2.png) ### 5. 透過命令提示字元建置image cd 到第4步的資料夾路徑 ``` cd xxx\OracleDatabase\SingleInstance\dockerfiles\21.3.0 ``` 建置docker image ``` docker build -t oracle/database:21.3.0-ee --build-arg DB_EDITION=EE ./ ``` :star: DB_EDITION=EE:設置版本類型的變數,內容ex. EE/XE/SE2。 <span>(參考:[Oracle Database container images](https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance) 進行設置)</span> ![](https://hackmd.io/_uploads/SJfKIPWFn.png) ### 6. Docker Images結果 ![](https://hackmd.io/_uploads/r1eKpr-Fh.png) ### 7. 建立docker-compose.yml ```yaml= version: '2' services: db: image: oracle/database:21.3.0-ee # image_name:tag container_name: mydb_Con # Container name hostname: mydb domainname: mydocker.com environment: ORACLE_SID: MYCDB ORACLE_PDB: MYPDB ORACLE_PWD: test ORACLE_CHARACTERSET: AL32UTF8 ports: - 1521:1521 - 5500:5500 tty: true ``` ##### Oracle相關參數可參考:[How to Install Oracle Database 21c on Docker](https://docs.oracle.com/en/database/oracle/oracle-database/21/deeck/index.html#GUID-E9978222-E0CF-4899-B767-3D6626918E78) ![](https://hackmd.io/_uploads/HyIOrhGt2.png) ### 8. 透過命令提示字元執行docker-compose cd至docker-compose存放的資料夾路徑: ```yaml= cd xxx\MyDB ``` 執行docker-compose: ```yaml= docker-compose up -d ``` ![](https://hackmd.io/_uploads/ryJnELWF3.png) ### 9. Docker Containers結果 ![](https://hackmd.io/_uploads/H1tc0YGYn.png) ## (二) Oracle SQL Developer ### 1. 下載 [Oracle SQL Developer](https://www.oracle.com/database/sqldeveloper/) [Oracle官方相關說明文件](https://docs.oracle.com/en/database/oracle/sql-developer/19.2/rptug/sql-developer-concepts-usage.html#GUID-464C045C-FBDF-417A-A20B-037D294B3BDA) ![](https://hackmd.io/_uploads/r1-THfWK2.png) ![](https://hackmd.io/_uploads/ByZlLfWYn.png) > 下載檔案需登入oracle ### 2. 解壓縮下載檔並執行sqldeveloper ![](https://hackmd.io/_uploads/Byy2PGbt2.png) ## (三) 連線至Docker的Oracle容器 ### 1. 開啟Oracle SQL Developer ![](https://hackmd.io/_uploads/HJcVyDbFh.png) ### 2. 新增連線 ![](https://hackmd.io/_uploads/SJNXbwZFn.png =x150) ![](https://hackmd.io/_uploads/Hk4d-PbF2.png) * 使用者名稱預設為sys,對應角色為SYSDBA * 密碼為 docker-compose.yml 中的「ORACLE_PWD」 * SID為 docker-compose.yml 中的「ORACLE_SID」 ### 3. 連線成功 ![](https://hackmd.io/_uploads/S16XrD-K3.png)