データベース管理者(DBA)やシステム管理者として、Oracleデータベースを運用する際に避けては通れないのが「ユーザーの作成」と「ユーザーの削除」です。ユーザー管理はセキュリティの観点からも重要で、適切な権限を持ったユーザーを作成し、不要になったユーザーを正しく削除することが求められます。この記事では、Oracleデータベースにおけるユーザー作成と削除の基本的な手順や注意点について、初心者でもわかりやすく解説します。
1. Oracleデータベースにおけるユーザーの役割
まず初めに理解しておきたいのが、Oracleデータベースにおける「ユーザー」とは何かという点です。データベースのユーザーは、データベース内のオブジェクト(表、ビュー、ストアドプロシージャなど)を操作するための権限を持つアカウントです。ユーザーはデータにアクセスし、クエリを実行し、データの挿入・更新・削除を行うための権利を持ちます。
Oracleでは、ユーザーごとに独自のスキーマが作成され、ユーザーはそのスキーマ内でオブジェクトを作成・管理します。したがって、ユーザー管理はデータベース全体のセキュリティやパフォーマンスにも大きく関わってくる重要なタスクです。
2. ユーザー作成の基本
2.1 ユーザー作成の目的
Oracleデータベースにおいて新たなユーザーを作成する理由は様々です。例えば、新しい開発者やDBAがデータベースにアクセスできるようにしたり、特定のアプリケーションがデータベースを操作するための専用アカウントを作成したりすることが一般的です。ユーザーごとに異なる権限を設定することで、必要な操作のみを許可し、セキュリティリスクを最小限に抑えることができます。
2.2 ユーザー作成に必要な権限
ユーザーを作成するには、データベース内で十分な権限を持っている必要があります。具体的には、通常DBAロール(CREATE USER
権限を含む)を持つユーザーが新しいユーザーを作成することができます。
GRANT CREATE USER TO <ユーザー名>;
このコマンドを実行することで、新しいユーザーを作成できるようになります。
2.3 ユーザー作成の基本構文
Oracleでユーザーを作成するための基本的なSQL構文は以下の通りです。
CREATE USER <ユーザー名>
IDENTIFIED BY <パスワード>
DEFAULT TABLESPACE <デフォルト表領域>
TEMPORARY TABLESPACE <テンポラリ表領域>
QUOTA <サイズ> ON <表領域>;
このコマンドの詳細を見ていきましょう。
<ユーザー名>
: 作成するユーザーの名前を指定します。<パスワード>
: ユーザーがログインする際に使用するパスワードを指定します。<デフォルト表領域>
: ユーザーがデータを保存するためのデフォルトの表領域を指定します。<テンポラリ表領域>
: ソート操作など一時的な作業に使用されるテンポラリ表領域を指定します。<サイズ>
: 表領域に対するクォータ(使用できるサイズ)を指定します。
表領域(Tablespace)は、Oracleデータベース内でデータを保存するための物理的な領域を管理する単位です。データベースには多くのデータ(テーブル、インデックスなど)が保存されますが、これらのデータはファイルに保存されます。表領域は、こうしたデータファイルの集まりを一つにまとめて管理する仕組みです。
初心者向けに言うと、**表領域は「データを入れておくための箱」**のようなものです。この「箱」にデータベースのテーブルやインデックスが保存されます。表領域ごとに保存するデータの種類を分けたり、サイズの制限を設定することで、データベース全体の管理を効率よく行うことができます。
・デフォルト表領域(Default Tablespace)
通常、ユーザーが作成したテーブルなどのデータが保存される場所です。
・テンポラリ表領域(Temporary Tablespace)
データベースが作業中に一時的に使う領域です。例えば、ソート処理などの一時データが保存されます。
例
CREATE USER user1
IDENTIFIED BY password123
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 10M ON users;
この例では、user1
という名前のユーザーを作成し、パスワードはpassword123
、デフォルトの表領域はusers
、テンポラリ表領域はtemp
、そしてusers
表領域上に10MBのクォータを割り当てています。
3. ユーザー作成後の権限付与
ユーザーを作成しただけでは、そのユーザーにはデータベース上でほとんど何もできません。適切な権限を付与する必要があります。これを行うためには、GRANT
コマンドを使用します。
3.1 基本的な権限の付与
新しく作成したユーザーに対して、最低限以下の権限を付与することが一般的です。
GRANT CONNECT, RESOURCE TO <ユーザー名>;
CONNECT
: データベースへの接続を許可します。RESOURCE
: 表、ビュー、シーケンスなどのオブジェクトを作成する権限を持たせます。
よく使用されるシステム権限(System Privileges)
システム全体での操作を許可する権限で、テーブルやユーザーの作成など、データベースの管理に必要な権限です。
1. CREATE SESSION
- 説明: データベースへの接続を許可します。Oracleデータベースに接続してSQLコマンドを実行するために必要な基本的な権限です。
- 用途: すべてのユーザーがデータベースにアクセスする際に必要です。
2. CREATE USER
- 説明: 新しいユーザーアカウントを作成するための権限です。ユーザー作成は、DBAや特定の管理者のみが行う操作です。
- 用途: 新しいデータベースユーザーを追加する場合に使用します。
3. CREATE TABLE
- 説明: 新しいテーブルを作成するための権限です。ユーザーが自分のスキーマにテーブルを作成できるようになります。
- 用途: 開発者やデータベースユーザーがテーブルを作成する場合に使用します。
4. ALTER USER
- 説明: 既存のユーザーの設定(パスワード、デフォルトの表領域など)を変更するための権限です。
- 用途: ユーザーの設定を変更したい場合に使用します。
5. DROP USER
- 説明: ユーザーアカウントを削除する権限です。ユーザーが不要になった際に、そのアカウントを削除するのに使います。
- 用途: データベースの整理や不要なユーザーアカウントの削除時に使用します。
6. GRANT ANY PRIVILEGE
- 説明: 他のユーザーに任意の権限を付与することができる特権です。高い権限を持つユーザーや管理者が他のユーザーに権限を与える場合に使用されます。
- 用途: DBAや管理者が他のユーザーに権限を与える際に使用します。
7. CREATE ANY TABLE
- 説明: 任意のスキーマにテーブルを作成できる権限です。通常、自分のスキーマ内でしかテーブルを作成できませんが、この権限があると他のスキーマにもテーブルを作成できます。
- 用途: 高度なデータベース操作が必要なユーザーや管理者に使用されます。
4. ユーザー削除の基本
次に、不要になったユーザーアカウントを削除する方法について説明します。ユーザーを削除する際には、そのユーザーに関連するすべてのデータやオブジェクトも削除されるため、慎重に行う必要があります。
4.1 ユーザー削除の基本構文
Oracleデータベースからユーザーを削除するための基本的なSQL構文は以下の通りです。
DROP USER <ユーザー名> [CASCADE];
<ユーザー名>
: 削除したいユーザーの名前を指定します。CASCADE
: ユーザーが所有するすべてのオブジェクトも一緒に削除する場合に使用します。
例
DROP USER user1 CASCADE;
このコマンドでは、user1
ユーザーとそのユーザーが所有するすべてのオブジェクトを削除します。CASCADE
オプションを付けない場合、ユーザーが所有するオブジェクトが残っているとエラーが発生します。
4.2 ユーザー削除時の注意点
ユーザーを削除する際は、以下の点に注意する必要があります。
- ユーザーが所有するデータは完全に削除されるため、事前にバックアップを取ることが推奨されます。
- 誤って重要なユーザーを削除しないよう、削除する前に十分な確認が必要です。
ユーザーは使用しなくなるが、作成している表等のオブジェクトを削除できない場合はユーザーのロックを行う方法もあります。
ユーザーのロックを行うことでそのユーザーは使用できなくなりますが、そのオブジェクトにアクセスできる権限が付与されているユーザーからは、そのオブジェクトを参照したりすることが可能です。
ユーザーのロック/アンロックを行う方法は以下です。
※SYS等の権限が付与されているユーザーで行う必要があります。
・ユーザーのロック
ALTER USER <ユーザー名> ACCOUNT LOCK;
・ユーザーのアンロック
ALTER USER user1 ACCOUNT LOCK;
5. 実際の業務での適用例
例えば、新しい開発者がプロジェクトに参加した場合、その開発者用のアカウントを作成し、データベースにアクセスできるようにします。一方、プロジェクトが終了し、その開発者がもうデータベースを使用しない場合は、アカウントを削除します。このように、ユーザー作成と削除の操作は、プロジェクトの進行状況に合わせて頻繁に発生するものです。
6. まとめ
この記事では、Oracleデータベースにおけるユーザー作成と削除について、初心者向けに解説しました。ユーザーの作成や削除はデータベース管理の基本操作ですが、セキュリティやデータ保全の観点からも非常に重要です。実際の運用では、適切な権限管理やバックアップなどを考慮しながら慎重に操作を行うことが求められます。
コメント