Oracle DB Developer VMにサンプルスキーマをセットアップする

なぜサンプルスキーマをセットアップするのか

Oracle関連のドキュメントにはサンプルスキーマを例にしたものが多数あるため、用意しておいた方が手軽に試行できるため何かと都合が良い。Oracleの学習を進める上でも、自由に使え、かつ、それなりに複雑なDB*1として便利。実際に複数テーブルを設計して実装して、というのは、もちろん勉強する上では将来的には必要だが、まず最初にすることとしては敷居が高く、手間がかかる。

サンプルスキーマを入れるには?

Oracle DBのインストール時に、オプションで選べるようだ。しかし、Oracleのインストールは、それ自体それなりに手間がかかることなので、すでにOracleがセットアップされている仮想マシンイメージ「Developer VM」を使う場合も多いだろう*2。というわけで、すでにあるOracle環境にサンプルスキーマを後からインストールすることを考える。

既存の手順

ネットでOracleインストール後にサンプルスキーマをインストールする方法を調べたところ、「Oracle Database Examplesをインストールすることでサンプルスキーマインストールスクリプトが所定の場所に配置される」という記述が見つかったが、実際試したところ、そうならなかった。いろいろ調べたところ、OracleGitHubでインストールスクリプトが配布されていることがわかった。もしかしたら配布方法が変わって、Examplesには同梱されなくなったのかもしれない。

実際の手順

以下はoracleユーザで行う。
作成するスキーマのパスワードは全てoracleとする。

cd ~
wget https://github.com/oracle/db-sample-schemas/archive/master.zip
unzip master.zip
cd db-sample-schemas-master/
perl -p -i.bak -e 's#__SUB__CWD__#'$(pwd)'#g' *.sql */*.sql */*.dat
mkdir log
sqlplus system/oracle@localhost:1521/orcl
@mksample oracle oracle oracle oracle oracle oracle oracle oracle users temp /home/oracle/db-sample-schemas-master/log/ localhost:1521/orcl

なお、上記コマンドラインは、試行錯誤して導き出した最短で完了する手順であるが、完全にこの通りに実際に実行したわけではないのでどこかに漏れや誤りがあるかも知れない。一行ずつ、そのコマンドの意味を把握して実行していくことをオススメする。

2017/8/20 追記
やっぱり間違っていた。最後のコマンドの引数でスクリプトの実行ログを保存するディレクトリを指定するが、そのパスが間違っていた(修正済み)。まあ、ログが保存されないだけで、処理自体は成功しているようだが。

*1:本番環境は論外としても、たとえ検証環境であったとしても学習目的で自由に弄れる訳ではないことが多いだろう。かといって自分でそれなりの構成のDBを用意するのも大変。というかそのスキルがないから学習するわけで・・・

*2:もちろん、Oracleのインストールは出来るようになっておくべきだが、Oracleの学習について言えば、導入方法より導入済みのOracleの操作方法の方が優先度が高いと思う。まずは自由に使えるOracleを用意してそれを弄ってスキルを上げ、その後のステップアップとして、導入やチューニングが出来るようになる、という道筋が妥当かと思われる。