Oracle 19cでのサンプルスキーマのインストール
OCIで19cのDBaaS環境を構築したところ、サンプルスキーマはデフォルトでは作成されず、
作成スクリプトも19cからは(その前から?)バンドルされているサンプルスキーマがHRユーザーのみとなり、
SHなどのその他のサンプルスキーマは、Githubからスクリプトを落として実行する形になっていた。
と言う様な状況だったので、今後同様に検証環境を作成した際に、
サンプルユーザーの導入で躓くのも面倒なので、こちらに手順をまとめてみた。
尚、一括で作成する場合は特にユーザー側で考慮する必要はないが、
サンプルスキーマは依存関係が存在するスキーマがあるため、
個々別で作成する場合は下記の順番で作成する必要があるので注意。
- HRスキーマの作成
- OEスキーマの作成
- SH、PM、BIスキーマの作成
0.使用環境
OCI環境上に作成したDBaaS環境(Virtual Machines)
Database Version:19c(19.0.0って書いてあったけど、正式には何だろうか?後で確認)
OS:OEL 7.5
1.サンプルスキーマのDL
今回はGit cloneではなく、Githubから直接DLしたものをサーバーにアップロードして一括作成をする。
DL元は、上述の通りこちらのGithub。
2.インストールの前作業
スクリプトのDL後、サーバーにアップロードして、以下で解凍。
$ tar -zxvf db-sample-schemas-19c.tar.gz
スクリプト内の__SUB__CWD__
という文字列を置換させる必要がある(PATHの置換?)ので、
解凍したディレクトリに移動後、以下を実行。
個別の情報を入力するとかはなく、一括で以下のコマンドで置換させればいい様なので、
置換してある状態で配布してくれればいいのに…
$ /u01/app/oracle/product/19.0.0.0/dbhome_1/perl/bin/perl -p -i.bak -e 's#__SUB__CWD__#'$(pwd)'#g' *.sql */*.sql */*.dat
スキーマはPDB01というPDBに作成したいので、tnsnames.oraに接続文字列を追加。
基本的にはCDB用の設定をコピーして、サービス名と接続文字列を変更でOK。
変更点のサービス名はlsnrctl status
コマンドで確認できるPDBのサービス名を記載。
pdb01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <ホスト名>>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <サービス名>)
)
)
3.サンプルスキーマの作成
tnsnamesへの設定の追加後、SQL*Plusに接続して、「mksample.sql」を実行。
実行するとSYS、SYSTEM、各スキーマのパスワードと表領域、一時表領域、
tnsmamesに追加した接続文字列を聞かれるので、入力して作成シーケンスを開始する。
以下の手順の場合、スクリプトの最初で各サンプルスキーマをDROPするので、
存在しない場合はエラーが返るので注意。
SQL> @<解凍DIR>/db-sample-schemas-19c/mksample.sql
specify password for SYSTEM as parameter 1:
Enter value for 1: <パスワード>
specify password for SYS as parameter 2:
Enter value for 2: <パスワード>
specify password for HR as parameter 3:
Enter value for 3: <パスワード>
specify password for OE as parameter 4:
Enter value for 4: <パスワード>
specify password for PM as parameter 5:
Enter value for 5: <パスワード>
specify password for IX as parameter 6:
Enter value for 6: <パスワード>
specify password for SH as parameter 7:
Enter value for 7: <パスワード>
specify password for BI as parameter 8:
Enter value for 8: <パスワード>
specify default tablespace as parameter 9:
Enter value for 9: <表領域名>
specify temporary tablespace as parameter 10:
Enter value for 10: <一時表領域名>
specify log file directory (including trailing delimiter) as parameter 11:
Enter value for 11: <作成ログ保管ディレクトリ>
specify connect string as parameter 12:
Enter value for 12: <接続文字列>
Sample Schemas are being created ...
・・・
作成シーケンスが進んでいくのでそのまま待っていると、
作成したサンプルスキーマのオブジェクトなどの情報を表示するので、
そういったログや、プロンプトが戻ってきた後に作成したスキーマにスイッチして
user_objectsやuser_tablesをselectして確認をするのが吉。
個別でインストールしていくのもいいけど、一括で作ったうえで不要なものをDROPした方が
早そうな気が個人的にはしている。