Oracle21c XE(WSL2+Docker)のインストール手順
はじめに
プロジェクトでOracleを使っている方も多いと思いますので、WSL2+Dockerを利用したOracle21c XEのインストール手順をまとめてみました。また、Oracle Developer Tools for VSCodeの利用方法についても紹介します。これにより、Remote SSH上でも、GUIでSQLが操作できるようになるので、便利になります。
以前は、19cでのインストール手順を記載していましたが、ローカル環境のメモリ使用量が多いため、デフォルトを21cに切り替えました。
Oracle21c XEのインストール
Oracleから公式でDockerイメージが提供されていますので、記載されている手順に従い、インストールを行います。19cをインストールする場合は、ここからLinux x86-64版をダウンロードし、docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0に事前コピーする必要がある。
- 以下のコマンドでdockerイメージを作成する。
$
mkdir oracle
cd oracle
git clone https://github.com/oracle/docker-images.git
cd docker-images/OracleDatabase/SingleInstance/dockerfiles/
./buildContainerImage.sh -x -v 21.3.0
→ 19cの場合は、-e -v 21.3.0
- docker-compose.ymlを作成し、コンテナを起動する。このとき、コンテナを削除しても、データが残るように/home/oracle/oradataを作成している。
version: '3'
services:
database:
image: oracle/database:21.3.0-xe
volumes:
- /home/oracle/oradata:/opt/oracle/oradata
ports:
- 1521:1521
- 5500:5500
version: '3'
services:
database:
image: oracle/database:19.3.0-ee
volumes:
- /home/oracle/oradata:/opt/oracle/oradata
environment:
NLS_LANG: "Japanese_Japan.UTF8"
ports:
- 1521:1521
- 5500:5500
$
sudo mkdir -p /home/oracle/oradata
sudo chmod 777 /home/oracle/oradata
docker-compose up -d
docker-compose logs -f
- 作成したコンテナに接続し、sysユーザのパスワード変更する。
$ ./setPassword.sh <パスワード>
Oracle Developer Tools for VSCode
VSCodeには、Oracle Developer ToolsというOracle用のDBツールが存在します。使用する際には.NET Core Runtime 3.1が必要になるので、ここの内容に従い、インストールを行ってください。
$ lsb_release -a
→ Ubuntuのバージョンをチェック。今回は20.04の手順で実施。
$
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-3.1
→ 公式サイトは6.0なので、3.1に変更している。
スキーマおよびテーブル作成
Oracle Developer Tools for VSCodeをインストールすると、サイドバーに表示されているOracle Explorerが追加されます。そこから、以下の手順に従って、スキーマおよびテーブル作成を行っていきます。
- サイドバーにあるOracle Explorerで、DATABASEで+を選択し、DB接続を行う。
・Connection Type : Basic
・Database host name : localhost
・Service name : XEPDB1
・Role : SYSDBA
・User name : SYS
・Password : <SYSのパスワード> ※保存する場合は、Save passwordをチェック - 作成した接続先に対して、右クリックにて「Open New SQL File」を選択し、trainingユーザを作成する。Ctrl-Eで選択したSQLのみ、Ctrl-Rで全SQLが実行できる。
-- スキーマを作成する。
create user training identified by training default tablespace users temporary tablespace temp;
grant create session, resource, unlimited tablespace to training;
-- パスワードを無期限にする。
alter profile default limit password_life_time unlimited;
- 作成したスキーマに対して、DB接続する。
・Connection Type : Basic
・Database host name : localhost
・Service name : XEPDB1
・Role : Default
・User name : TRAINING
・Password : TRAINING - 作成したスキーマに対して、テーブル操作を行ってみる。
create table sample (id int);
insert into sample values (1);
select * from sample;
drop table sample;
- 他にも、公式サイトには色々な機能が紹介されているので、使ってみてください。
・SQLがハイライト表示され、自動補完できる。
・SQL実行時にエラーが発生した場合、エラー箇所が赤波線で表示される。
・実行結果は、CSVやJSON形式でファイル保存できる。
・ファイル保存時のデリミタ(デフォルトはカンマ)や、文字列の修飾子(デフォルトはなし)が設定で変更できる。
・自動コミット(デフォルトON)は、設定またはコマンドで変更できる。
おわりに
今回は、ローカル環境で構築したOracleに対してDB操作を行っていますが、クラウド上で構築したOracleに対してもRemote SSHを経由して、同様な操作が可能です。sqlplusより使いやすく、1521ポートも利用しないので、重宝するかと思います。
以前、WSL2上のOracle(localhost:1521)がSQL接続ツールで繋がらなかったのですが、最近は利用できるようなったので、不要な記事を削除しました。余談ですが、私のおすすめツールはSQL Workbench/Jです。
Discussion