Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@mikika

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

More than 1 year has passed since last update.

この記事は 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として提供されます。 どのユーザーも、手動構成なしでこれらのデータ・セットを問合せできます。

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mikika
ここでの発言は私個人の見解であり、所属する会社&組織の見解を反映したものではありません。
oracle
Oracle Cloudは、最先端の機能をSoftware as a Service、Platform as a ServiceおよびInfrastructure as a ServiceおよびData as a Serviceとして提供します。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?