Edited at

Oracle Cloud Infrastructureのデータベースにサンプルスキーマをインストール

この記事は Oracle Cloud その2 Advent Calendar 2018 の 12/4 の記事として書かれています

Oracle Autonomous Data Warehouse Cloud Service環境(ADW)の場合は、この手順は当てはまらないので文末ご参照ください

新たにCOスキーマ(Customer Orders)が発表されていました。同じくgithubダウンロード可能ですが、本手順ではCOはインストールされません。詳しくはAnnouncing a New Sample Schema: Customer Ordersや、COのREADMEに記載があるようです。

Oracle Database 12cリリース2以降では、最新バージョンのサンプル・スキーマのスクリプトをGitHubから入手できます。

最新情報や、手順の詳細は下記をご参照ください。

サンプルスキーマは、各機能でのデモ用データとして使用している場合があり、必要に応じてインストールします。作成されるサンプルスキーマは以下です。


  • HR: Human Resources

  • OE: Order Entry

  • PM: Product Media

  • IX: Information Exchange

  • SH: Sales History

  • BI: Business Intelligence

以下の手順でサンプル・スキーマをインストールすると、スクリプト内でユーザー名HR、OE、PM、SH、IX、BIを最初にdrop userします。これらのユーザが既に存在する場合はご注意ください(これらのユーザのデータが失われます)


使用した環境


  • Oracle Cloud Infrastructure環境の、Database - Virtual Machines(PaaS)

  • Database Version: 18.2.0


必要な情報

※DBaaSインスタンス作成時に指定した以下の情報が必要です


  • DATABASE NAME(①ORACLE_SID)

  • PDB NAME(②PDB名)

  • DATABASE ADMIN PASSWORD(③DB管理者パスワード)

  • ④接続文字列 ※②を使って後で確認します

image.png


準備 (rootユーザで実施)

※gitをインストールしてgit cloneする代わりに、GitHubのサイトからZIPバンドルをダウンロードすることも可能。この場合はダウンロードした *.zip を oracleユーザの$HOME配下に配置し展開する。


gitのインストール

$ sudo su - 

# yum install -y git


gitが見つからないエラーがでる場合

下記コマンドでリポジトリを追加してから yum install

(使用中のOSに合わせたリポジトリURLを指定する。以下はOracle Linux 6.xの場合)

Setting up Install Process

No package git available.

Error: Nothing to do

# yum-config-manager --add-repo https://yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/


GPG公開鍵のインポートが行われておらずWarningがでる場合

下記コマンドでインポートしてからyum install

(使用中のOSに合わせて指定する。以下はOracle Linux 6.xの場合)

warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY

# wget http://yum.oracle.com/RPM-GPG-KEY-oracle-ol6

# gpg --quiet --with-fingerprint ./RPM-GPG-KEY-oracle-ol6 (Key fingerprintを確認)
# rpm --import ./RPM-GPG-KEY-oracle-ol6

参考:GPGキーのダウンロードとインポート


サンプルスキーマのインストール (oracleユーザで実施)


rootユーザからoracleユーザになる

# su - oracle


環境変数を設定

ORACLE_SIDを聞かれるので①を入力する

$ . oraenv

ORACLE_SID = [oracle] ? orcl ← ①を入力


gitリポジトリをclone (またはダウンロードした *.zipを展開)

$ cd $HOME

$ git clone https://github.com/oracle/db-sample-schemas.git

※gitをインストールしてgit cloneする代わりに、GitHubのサイトからZIPバンドルをダウンロードした場合は、ダウンロードした *.zip を $HOME配下に配置し展開する。


ファイル内のPATHを作業ディレクトリに合わせて変更

$ cd $HOME/db-sample-schemas

$ perl -p -i.bak -e 's#__SUB__CWD__#'$(pwd)'#g' *.sql */*.sql */*.dat


DBへの接続文字列を確認

Private IPアドレスと、PDBのサービス名を確認して接続文字列を準備する。

lsnrctlコマンドで確認するのが簡単。


  • 1521を含む行を探す

  • Service "..." has 1 instance(s) の行のうち、DB作成時に指定した ②PDB名 を含む行を探す

この場合、④接続文字列は 10.0.0.5:1521/pdb1.sub11120757390.mkworksvcn.oraclevcn.com となる。

(接続文字列を host:port/service_name で指定するのは、tnsの簡易接続ネーミング・メソッド。tnsnames.oraファイルに設定を書かなくても接続できる。)

$ lsnrctl status

LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 22-NOV-2018 10:19:36
...(中略)...
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.0.5)(PORT=1521))) ★★Private IPアドレス
...(中略)...
Service "orcl_iad1x5.sub11120757390.mkworksvcn.oraclevcn.com" has 1 instance(s).
Instance "orcl", status READY, has 2 handler(s) for this service...
Service "pdb1.sub11120757390.mkworksvcn.oraclevcn.com" has 1 instance(s). ★★サービス名
Instance "orcl", status READY, has 2 handler(s) for this service...
The command completed successfully
$


SQL実行(サンプルスキーマのインストール)

mksample.sql をこういう感じで実行する。

$ sqlplus system/systempw@<接続文字列> @mksample systempw syspw hrpw oepw pmpw ixpw shpw bipw users temp <ログディレクトリ名> <接続文字列>


実行例

$ sqlplus system/systempw@接続文字列 @mksample systempw syspw hrPW##1234 oePW##1234 pmPW##1234 ixPW##1234 shPW##1234 biPW##1234 users temp /tmp/sampleinstall/ 接続文字列


  • /tmp/sampleinstall/


    • ログファイルの出力先ディレクトリを指定(任意の場所)


    • 新規ディレクトリ推奨 (この例では /tmp はあるが その下に sampleinstall は存在しない。スクリプト内でmkdirする。)

    • PATHの最後の / は必須



  • 接続文字列


    • ④接続文字列 を指定


    • 例) 10.0.0.5:1521/pdb1.sub11120757390.mkworksvcn.oraclevcn.com



  • systempw syspw


    • 両方とも ③DB管理者パスワード を指定

    • 実行例の中で、合計3ヶ所 登場してます



  • hrpw oepw pmpw ixpw shpw bipw


    • HR, OE, PM, IX, SH, BIユーザのパスワードがそれぞれここで指定した値になる

    • 事前にパスワードポリシーを確認し(補足2)、ポリシーに合ったパスワードを指定

    • 簡単のため各スキーマのパスワードを記載していますが、適宜変更ください



  • users temp


    • 各サンプルスキーマのユーザ表領域、一時表領域の名前を指定する。このままでOK。




補足1:サンプルスキーマの削除

削除するには、drop_sch.sqlを実行する。

$ . oraenv

$ cd $HOME/db-sample-schemas
$ sqlplus system/systempw@connect_string
@drop_sch.sql

実行中に、SYSTEMのパスワード、接続文字列、この実行のログファイル名を聞かれるので指定する。


補足2:パスワードの複雑性ルールの確認方法

下の例では、DEFAULTプロファイルのユーザの、パスワードの複雑性ルールを検証するファンクションとして、ORA12C_STRONG_VERIFY_FUNCTION が指定されていることが分かります。

(少なくとも2つの大文字、2つの小文字、2つの数値、2つの特殊文字(_, #, -)を含む必要がある)

$ sqlplus /nolog

SQL> connect / as sysdba
SQL> ALTER SESSION SET CONTAINER=pdb1; <-- PDB1に接続
SQL> show con_name

CON_NAME
------------------------------
PDB1 <-- PDB1に繋がっていることを確認

SQL> select profile, resource_name, limit from dba_profiles where RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION'
2 and profile='DEFAULT';

PROFILE RESOURCE_NAME LIMIT
-------------- -------------------------------- ------------------------------
DEFAULT PASSWORD_VERIFY_FUNCTION ORA12C_STRONG_VERIFY_FUNCTION

参考

- 製品ドキュメント:Oracle Database - Security Guide - ORA12C_STRONG_VERIFY_FUNCTION


Autonomous Data Warehouse(ADW)環境の場合

ADW環境ではあらかじめSHスキーマとSSBスキーマが存在し、参照できる。上のSHとこのSHが同じがどうかは未確認。

Autonomous Data Warehouseでサンプル・データ・セットを使用


独自の表を作成せずにサービスの使用を開始したいユーザーの場合、Autonomous Data Warehouseは読み取り専用のSales HistoryおよびStar Schema Benchmarkデータ・セットを提供します。

これらのデータセットは、それぞれOracle DatabaseスキーマSHおよびSSBとして提供されます。 どのユーザーも、手動構成なしでこれらのデータ・セットを問合せできます。