自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える

thumbnail

至急、Oracle DB SQL Silverの試験を受ける必要が出てきた。

そこで、すでにあるUbuntuのdockerで、OracleDBの環境を整えていく。

前提

dockerのバージョンは以下の通り、

Docker version 26.1.3, build 26.1.3-0ubuntu1~22.04.1
Copy

Oracle公式が提供しているdockerのイメージは下記。

https://hub.docker.com/r/gvenzl/oracle-xe

Oracle社のエンジニア、G. Venzl 氏から提供されている。

dockerのイメージをPullする

現時点での最新版は、21.3.0 なので、以下のコマンドでpull できる。

docker pull gvenzl/oracle-xe:21.3.0
Copy

ただし、Dockerグループに入っていない場合、Dockerデーモンを操作する権限がないため、先のコマンドの先頭に sudo が必要な場合がある。

もし、毎度毎度sudo をつけたくないのであれば、

sudo usermod -aG docker $(whoami)
Copy

このコマンドで現ユーザーをdockerグループに入れておく。

コンテナを作成する

docker run -d \
  --name oracle-xe \
  -p 1521:1521 \
  -p 5500:5500 \
  -e ORACLE_PASSWORD=oracle \
  gvenzl/oracle-xe:21.3.0
Copy

コンテナ名はoracle-xe 、ポート番号は1521 でホスト側からアクセスできるようになる。

パスワードはorale としたが、ここは自由に決めて問題はない。

使用するイメージは先程pullしてきた、gvenzl/oracle-xe:21.3.0

コンテナ内で使用されているデフォルトのユーザー名は、SYSとSYSTEM の2つ。

実行すると

71f46b34bfe46970a3b5c9f21fcdd166bc85427d1f5699ad4a8f56225e2ec4a2
Copy

このようにコンテナIDが帰ってくる。

【補足】dockerの起動中のコンテナ一覧・コンテナの停止と起動・所持しているコンテナの一覧の確認

起動中のコンテナの一覧

docker ps
Copy

コンテナの停止と起動

docker start コンテナ名(今回は--option で oracle-xeとした。)
Copy
docker stop コンテナ名
Copy

今回、 –restart always オプションは入れていないので、OSを再起動したら、手動で

docker start oracle-xe 
Copy

とする必要がある。

所持しているコンテナの一覧

docker ps -a
Copy

これで停止中のコンテナも含めて表示される。

コンテナ名を忘れてしまったときに使う。

SQLクライアントのインストール

OracleへのログインはSQLクライアントのインストールが必要。

DBeaver のインストール

GUIであればDBeaver を使う。

sudo apt install dbeaver 
Copy

もしパッケージが見つからない場合は、

https://dbeaver.io/download/ ここから.debファイルをDLしてインストールする。(おそらく、sudo apt install dbeaver-ceとコミュニティエディションのほうが良さげ?)

Ctrl+N で新規作成。DBeaverからデータベース接続をクリック。

Oracleを指定。

Database にXEを指定。 パスワードにoracle を指定して、終了。

サンプルのデータ(スキーマ)をインストールする

https://github.com/oracle-samples/db-sample-schemas

このGitHubのリポジトリをDLして、中身展開。 human_resorces に入って以下コマンドを実行。

docker cp hr_code.sql oracle-xe:/tmp/
docker cp hr_create.sql oracle-xe:/tmp/
docker cp hr_install.sql oracle-xe:/tmp/
docker cp hr_populate.sql oracle-xe:/tmp/
docker cp hr_uninstall.sql oracle-xe:/tmp/
Copy

dockerコンテナに直接入り、sqlplus コマンドを打つ。

docker exec -it oracle-xe bash
sqlplus sys/oracle@localhost:1521/XE as sysdba
Copy
@/tmp/hr_install.sql
Copy

パスワードを聞かれるので、hrと入力、ユーザー名はそのままEnterを押す。

上書きするか確認されるのでYesを押す。

Installation
-------------
Verification:

Table         provided     actual
----------- ---------- ----------
regions              5          5
countries           25         25
departments         27         27
locations           23         23
employees          107        107
jobs                19         19
job_history         10         10

Thank you!
--------------------------------------------------------
The installation of the sample schema is now finished.
Please check the installation verification output above.

You will now be disconnected from the database.

Thank you for using Oracle Database!

Disconnected from Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
Copy

こんなふうに表示されればOK

SELECT username FROM all_users WHERE username = 'HR';
Copy

このSQLでHRスキーマが入ったか確認する。入っていれば以下のように表示される。

SQL> SELECT username FROM all_users WHERE username = 'HR';

USERNAME
--------------------------------------------------------------------------------
HR

SQL> 
Copy

DBeaver からはこんなふうに確認できる。反映されない場合は再起動する。

スポンサーリンク