ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
はじめに
Oracle のユーザーはスキーマと一対一で、ユーザーを削除するとそのスキーマに属する表・ビュー・索引・PL/SQL もまとめて影響を受けます。本番環境では誤操作が致命傷になりやすい操作なので、構文だけでなく前提条件・影響範囲を理解しておきましょう。
基本構文
DROP USER ユーザー名 [CASCADE];
| オプション | 意味 |
|---|---|
| なし | スキーマオブジェクトがある場合はエラーで停止 |
CASCADE | スキーマ内の全オブジェクト(表・ビュー・索引・PL/SQL など)も一緒に削除 |
基本例
-- オブジェクトを持たないユーザーをそのまま削除
DROP USER test_user;
-- 表などを保有しているユーザーは CASCADE 必須
DROP USER app_user CASCADE;
必要な権限
DROP USERシステム権限(DBA ロールに含まれる)- 自分自身のユーザーは削除不可(接続中のため)
- SYS / SYSTEM のようなシステム予約ユーザーは削除禁止
-- DBA ロールで接続して実行
SQL> CONNECT sys/password AS SYSDBA;
SQL> DROP USER app_user CASCADE;
接続中ユーザーの扱い
削除しようとしたユーザーで誰かが接続していると ORA-01940: cannot drop a user that is currently connected が出ます。次の手順で対処します。
-- 1) 接続セッションを確認
SELECT sid, serial#, username, status, program
FROM v$session
WHERE username = 'APP_USER';
-- 2) セッションを切断(sid, serial# は前の結果から)
ALTER SYSTEM KILL SESSION '123,456' IMMEDIATE;
-- 3) 念のためアカウントをロックしておく
ALTER USER app_user ACCOUNT LOCK;
-- 4) 改めて削除
DROP USER app_user CASCADE;
CASCADE で削除されるもの
| 対象 | 備考 |
|---|---|
| 表 / ビュー / マテリアライズドビュー | 当該スキーマのもの全て |
| 索引 / シーケンス / シノニム | 同上 |
| PL/SQL(プロシージャ / 関数 / パッケージ) | 同上 |
| トリガー | 同上 |
| 表領域上の物理データ | 領域は表領域に返却される |
| 外部から参照しているビュー / シノニム | 無効化(INVALID)になる |
| 外部から参照している外部キー | 削除されない、エラーになる場合あり |
削除対象スキーマの表を、他スキーマの外部キーが参照している場合は CASCADE でも自動解決できないことがあります。事前に依存関係を調査してください。
-- 他スキーマからの参照を調査
SELECT owner, constraint_name, table_name, r_owner, r_constraint_name
FROM dba_constraints
WHERE constraint_type = 'R'
AND r_owner = 'APP_USER';
削除前の安全チェック
- 該当ユーザーがアプリで使われていないか、接続情報(tnsnames・接続文字列)を grep
v$sessionで接続セッションがないか確認- スキーマ内オブジェクト一覧をエクスポート(
expdp)してバックアップ - 他スキーマからの参照(外部キー・ビュー・シノニム)を調査
- 本番ならアカウントロック → 一定期間放置 → 削除の二段階で進める
-- ステップ 1: アカウントロックで利用停止
ALTER USER app_user ACCOUNT LOCK;
-- 数日〜数週間運用して問題なし → ステップ 2 で削除
DROP USER app_user CASCADE;
表領域とユーザー削除の関係
ユーザーを削除しても表領域(TABLESPACE)自体は残ります。ユーザーが使用していたセグメントは解放され、表領域内の空き領域として再利用可能になります。表領域も削除したい場合は、別途 DROP TABLESPACE 文が必要です。
-- ユーザー削除後に、不要になった表領域も削除
DROP TABLESPACE app_data INCLUDING CONTENTS AND DATAFILES;
他 DBMS との比較
| DBMS | 構文 | 備考 |
|---|---|---|
| Oracle | DROP USER ユーザー名 [CASCADE] | スキーマと一体 |
| MySQL | DROP USER 'user'@'host' | 所有オブジェクトは別途削除が必要 |
| PostgreSQL | DROP USER ユーザー名 / DROP ROLE | 所有オブジェクトがあるとエラー、REASSIGN OWNED BY や DROP OWNED BY で前処理 |
| SQL Server | DROP USER ユーザー名; + DROP LOGIN ログイン名; | ユーザーとログインを分けて削除 |
よくあるトラブル
| エラー | 原因 / 対処 |
|---|---|
ORA-01922: CASCADE must be specified to drop ... | オブジェクトが残っている。CASCADE を付与 |
ORA-01940: cannot drop a user that is currently connected | 接続中。ALTER SYSTEM KILL SESSION で切断 |
ORA-01031: insufficient privileges | DROP USER 権限がない。DBA ロールを持つ管理者で実行 |
ORA-02429: cannot drop index used for enforcement of unique/primary key | 他スキーマから参照される一意制約がある。先に参照側の外部キーを削除 |
| 削除後にビューが INVALID | 他スキーマのビューが参照していた。ALTER VIEW ... COMPILE で再コンパイル不能なら作り直し |
関連
- ユーザー関連 — 親カテゴリ
- CREATE USER — ユーザー作成
- ALTER USER — パスワード変更・アカウントロック
- GRANT / REVOKE — 権限付与・剥奪
- DROP TABLESPACE — 表領域削除
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?