Oracle学習環境メモ

# はじめに
システム開発につきもののデータベース（以下、DB）ですが、試したいことがあっても環境がなく、なかなか試せない。
ローカルにインストールして使おうにも、1回インストールすると上手くアンインストールできなくなる上に重く、それ以後端末の動きを阻害する。
など、試すことも、学習することもなかなかハードルの高いのDBです。
その中でも、開発で使用する機会も多く、インストールや設定もハードルの高いOracleを簡単に試用、学習できる環境をメモしておきます。
当記事の元ネタは親切な人がまとめて公開してくれていて、当記事はそれに自分用メモを加えたものです。
元ネタの記事は末尾にリンクを掲載します。

# Oracle Live SQL
Oracleの公式コンテンツで、SQLをコーディングして実行できます。
Oracleにアカウントを作るだけで無料で利用でき、SQLだけを試したり学習したりしたい場合は便利です。

# Oracleインストール済みVM
Oracleバーチャルボックスで使用可能な、Oracleをインストール、設定してあるVMの仮想アプライアンスです。
面倒なインストール作業が不要で、SQL以外の機能もすべて試せます。
仮に壊しても、VMなので、削除も簡単で、インポートしなおせばまっさらな環境でまた始められます。
OSがOracle Linuxなので、ついでにLinuxの学習環境としても利用できます。
すごく便利です。
Oracleの開発者さん、ありがとうございます。
当記事執筆時点で最新の23cまで用意されています。

## 使用方法
VMを使用する方法を紹介します。

### ダウンロード
[こちら](https://www.oracle.com/database/technologies/databaseappdev-vm.html)より仮想アプライアンスをダウンロードします。
リンクが効かない場合は「pre-built developer vms」や、「database app development vm」、「database app development vm」などのキーワードで検索してください。
「Database App Development VM」というリンクがあればそこからダウンロードできます。

### インポート
ダウンロードした仮想アプライアンスをVirtual Boxにインポートします。
使用するメモリの量、基本フォルダなどは適宜設定を好みに合わせてください。

### VMの設定
基本、起動すればそのまま使えるようになっています。
LinuxはgnomeのGUI環境で構築されているのでVirtual Boxの画面の上でも十分以上に使えます。
その他、SSHクライアントから操作するためのポート転送設定なども最初から入っていますので、それ以上に何か欲しければ追加で設定します。

### 起動
VMを起動し、ログインします。
Virtual Boxは起動すれば自動でoracleユーザーでOSにログインします。
使用するパスワードは、oracleユーザーほか、DBもrootユーザーもすべて「oracle」です。
OSを起動すれば勝手にOracleも起動するように連動するので、Oracle個別での起動は不要です。

### CLIで使用
前述のとおり、VMはGUIで起動するので、そのまま使えますが、使う端末の性能によってはレスポンスがかなり微妙になるので、SSHクライアントを使用してOracleを使ってみます。
デフォルトのネットワーク設定はこうなっていますので、SSHの2222ポートに接続します。
SSH接続した後は、SQL*Plusを使ってみます。
SIDは設定されていませんので、必要に応じて設定します。
DBはプラがブルデータベースで構築されいるので、複雑なことをやろうとすると、その理解が必要になります。

■起動後直後のデスクトップ
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/3e3eb370-d3ae-455f-3d7b-1fe98bd9503d.jpeg)

■ネットワーク設定
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/76f11f0e-cc55-6836-aa0e-d4d70a244441.jpeg)

■SSHクライアントの接続
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/0706b803-1fc7-479b-806c-80c452681dd5.jpeg)
※ID/PW：oracle/oracle
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/4afa2a1b-af7f-a9f8-ca2d-1a3a8b91c357.jpeg)
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/59a72e48-6707-708d-14a1-51d7f93f2f4c.jpeg)
![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/f9b19429-1832-2486-eb51-8f5347321fc0.jpeg)
![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/1c6b62be-7e4b-5c10-5710-709760c1ac88.jpeg)
このままでも使えなくはないのですが、ユーザーを作らないと管理ユーザーのまま使用することになります。
ユーザーを作ったりは後述しますが、まずはSQLクライアントを設定しましょう。
また、管理ユーザーとしてはPDBADMINというユーザーもあります。
パスワードはもちろんoracleです。
詳しい使用方法は当記事のほかに、参考リンクも載せておきますので、そちらもあわせてご覧ください。

ちなみに、VMはインターネットも使えるようになっていますので、デスクトップ上でもWEBを見ながら作業できます。
![15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/101417c6-dbcb-dde3-70bb-8132b38d17a6.jpeg)

### SQLクライアントの使用
DB自体はCLIでも扱えますが、やはり不便ですので、SQLクライアントを設定して使用します。
この例ではosqleditという製品を使用します。
ネットワーク設定は、サーバー（VM）の設定（tnsnames.ora）を見ながら、ローカル用に変更して設定しましょう。

■サーバーのtnsnames.ora（$ORACLE_HOME/network/admin）
![8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/36c5e329-c390-b81c-24e2-2ee5ea0fa1f8.jpeg)

■ローカルにコピーして編集
![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/00338f24-1ac9-8856-4f73-5181a40a7be4.jpeg)

■起動　※SYSDBAで起動する
![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/1a9eb838-5d60-d341-1e40-b58adb66f37a.jpeg)
![11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/41debb73-ae77-4faa-1ee5-970c71058670.jpeg)
起動できました。
また、SQLも処理できました。

### ユーザーを作る
通常DBを使用するためのユーザーを作ります。

```SQL:ユーザーを作る
-- ユーザーを作る
CREATE USER ORACLE_USER;

-- 権限を付与
GRANT CREATE SESSION TO ORACLE_USER;
```
![12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/dcc38d62-fe42-3cdb-2e4a-be8795dabfc0.jpeg)
![13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/d4a6ae08-01e4-17d6-44d5-35011c7f9062.jpeg)
![14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189344/32dcab40-986d-1bf6-6234-85d8dd7b3570.jpeg)
ユーザーも作って、使用できる状態が整いました。
以降はこの要領で使っていきましょう。

# 最後に
簡単ですが、当記事は以上です。
学習環境は他にもありますので、いろいろ探してご自身に合ったものを使用してください。

# 参考
当記事の執筆にあたって参考にさせていただいた文献です。

https://qiita.com/ora_gonsuke777/items/1db72dd3650cde39afb7

https://qiita.com/ora_gonsuke777/items/564471e460b2b58d8aa2

https://qiita.com/ora_gonsuke777/items/b41f37637e59319796b4