この記事は 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管理者パスワード)
- ④接続文字列 ※②を使って後で確認します
準備 (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
サンプルスキーマのインストール (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
参考
Autonomous Data Warehouse(ADW)環境の場合
ADW環境ではあらかじめSHスキーマとSSBスキーマが存在し、参照できる。上のSHとこのSHが同じがどうかは未確認。
Autonomous Data Warehouseでサンプル・データ・セットを使用
独自の表を作成せずにサービスの使用を開始したいユーザーの場合、Autonomous Data Warehouseは読み取り専用のSales HistoryおよびStar Schema Benchmarkデータ・セットを提供します。
これらのデータセットは、それぞれOracle DatabaseスキーマSHおよびSSBとして提供されます。 どのユーザーも、手動構成なしでこれらのデータ・セットを問合せできます。