SQLの動作を試したい時などに、サンプルとなるユーザやデータを含む表が欲しい時があります。
Oracle Databaseではスクリプト(utlsampl.sql)が用意されていますので、
こちらのスクリプトを実行することで、サンプルユーザ(scott)とデータを含む表を作成してくれます。
スクリプト(utlsampl.sql)
スクリプト(utlsampl.sql)は、ORACLE_HOME配下のrdbms/adminディレクトリに存在します。
$ cd $ORACLE_HOME/rdbms/admin
$ ls -l utlsampl.sql
-rw-r--r-- 1 oracle oinstall 3978 8月 11 2021 utlsampl.sql
スクリプトの処理内容としては以下となります。
- scottユーザ(スキーマ)を削除(drop)
- scottユーザ作成(パスワードはtiger)
- scottユーザにDEPT表、EMP表、BONUS表、SALGRADE表を作成して、
各表にサンプルデータをINTERT - 最後にCOMMITを実行してEXITする
スクリプト編集
デフォルトでは接続先が正しくないため、スクリプトの一部を修正します。
まずは変更前のスクリプトをバックアップしておきます。
$ cd $ORACLE_HOME/rdbms/admin
$ cp utlsampl.sql utlsampl.sql.orig
$ ls -l utlsampl.sql*
-rw-r--r-- 1 oracle oinstall 3978 8月 11 2021 utlsampl.sql
-rw-r--r-- 1 oracle oinstall 3978 12月 20 10:37 utlsampl.sql.orig
45行目のCONNECT部分の記載を変更します。
マルチテナント構成の場合は、CDBにローカルユーザを作成することができませんので、
PDBに接続させる必要があります。
PDBへの接続については、こちらをご参照ください。
スクリプト実行
SQL*Plusから、サンプルユーザを作成したいPDBに、SYSユーザで接続されていることを確認します。
$ sqlplus sys/<パスワード>@<接続識別子> as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on 金 12月 20 10:22:35 2024
Version 19.14.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0
に接続されました。
SQL> show con_name
CON_NAME
------------------------------
PDB1
SQL> show user
ユーザーは"SYS"です。
スクリプト(utlsampl.sql)を実行します。
正常に実行された場合はSQL*Plusが終了します。
SQL> @?/rdbms/admin/utlsampl
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0との接続が切断されました。
$
実行結果確認
再度SQL*PlusからscottユーザでPDBに接続します。
$ sqlplus scott/tiger@<接続識別子>
SQL*Plus: Release 19.0.0.0.0 - Production on 金 12月 20 10:22:35 2024
Version 19.14.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.0.0
に接続されました。
SQL> show con_name
CON_NAME
------------------------------
PDB1
SQL> show user
ユーザーは"SCOTT"です。
SQL>
作成された表を確認します。
SQL> col tname format a20
SQL> col tabtype format a20
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
-------------------- -------------------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
12行が選択されました。
まとめ
サンプルユーザ(scott)の作り方を解説しました。
ちょっとした動作確認のためのデータが必要な場合に使えるスクリプトになっています。
絵で見てわかるOracleの仕組み 新装版
Oracleの基礎を学びたいならまずはこの本から。
バックグラウンドプロセスからREDOの使われ方などについても詳細に解説されています。
Amazon.co.jp
プログラミングスクールをまとめました。ぜひ参考にしてみてください。
コメント