本記事では、oracle データベースで user(データベース利用者)を作成・管理する基本と実務手順を、非CDB構成の19cを前提に整理します。現場で迷いやすい「権限」「ロール」「プロファイル」「表領域とクオータ」まで、一気に把握できます。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
oracle におけるユーザーとスキーマの関係
ユーザー=ログインできる主体であり、同名のスキーマ(オブジェクト格納場所)を持ちます。
表領域(データの置き場)とプロファイル(パスワードやリソース制限)はユーザーに紐付きます。
[User(=Schema)]
├─ 権限 (System / Object)
├─ ロール (権限セット)
├─ プロファイル (PW/リソース制限)
└─ クオータ (表領域ごとの容量上限)
用語補足
- System権限: CREATE TABLE など“何ができるか”。
- Object権限: 他者オブジェクトに対する SELECT/INSERT 等。
- ロール: 権限の束(付け外ししやすい)。
- プロファイル: パスワード期限・ロック回数・CPU/UNDO制限などの集合。
ユーザー作成の基本(CREATE USER)
1) 表領域の作成(必要に応じて)
既存の USERS を使ってもよいですが、アプリごとに専用表領域を分けると運用が楽になります。
-- データファイルやサイズは環境に応じて調整
SQL> CREATE TABLESPACE APP_TBS
DATAFILE '/u01/app/oracle/oradata/ORCL/app_tbs01.dbf'
SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 10G;
SQL> CREATE TEMPORARY TABLESPACE APP_TEMP
TEMPFILE '/u01/app/oracle/oradata/ORCL/app_temp01.dbf'
SIZE 200M AUTOEXTEND ON NEXT 50M MAXSIZE 5G;
表領域についてはコチラ。
2) ユーザー作成(パスワード・表領域・クオータを明示)
-- アプリ用ユーザー APPUSER を作成
SQL> CREATE USER APPUSER IDENTIFIED BY "SecretPW_2025"
DEFAULT TABLESPACE APP_TBS
TEMPORARY TABLESPACE APP_TEMP
QUOTA 1G ON APP_TBS
ACCOUNT UNLOCK;
ポイント
- QUOTA を指定しないと表作成ができず ORA-01950 エラーが出ます。
UNLIMITED TABLESPACEは管理が難しくなるので安易に付与しないこと。- パスワードは複雑なものを設定。引用符付きは大小文字を区別します。
3) 必須権限の付与(最低限)
-- ログイン権限
SQL> GRANT CREATE SESSION TO APPUSER;
-- 自スキーマでオブジェクトを作る権限
SQL> GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO APPUSER;
旧来の CONNECT / RESOURCE ロールは非推奨。必要な権限を個別付与しましょう。
動作確認(テーブル作成からSELECTまで)
手順イメージ
[APPUSERでログイン]
│
▼
CREATE TABLE / INSERT
│
▼
SELECT で確認
実行例
-- APPUSERで接続
SQL> CONN APPUSER/SecretPW_2025
-- テーブル作成
SQL> CREATE TABLE T_CUSTOMER (
CUSTOMER_ID NUMBER(10) PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL,
CREATED_AT DATE DEFAULT SYSDATE
);
-- データ登録
SQL> INSERT INTO T_CUSTOMER (CUSTOMER_ID, NAME)
VALUES (1, 'Yamada');
SQL> COMMIT;
-- データ確認
SQL> SELECT CUSTOMER_ID, NAME, CREATED_AT
FROM T_CUSTOMER
WHERE CUSTOMER_ID = 1;
補足
COMMITを忘れると他セッションから見えません。- 列名を明示して INSERT すると可読性・保守性が向上します。
ユーザー管理操作(ALTER / LOCK / DROP)
-- パスワード変更
SQL> ALTER USER APPUSER IDENTIFIED BY "NewPW_2025";
-- 表領域やクオータ変更
SQL> ALTER USER APPUSER DEFAULT TABLESPACE APP_TBS;
SQL> ALTER USER APPUSER QUOTA 2G ON APP_TBS;
-- アカウントロック/解除
SQL> ALTER USER APPUSER ACCOUNT LOCK;
SQL> ALTER USER APPUSER ACCOUNT UNLOCK;
-- ユーザー削除(オブジェクト含めて)
SQL> DROP USER APPUSER CASCADE;
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
権限・ロール・クオータ確認SQL
-- ユーザー一覧
SELECT USERNAME, ACCOUNT_STATUS, DEFAULT_TABLESPACE, PROFILE
FROM DBA_USERS
ORDER BY USERNAME;
-- 付与されたロール
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'APPUSER';
-- 付与されたシステム権限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'APPUSER';
-- クオータ確認
SELECT * FROM DBA_TS_QUOTAS WHERE USERNAME = 'APPUSER';
プロファイルでパスワードポリシーを強化
-- プロファイル作成(PW有効期限180日、失敗10回でロック)
SQL> CREATE PROFILE APP_PROFILE LIMIT
PASSWORD_LIFE_TIME 180
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1;
-- プロファイル適用
SQL> ALTER USER APPUSER PROFILE APP_PROFILE;
よくあるエラーと対処
- ORA-01045: CREATE SESSIONが不足 →
GRANT CREATE SESSIONを忘れていないか確認。 - ORA-01950: 表領域に対する権限なし →
ALTER USER ... QUOTAを設定。 - ORA-28000/28001 系 → アカウントロックやPW期限切れ。解除または変更。
- ORA-01920: ユーザー名が既存 → 別名を使用するか、不要なら
DROP USER。
まとめ
- 非CDB環境では、PDB切替不要でインスタンス直下にユーザーを作成。
- 表領域+クオータを明示して作成すると、容量制御が容易。
- CONNECT/RESOURCE ではなく、必要な権限を最小限で付与。
- プロファイルやロールを組み合わせ、セキュリティと管理性を両立する。
本記事は Oracle Database 19c 非CDB環境を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント