Oracle Database 19c ユーザー作成と管理

Oracle Master Silver

本記事では、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環境を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。


[参考]
SQL言語リファレンス – CREATE USER

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました