はじめに
Oracle Databaseでユーザーを作成する際に、以下のようなエラーが発生することがあります。
このエラーは、指定した表領域(tablespace)が存在しない場合に発生します。本記事では、原因の解説と実際の解決方法をまとめます。
エラーの原因
ORA-00959
は 「指定した表領域が存在しない」 ことを意味します。
例えば以下のSQLを実行した場合を考えます。
このとき、環境に USERS
という表領域が作成されていなければ、ORA-00959
が返されます。
よくある原因
-
インストール時にデフォルトの
USERS
表領域が作成されなかった -
他の管理者が不要と判断し削除してしまった
-
マルチテナント環境(CDB/PDB)で表領域の有無が異なる
対処法
1. 既存の表領域を確認する
まずは現在存在している表領域を確認します。
ここで USERS
が表示されなければ、エラーの通り存在していないことが確認できます。
2. 表領域を作成する
存在しない場合は新たに表領域を作成します。
※ データファイルのパスは環境に応じて修正してください。
3. 既存の表領域を指定してユーザーを作成する
新しく表領域を作成せず、既存の表領域を利用する方法もあります。
ただし、SYSTEM
を業務用に利用するのは推奨されないため、専用の表領域を作成する方がベストです。
4. ユーザー作成後の権限付与
ユーザー作成が成功したら、最低限以下の権限を付与します。
必要に応じて他の権限も付与してください。
まとめ
-
ORA-00959
は 「指定した表領域が存在しない」 ことが原因 -
DBA_TABLESPACES
ビューで表領域の存在を確認 -
必要に応じて新規作成、または既存の表領域を指定する
表領域の存在を確認してからユーザー作成を行うことで、エラーを回避できます。
❓よくある質問(FAQ)
Q1. ORA-00959エラーはなぜ発生するのですか?
A. 指定した表領域(tablespace)が存在しない場合に発生します。ユーザー作成時の DEFAULT TABLESPACE
に指定した名前が、データベース内に存在しないことが原因です。
Q2. 表領域が存在するかどうかを確認するには?
A. 以下のSQLで確認できます。
ここに指定した名前が含まれていなければ、新しく表領域を作成する必要があります。
Q3. SYSTEM表領域を代わりに使っても良いですか?
A. 技術的には可能ですが推奨されません。SYSTEM
はOracle内部で利用される表領域であり、業務用のオブジェクトを置くとパフォーマンスや管理に悪影響が出る可能性があります。専用の表領域を作成しましょう。
Q4. 表領域を作成するときのファイルパスはどう決めればいいですか?
A. 通常はOracleデータベースのデータファイル格納ディレクトリ(例:/u01/app/oracle/oradata/ORCL/
)に置きます。環境ごとの構成ポリシーに従い、十分な容量のあるディスクを指定してください。
Q5. マルチテナント環境(CDB/PDB)でも同じ対応ですか?
A. はい。ただしCDB直下とPDB配下で表領域の有無が異なることがあります。ユーザーを作成するPDBに接続し直し、そのPDB内で表領域を確認・作成してください。