Oracle Database 19c ダウンロード
Oracle Database 19c for Microsoft Windows x64 (64-bit)
をWindowsダウンロードフォルダにダウンロードしておきます。ダウンロードするにはログインが必要になります。
ダウンロード完了したら、LINUX.X64_193000_db_home.zip
ファイルを存在していることを確認します。
リポジトリのクローン
Ubuntu-22.04
で起動してOracleのdocker-imagesリポジトリをクローンします。
PS > wsl --install --distribution Ubuntu-22.04
$ cd $HOME
$ git clone https://github.com/oracle/docker-images.git
Cloning into 'docker-images'...
remote: Enumerating objects: 17409, done.
remote: Counting objects: 100% (1986/1986), done.
remote: Compressing objects: 100% (288/288), done.
remote: Total 17409 (delta 1777), reused 1747 (delta 1686), pack-reused 15423
Receiving objects: 100% (17409/17409), 15.04 MiB | 12.50 MiB/s, done.
Resolving deltas: 100% (10300/10300), done.
ダウンロードしたファイルの配置
$ username=$(powershell.exe -Command 'echo $env:UserName' | tr -d '\r\n')
$ cp /mnt/c/Users/${username}/Downloads/LINUX.X64_193000_db_home.zip ~/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
Dockerインストール
別の記事を参照してDockerをインストールします。
ビルド
$ cd ~/docker-images/OracleDatabase/SingleInstance/dockerfiles
$ ./buildContainerImage.sh -v 19.3.0 -e -i
-v : バージョン指定
-e : Enterprise Edition
-i : MD5チェックサム無視
docker-compose.yaml 作成
$ cd $HOME
$ mkdir -p oracledb_19.3.0 && cd oracledb_19.3.0
$ cat << EOF >> docker-compose.yml
version: "3.9"
services:
db:
image: oracle/database:19.3.0-ee
container_name: oracledb
ports:
- 1521:1521
- 5500:5500
volumes:
- ./oradata:/opt/oracle/oradata
- ./startup:/opt/oracle/scripts/startup
environment:
- ORACLE_SID=ORCLCDB
- ORACLE_PDB=ORCLPDB1
- ORACLE_PWD=password1
restart: always
EOF
$ mkdir -p oradata startup
$ chmod 777 oradata startup
コンテナ作成
$ docker compose -f ~/oracledb_19.3.0/docker-compose.yml up -d
$ docker compose -f ~/oracledb_19.3.0/docker-compose.yml logs -f
XDB initialized
が見えたら、Ctrl+Cで抜けます。
Oracle 接続確認
$ docker exec -it oracledb sqlplus SYSTEM/password1@ORCLCDB
SQL> exit
$ docker exec -it oracledb sqlplus SYSTEM/password1@ORCLPDB1
SQL> exit
(オプション)パスワード無期限化
$ docker exec -it oracledb /bin/bash
bash-4.2$ sqlplus / as sysdba
SQL> alter session set container=CDB$ROOT;
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SQL> alter session set container=ORCLPDB1;
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SQL> exit
bash-4.2$ exit
HRスキーマ追加
$ docker exec -it oracledb /bin/bash
bash-4.2$ cd /opt/oracle/product/19c/dbhome_1/demo/schema/human_resources
bash-4.2$ sqlplus / as sysdba
SQL> alter session set container=ORCLPDB1;
SQL> @hr_main.sql hr users temp /tmp
SQL> GRANT ALL PRIVILEGES TO hr;
SQL> GRANT SELECT ANY DICTIONARY to hr;
SQL> exit
bash-4.2$ exit
システム識別子(SID)による接続設定
$ docker exec -it oracledb /bin/bash
bash-4.2$ cd $ORACLE_HOME/network/admin
bash-4.2$ echo "USE_SID_AS_SERVICE_LISTENER=on" >> listener.ora
bash-4.2$ lsnrctl stop listener
bash-4.2$ lsnrctl start listener
bash-4.2$ exit
$ docker compose -f $HOME/oracledb_19.3.0/docker-compose.yml restart
SQL Developer で接続確認
SQL Developer
最新バージョン(23.1)をダウンロードして実行して接続確認します。
ORCLCDB
- ユーザー名 : SYSTEM
- パスワード : password1
- ホスト名 : localhost
- ポート : 1521
- SID : ORCLCDB
ORCLPDB1
- ユーザー名 : SYSTEM
- パスワード : password1
- ホスト名 : localhost
- ポート : 1521
- SID : ORCLPDB1