※ この記事にはアフィリエイトリンクが含まれます
Oracleを利用していると、システム管理や開発環境の準備の中で「新しいユーザーを作成する」作業は避けて通れません。ユーザーを作成することで、それぞれに権限を割り当てたり、スキーマを分けて管理したりと、セキュリティや運用効率を高めることができます。
しかし、初めてOracleを触る方にとっては「ユーザーとスキーマの違いは?」「権限の付与はどうすればいいの?」といった疑問が出てきやすい部分です。
本記事では、Oracleにおけるユーザー作成の基本から、実際のSQLコマンド例、そして権限設定のポイントまでをわかりやすく解説していきます。これからOracleを学習する方はもちろん、日々の業務でDB管理に携わる方にとっても役立つ内容ですので、ぜひ最後までご覧ください。
ユーザーとスキーマの関係
Oracleにおけるユーザーとスキーマは、密接に結びついた存在です。
- ユーザー:データベースにログインするためのアカウントを指します。
- スキーマ:ユーザーが所有するデータベースオブジェクト(テーブル、ビュー、シーケンスなど)の集合を指します。
つまり、Oracleでは「ユーザーを作成すると、そのユーザーに対応するスキーマが自動的に作成される」仕組みになっています。例えば、USER_A
というユーザーを作成すれば、そのユーザーが所有するスキーマも同名のUSER_A
となり、そこで管理されるオブジェクトがひとまとまりになります。
この関係を理解しておくと、複数のアプリケーションやチームで同じデータベースを利用する場合でも、スキーマごとにきちんとデータを分けて管理できるため、運用がスムーズになります。
ユーザー作成の前提条件(権限や環境準備)
Oracleで新しいユーザーを作成するためには、あらかじめ管理者権限を持つユーザーで接続している必要があります。一般的には以下のような権限や準備が求められます。
1. 管理者権限を持つユーザーでログインする
SYSDBA
またはSYSTEM
ユーザーで接続するのが一般的です。
sqlplus system/password@ORCL
2. CREATE USER権限
- 新しいユーザーを作成するには、
CREATE USER
権限が必要です。 - 通常は管理者ユーザーが持っています。
3. デフォルト表領域の確認
- ユーザーがデータを格納するために、あらかじめ表領域が準備されている必要があります。
- 特に業務システムでは、ユーザーごとに専用の表領域を割り当てることが推奨されます。
4. 一時表領域の確認
- ソート処理や一時的なデータ操作のために、一時表領域を利用できるように設定しておく必要があります。
ユーザー作成の基本構文
Oracleで新しいユーザーを作成するには、CREATE USER
文を利用します。基本的な構文は以下の通りです。
CREATE USER ユーザー名 IDENTIFIED BY パスワード
DEFAULT TABLESPACE 表領域名
TEMPORARY TABLESPACE 一時表領域名;
構文のポイント
- ユーザー名
作成するユーザーの名前を指定します。通常は大文字で管理されます。 - IDENTIFIED BY パスワード
ユーザーの認証に使うパスワードを指定します。 - DEFAULT TABLESPACE
ユーザーがデータを保存する際に使用するデフォルトの表領域を指定します。 - TEMPORARY TABLESPACE
ソートや一時的な処理に利用される一時表領域を指定します。
例:ユーザー「APP_USER」を作成する場合
CREATE USER APP_USER IDENTIFIED BY app_password
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
この例では、
- ユーザー名:
APP_USER
- パスワード:
app_password
- デフォルト表領域:
USERS
- 一時表領域:
TEMP
を設定しています。
権限付与(GRANT)の方法
ユーザーを作成しただけでは、そのユーザーはまだデータベースに接続したり、テーブルを作成したりすることができません。
実際に操作できるようにするためには、権限を付与(GRANT)する必要があります。
代表的な権限
- CREATE SESSION
データベースに接続するための基本権限。 - CREATE TABLE
テーブルを作成できる権限。 - CREATE VIEW / CREATE SEQUENCE / CREATE PROCEDURE
ビュー、シーケンス、ストアドプロシージャなどを作成するための権限。 - UNLIMITED TABLESPACE
割り当てられた表領域の制限を超えて使用できる権限。
基本的な権限付与の例
GRANT CREATE SESSION TO APP_USER;
このコマンドにより、APP_USER
ユーザーはデータベースに接続できるようになります。
複数の権限をまとめて付与する例
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO APP_USER;
実務でよく使う例
GRANT CONNECT, RESOURCE TO APP_USER;
CONNECT
ロールには、基本的な接続やオブジェクト作成に必要な権限が含まれています。RESOURCE
ロールには、テーブルやシーケンスなどの作成権限がまとまっています。
※ ただし最近のバージョンでは、CONNECT
や RESOURCE
に含まれる権限が見直されているため、必要に応じて個別に権限を付与する方法が推奨されています。
作成したユーザーの確認方法
ユーザーを作成し、権限を付与した後は、設定が正しく反映されているかを確認することが重要です。Oracleには豊富なディクショナリビューが用意されており、これを利用することでユーザーや権限の状態を確認できます。
ユーザー一覧の確認
SELECT username, account_status, default_tablespace, temporary_tablespace
FROM dba_users
WHERE username = 'APP_USER';
ACCOUNT_STATUS
がOPEN
になっていれば、ユーザーは有効です。DEFAULT_TABLESPACE
やTEMPORARY_TABLESPACE
が意図通りになっているかを確認できます。
権限の確認
ユーザーに付与されたシステム権限を確認するには以下を実行します。
SELECT * FROM dba_sys_privs WHERE grantee = 'APP_USER';
ロールが付与されているかを確認するには以下を実行します。
SELECT * FROM dba_role_privs WHERE grantee = 'APP_USER';
まとめ
今回は Oracleでユーザーを作成する方法 を解説しました。
流れを振り返ると、
- 管理者ユーザーで接続する(前提条件の確認)
CREATE USER
文を使ってユーザーを作成GRANT
文で必要な権限を付与
という手順で進めれば、新しいユーザーを安全に作成することができます。
Oracleの運用は、ユーザー管理を正しく行うことでセキュリティを確保し、システムの安定稼働にもつながります。基礎的な知識をしっかり身につけておくことが大切です。
学習に役立つおすすめ書籍
ユーザー作成の手法を理解したら、さらに一歩進んで実務で役立つ知識を身につけたいところです。ここでは、Oracleを効率的に学べるおすすめ書籍を紹介します。
図解入門よくわかる 最新Oracleデータベースの基本と仕組み
図解で解説されている箇所が多く、初心者が全体像を理解するのに最適です。
Oracleの現場を効率化する100の技
初心者からベテランまで、経験レベルを問わず活用できる一冊で、Oracle Databaseユーザー必携の実践書 といえます。
忙しい現場でも、効率的に学びながら実践できる点が魅力。
コメント