Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

OracleDB

Oracle DBでサンプルスキーマを作成する手順について

投稿日:2022年5月6日 更新日:

<目次>

(1) Oracle DBでサンプルスキーマを作成する手順について
 (1-1) はじめに
 (1-2) (STEP1)ダウンロード
 (1-3) (STEP2)準備
 (1-4) (STEP3)サンプルDBスキーマのインストール

(1) Oracle DBでサンプルスキーマを作成する手順について

(1-1) はじめに

Oracle DBはインストーラを使用して導入を行う際に、「サンプルスキーマ」(サンプルデータを含んだスキーマ)を自動で作る選択肢が選べます。
 
→(参考)Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その4)
もし、インストールの段階ではサンプルスキーマ導入せずに進み、後になって「やっぱりサンプルデータを投入したい」となるケースもあるかも知れません。本記事ではそのようなケースにおけるサンプルデータの投入方法についてご紹介します。
 

(1-2) (STEP1)ダウンロード

サンプルスキーマの資源はGitHubから取得可能です。
 
・①下記のURLから、ご自身のDBのバージョンに沿った資源を取得します。
 
 

(1-3) (STEP2)準備

資源自体は任意の場所に配置可能ですが、オススメとしては「$ORACLE_HOME/demo/schema」に配置すると良いです。なので、「$ORACLE_HOME/demo/schema」に配置した上で解凍(unzip)します。
 
・①DBサーバに「$ORACLE_HOME/demo/schema」のディレクトリを作成しておきます。
(図121)こんなパスのディレクトリです。

<備考>
もし存在しない場合は、「mkdir」コマンドで作成します。
(例)
$ mkdir $ORACLE_HOME/demo/
$ mkdir $ORACLE_HOME/demo/schema
・②ダウンロードした資源を任意のディレクトリにアップロードします。
以下は、TeraTermのSSH SCP機能で「/tmp」に転送する例です。
(図122)
・③「unzip」で解凍します。
$ unzip /tmp/db-sample-schemas-12.1.0.2.zip
(図123)
・④解凍したファイルを「$ORACLE_HOME/demo/schema」に移します。
$ sudo mv /tmp/db-sample-schemas-12.1.0.2/* $ORACLE_HOME/demo/schema
(図124)
(図125)移動後はこんな感じになります。
・⑤ワーキングディレクトリの設定
今回使用する資源は、どこのディレクトリでも作業できるように、ディレクトリを「”__SUB__CWD__”」というタグで表しており、この値を、ご自身の任意のディレクトリで置き換えることで、どこからでも作業できるようになっております。
 
この値の置換は下記のPerlコマンドで実施します。
$ cd $ORACLE_HOME/demo/schema
$ perl -p -i.bak -e 's#__SUB__CWD__#'$(pwd)'#g' *.sql */*.sql */*.dat

(図126)

(1-4) (STEP3)サンプルDBスキーマのインストール

このインストールを行うと、次のスキーマがインストールされます。それぞれのスキーマが架空の会社の「部署」の単位になっており、意味は下記の通りになります。
 
HR:人事(Human Resources)
OE:受注≒注文入力(Order Entry)
PM:製品メディア(Product Media)
IX:情報共有(Information Exchange)
SH:営業(Sales History)
BI:経営≒意思決定(Business Intelligence)
 
(注意点)始める前に必ず確認を!
これから実行するスクリプトは、最初に上記名前のスキーマをDROP(削除)してから新しく作るため、もし既に同名のスキーマがある場合は実行しないでください
 
・①「SQL*Plus」のある階層に移動して、SYSDBA権限で起動
$ cd $ORACLE_HOME/bin
(図131①)

$ ./sqlplus sys as sysdba
(図131②)

・②HRスキーマのインストール
HRスキーマのインストールは「hr_main.sql」ファイルで行います。下記のコマンドで実行します。

(構文)

SQL> @?/demo/schema/human_resources/hr_main.sql [引数①] [引数②] [引数③] [引数④] [引数⑤] [引数⑥]
(表)各引数の意味

引数① HRスキーマのパスワード
引数② HRスキーマの表領域名
(例)users
引数③ HRスキーマの一時表領域名
(例)temp
引数④ SYSユーザーのパスワード
引数⑤ ログ出力先のディレクトリ
(例)
$ORACLE_HOME/demo/schema/log/
引数⑥ 接続文字列
(例)
tk2-262-40837.vs.sakura.ne.jp:1521:orcl

(※注意)スキーマによって引数の数が異なりますので、それぞれ「xx_main.sql」を確認して、引数を適切にセットします。

(例)
SQL> @?/demo/schema/human_resources/hr_main.sql XXXX users temp XXXX $ORACLE_HOME/demo/schema/log/ tk2-262-40837.vs.sakura.ne.jp:1521/pdb1
(参考)このコマンドの処理
・既存のHRスキーマがあれば削除
・新規にHRスキーマを作成し、必要な権限を付与
・HRとして接続
・HRスキーマのオブジェクト(表、ビュー等)を作成するためのスクリプトを実行
(図132)

(結果例)
SQL> @?/demo/schema/human_resources/hr_main.sql XXXX users temp XXXX $ORACLE_HOME/demo/schema/log/
specify password for HR as parameter 1:
specify default tablespeace for HR as parameter 2:
specify temporary tablespace for HR as parameter 3:
specify password for SYS as parameter 4:
specify log path as parameter 5:
User dropped.
User created.
User altered.
User altered.
Grant succeeded.
Grant succeeded.
Connected.
Grant succeeded.
Connected.
Session altered.
Session altered.
******  Creating REGIONS table ....
Table created.
Index created.
Table altered.
******  Creating COUNTRIES table ....
Table created.
Table altered.
******  Creating LOCATIONS table ....
Table created.
Index created.
Table altered.
Sequence created.
******  Creating DEPARTMENTS table ....
Table created.
Index created.
Table altered.
Sequence created.
******  Creating JOBS table ....
Table created.
Index created.
Table altered.
******  Creating EMPLOYEES table ....
Table created.
Index created.
Table altered.
Table altered.
Sequence created.
******  Creating JOB_HISTORY table ....
Table created.
Index created.
Table altered.
******  Creating EMP_DETAILS_VIEW view ...
View created.
Commit complete.
Session altered.
******  Populating REGIONS table ....
1 row created.
1 row created.
1 row created.
1 row created.
******  Populating COUNTIRES table ....
1 row created.
~中略~
1 row created.
******  Populating LOCATIONS table ....
1 row created.
~中略~
1 row created.
******  Populating DEPARTMENTS table ....
Table altered.
1 row created.
~中略~
1 row created.
******  Populating JOBS table ....
1 row created.
~中略~
1 row created.
******  Populating EMPLOYEES table ....
1 row created.
~中略~
1 row created.
******  Populating JOB_HISTORY table ....
1 row created.
~中略~
1 row created.
Table altered.
Commit complete.
Index created.
~中略~
Index created.
Commit complete.
Procedure created.
Trigger created.
Trigger altered.
Procedure created.
Trigger created.
Commit complete.
Comment created.
~中略~
Comment created.
Commit complete.
PL/SQL procedure successfully completed.
 
あとは、他のスキーマ(OE、PM、IX、SH、BI)についても同様に処理を繰り返します。
※但し、スキーマによって引数の数が異なりますので、それぞれ「xx_main.sql」を確認して、引数を適切にセットします。
 
順番は下記の通りです。
$ORACLE_HOME/demo/schema/human_resources/hr_main.sql(引数:6個)
↓
$ORACLE_HOME/demo/schema/order_entry/oe_main.sql(引数:9個)
↓
$ORACLE_HOME/demo/schema/product_media/pm_main.sql
↓
$ORACLE_HOME/demo/schema/info_exchange/ix_main.sql(引数:6個)
↓
$ORACLE_HOME/demo/schema/sales_history/sh_main.sql(引数:8個)
・OE用
@?/demo/schema/order_entry/oe_main.sql XXX users temp XXX XXX $ORACLE_HOME/demo/schema/order_entry/ $ORACLE_HOME/demo/schema/log/ 1.0
・PM用
@?/demo/schema/product_media/pm_main.sql XXX  users temp XXX XXX $ORACLE_HOME/demo/schema/product_media/ $ORACLE_HOME/demo/schema/log/ $ORACLE_HOME/demo/schema/
・IX用
@?/demo/schema/info_exchange/ix_main.sql XXXX users temp XXXX $ORACLE_HOME/demo/schema/log/ 1.0
・SH用
@?/demo/schema/sales_history/sh_main.sql XXXX users temp XXXX $ORACLE_HOME/demo/schema/sales_history/ $ORACLE_HOME/demo/schema/log/ 3
(備忘)11gのための応急処置

Adsense審査用広告コード


Adsense審査用広告コード


-OracleDB

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

データベースのインデックスの基本と種類とOracleやSQL Serverでの特長について

(0)目次&概説 (1) データベースのインデックスとは (2) インデックスはどのような場面で使う? (3) インデックスの主要な方式  (3-1) B木  (3-2) B+木  (3-3) ビット …

Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その3)

目次 (5)リスナーの作成(netca)  (5-0)リスナーについての概要  (5-1)netcaの起動(netca)  (5-2)リスナー設定  (5-3)リスナー名の設定  (5-4)リスナーの …

Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その4)

掲題の通り、LinuxにOracleDB(11g)をインストールする方法について書きます。 「(その3)」の続編記事です。 https://rainbow-engine.com/2017/05/05/ …

SQLでCASE文の結果をWHERE句に指定する方法およびコスト面の考察

本記事では、 ・SQLでCASE文の結果をWHERE句に指定する方法について記述します。 ・CASE文を使う場合のコストについて考察します。 (0)目次&概説 (1) NG例 (2) OK例&解説 ( …

OracleDB11gのキャラクタセットを変更する手順について(概要編)

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件   (1-2-1) 「props$」更新はNG   (1-2-2) 10g以降は”ALTER DATABA …

  • English (United States)
  • 日本語
Top