OTN の VirtualBoxイメージ で Oracle DB 18c環境 を 楽々構築【Oracle Database or GoldenGate Advent Calendar 2018 Day 5】

このエントリは Oracle Database or GoldenGate Advent Calendar 2018 の Day 5 の記事となります。

 > Oracle Database or GoldenGate Advent Calendar 2018
 > https://adventar.org/calendars/3525

当初の予定から変更！ OTNからダウンロードできる VirtualBoxイメージ(ovaファイル)で
Oracle Database 18c環境をサクっと構築してみるやで彡(ﾟ)(ﾟ)

# 1. VirtualBox をインストール

まずは VirtualBox をダウンロードしてインストール、
既に導入済みの人は不要ですやで彡(ﾟ)(ﾟ)

 > Oracle VM VirtualBox
 > https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp

インストールで詰まることは無いと思いますが、色々な記事も有ります。

 > VirtualBoxのインストール方法
 > https://eng-entrance.com/virtualbox-install
 > 　
 > VirtualBox を Windows にインストール
 > https://www.shookuro.com/entry/2018/01/28/162252

# 2. Database Virtual Box Appliance / Virtual Machine の ovaイメージをダウンロード

下記ページから ovaイメージ を ダウンロードします。
7.7GB位あるので、ダウンロードしたら少し待ちます彡(ﾟ)(ﾟ)

 > Oracle Technology Network
 > Database Virtual Box Appliance / Virtual Machine
 > https://www.oracle.com/technetwork/database/enterprise-edition/databaseappdev-vm-161299.html

スグに次の手順(インポート)してもエエんですが、ダウンロード失敗の可能性も加味して、
MD5のハッシュ値を確認してダウンロード元のと比較するのをオススメします。
下記はWindowsのコマンドプロンプトでのMD5ハッシュ値確認例彡(ﾟ)(ﾟ)

```shell
certutil -hashfile C:\Users\AYSHIBAT\Downloads\DeveloperDaysVM2018-10-16_09.ova MD5

MD5 ハッシュ (ファイル C:\Users\AYSHIBAT\Downloads\DeveloperDaysVM2018-10-16_09.ova):
bf 2b 8e cd 1c c2 1f 0b de c6 39 73 f7 2c ea 83
CertUtil: -hashfile コマンドは正常に完了しました。
```

# 3. ovaイメージのインポート

ダウンロードしたovaイメージをインポートします。基本ポチポチするだけ彡(ﾟ)(ﾟ)
![vbox001.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/e0f35665-9369-cfcc-0dd2-65d86854d9d0.jpeg "図1. インポート選択")

![vbox002.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/7a5ab23a-9edc-cbf2-564a-130571436683.jpeg "図2. ovaイメージ選択")

# 4. 仮想マシンの起動
インポートが成功したら、仮想マシンを起動します彡(ﾟ)(ﾟ)
![vbox003.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/15fa3819-cdee-c86c-59c1-f2c5d098952b.jpeg "図3. 仮想マシン起動")

![vbox004.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/94e2fc2b-4428-f33f-d8fa-f699a36e6f96.jpeg "図4. 起動後の仮想マシン画面")

# 5. 仮想マシンへのアクセス(ssh + sqlplus)
インポートされた仮想マシンにはNATのポートフォワードが下記のように設定されています。
![vbox006.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/08c761f6-f99a-289a-42f4-b7ff0873c957.jpeg "図5. 仮想マシンのポートフォワード設定")

sshのポートフォワードは 2222(HOST)→22(GUEST) に設定されているので、
「localhost:2222」でsshログインが可能です。
![vbox005.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/e76384c9-5842-f6a2-fc75-8848f338793c.jpeg "図6. 「localhost:2222」でsshログイン")

ユーザ名とパスワードは元ページに書かれている通り oracle 彡(ﾟ)(ﾟ)

 >  (Username and password is oracle.) 

sshログイン後、環境変数ORACLE_HOMEとPATHを設定します。
tnsnames.ora にはCDBへの接続文字列ORCLCDBと、
PDBへの接続文字列ORCLがセットされています。

後は sqlplus でログインするだけや！PDBに接続してみます。彡(ﾟ)(ﾟ)

```sql
export ORACLE_HOME=/u01/app/oracle/product/version/db_1/
export PATH=${PATH}:${ORACLE_HOME}/bin
cd $ORACLE_HOME/network/admin
cat tnsnames.ora
sqlplus /nolog
CONNECT PDBADMIN/oracle@ORCL
SELECT SYS_CONTEXT('USERENV', 'CON_NAME') AS CON_NAME FROM DUAL;
```

実行結果は下記の通り。DBにログイン成功や！彡(^)(^)

```sql

[oracle@localhost admin]$ export ORACLE_HOME=/u01/app/oracle/product/version/db_1/
[oracle@localhost admin]$ export PATH=${PATH}:${ORACLE_HOME}/bin
[oracle@localhost admin]$ cd $ORACLE_HOME/network/admin
[oracle@localhost admin]$ cat tnsnames.ora
ORCLCDB=localhost:1521/orclcdb
ORCL=
 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
[oracle@localhost admin]$ sqlplus /nolog
SQL*Plus: Release 18.0.0.0.0 - Production on Wed Dec 5 09:02:47 2018
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

SQL> CONNECT PDBADMIN/oracle@ORCL
Connected.
SQL> SELECT SYS_CONTEXT('USERENV', 'CON_NAME') AS CON_NAME FROM DUAL;

CON_NAME
--------------------------------------------------------------------------------
ORCL

SQL>
```

# 6. 仮想マシン上のDBへのアクセス(SQL Developer)
お次は SQL Developer で仮想マシンのDBにログインしてみます彡(ﾟ)(ﾟ)

仮想マシンのOracleリスナーのポートは 1521(HOST)→1521(GUEST) に
フォワードされているので、localhost:1521 でDB接続できます。
サービス名はPDBのサービス(orcl)で、PDB管理者(PDBADMIN)でログインしてみます。
![vbox007.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/d97c7eba-b770-4f43-80de-35e3be8fe921.jpeg "図7. SQL Developerの接続設定")

接続後、試しにコンテナ名(PDB名)をSELECTしてみます。
![vbox008.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/38044907-2340-f531-81bf-e3ad744b9d58.jpeg "図8. SQL DeveloperでSQLを実行")

成功(｀･ω･)Ъ

# 7. 仮想マシンのAPEX ADMIN環境にホストマシンのWebブラウザからアクセス(Oracle APEX)

(2019/2/12追記)Oracle APEX UG Meetup 2019 #1開催の勢いに任せて、追記するやで彡(ﾟ)(ﾟ)

仮想マシンの8080ポート(HOST)は8080ポート(GUEST)にフォワードされていて、
ホストマシンのブラウザから仮想マシンのAPEX ADMIN環境にアクセスできます。

 > URL…………http://localhost:8080/apex
 > Workspace…INTERNAL
 > Username …ADMIN
 > Password …oracle

接続画面キャプチャはこちら
![VM_APEX_01.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/bd973bea-15a0-6d74-33cc-15759570e41f.jpeg)

接続後のキャプチャはこちら
![VM_APEX_02.jpg](https://qiita-image-store.s3.amazonaws.com/0/110066/bf655be3-6a81-2046-c21f-c8d2c044cbf3.jpeg)

この接続情報元ネタは下記、publicなのは無いのかな…？

 > Installing and Configuring an Oracle Developer Day VirtualBox Image
 > https://mikesmithers.wordpress.com/2015/01/25/installing-and-configuring-an-oracle-developer-day-virtualbox-image/

このADMIN環境からワークスペースを作成すれば、
もりもりAPEXアプリを作れるやで。ワイの過去記事も見てね彡(^)(^)

 > Oracle APEX Meetup 第2回「2時間でできるAPEXハンズオン」(6/1・木) に行ってみたのでご報告
 > https://gonsuke777.hatenablog.com/entry/20170613/1497339652

# 8. まとめ
VirtualBoxでお手軽にOracle Database 18c環境を構築できたやで！どんどん活用してね。
彡(^)(^)