moto blog

Docker版Oracle Database 18cをMacで使ってみる

f:id:nmmmk:20190103141519j:plain Macでは、Oracleインストーラが存在しないため、DockerでOracleを構築します。

OracleのDockerイメージの作成

  1. GitHubからoracle/docker-imagesをクローンします。
    https://github.com/oracle/docker-images

  2. クローンが完了すると、docker-imagesというフォルダが作成されます。

  3. Oracle Databaseソフトウェアをダウンロードするために、以下にアクセスします。
    https://www.oracle.com/technetwork/jp/database/enterprise-edition/downloads/index.html

  4. Oracle Database 18c (18.3)のLinux x86-64をダウンロードします。
    f:id:nmmmk:20181228115120p:plain

  5. LINUX.X64_180000_db_home.zip」がダウンロードされるため、ダウンロード完了したら、ファイルを以下のパスに移動します。

./docker-images/OracleDatabase/SingleInstance/dockerfiles/18.3.0

  6 ./docker-images/OracleDatabase/SingleInstance/dockerfilesにある「buildDockerImage.sh」を実行します。

./buildDockerImage.sh -v 18.3.0 -e -i

  7. 実行完了後、docker imagesコマンドを実行し、以下のイメージが作成されていることを確認します。
f:id:nmmmk:20181228132031p:plain

  8. ./docker-images/OracleDatabase/SingleInstance/dockerfilesに「oracle.env」を作成します。
ここでは、日本語環境となるような環境変数を設定します。
また、SID=ORCL, PDB=MYORCL, PWD=oracleとしています。

TZ=Asia/Tokyo
ORACLE_SID=ORCL
ORACLE_PDB=MYORCL
ORACLE_PWD=oracle
ORACLE_CHARACTERSET=AL32UTF8
NLS_LANG=Japanese_Japan.AL32UTF8

  9. ./docker-images/OracleDatabase/SingleInstance/dockerfilesにカレントディレクトリを移動し、以下のコマンドを実行します。

docker run -d --env-file ./oracle.env -p 1521:1521 -p 5500:5500 -it --name my_oracle oracle/database:18.3.0-ee

  10. 以下のキーワードが表示されれば、実行完了です。

#########################
DATABASE IS READY TO USE!
#########################

ユーザー作成

  1. パスワードを変更する際は、以下のコマンドを実行します(任意)
docker exec <container name> ./setPassword.sh <your password>

  2. コンテナの中に入ります。

docker exec -it <container name> bash

  3. sqlplusでMYORCLにログインします。(sysユーザー)

sqlplus sys/oracle@//localhost:1521/MYORCL as sysdba

  4. ユーザーを作成します。

CREATE USER scott IDENTIFIED BY tiger DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
GRANT create session, create table TO scott;

  5. sqlplusから抜けます。

quit

テーブル作成とINSERT, SELECT確認

  1. 作成したユーザーでログインします。
sqlplus scott/tiger@//localhost:1521/MYORCL

  2. 任意のテーブルを作成します。

CREATE TABLE employee (
    id     NUMBER,
    name     VARCHAR2(45) NOT NULL, 
    primary key( id )
);

  3. INSERTできることを確認します。

INSERT INTO employee VALUES(1, 'user1');
INSERT INTO employee VALUES(2, 'ユーザー2');

  4. SELECTできることを確認します。

SELECT * from employee;

  5. 以下のように出力されればOKです。
f:id:nmmmk:20181228131743p:plain

その他

Oracle Enterprise Managerにアクセスしてみる

  1. https://localhost:5500/em/にブラウザからアクセスすると、画面が表示されるため、以下の設定でログインします。
項目
ユーザー名 sys
パスワード oracle
コンテナ名
SYSDBA権限 チェックを入れる

f:id:nmmmk:20181228132058p:plain   2. ログインに成功すると、以下のような画面が表示されます。
f:id:nmmmk:20181228132649p:plain  

DBeaverを使用して、DBに接続してみる

  1. jdbcドライバをダウンロードします。
    https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/jdbc-ucp-183-5013470.html f:id:nmmmk:20181228145435p:plain  
  2. DBeaverを起動し、以下の赤枠のアイコンを押して、新しい接続を作成します。
    f:id:nmmmk:20181228145024p:plain  
  3. oracleを検索して、選択します。
    f:id:nmmmk:20181228145047p:plain  
  4. ドライバ設定の編集を押下して、ダウンロードしたjdbcドライバを設定します。
    f:id:nmmmk:20181228151828p:plain  
  5. jdbcドライバのパスを選択して、OKを押下します。
    f:id:nmmmk:20181228151103p:plain  
  6. 接続設定を入力して、終了を押下します。
項目
Host localhost
Database MYORCL
User name scott
Password tiger

f:id:nmmmk:20181228151952p:plain   7. 接続に成功すると、テーブル参照できるようになります。
f:id:nmmmk:20181228152259p:plain