連載
» 2007年01月30日 00時00分 公開

ORACLE MASTER Silver DBA講座(6):Oracleユーザーを作成してみよう

ORACLE MASTER資格の中級に位置付けられ、取得すればOracle技術者としてグローバルに認定される「ORACLE MASTER Silver Oracle Database 10g」。例題を利用してポイントを押さえ、確実な合格を目指そう!

[有限会社 G.F.インフィニティ (Project - ∞)]

 前回「Oracleデータベースの記憶域はどうなっている?」で、Oracleサーバの表領域とデータファイルについて学びました。今回から2回にわたって、ユーザーの管理方法を紹介します。

ユーザーの管理:ユーザーとスキーマ

ポイント

 Oracleサーバに対して何らかの作業を行うためには、Oracleユーザーが必要です。ユーザー作成時に指定できるオプションと、ユーザーに対するリソース制限について確認しておきましょう。

 作成したOracleユーザーが作業を行うためには、作業に対する権限が必要です。この権限管理については次回で紹介します。

ユーザーの作成

 ユーザーを作成するための基本構文は次のとおりです。

CREATE USER ユーザー名
IDENTIFIED BY パスワード
[DEFAULT TABLESPACE デフォルト表領域]
[TEMPORARY TABLESPACE 一時表領域];

 ユーザー名以外は作成後に変更することも可能です。ALTER USERコマンドを使用します。

 [ ]で囲んだものは省略が可能です。省略時は、それぞれデータベースレベルで設定されたデフォルト値が使用されます。

デフォルト表領域:ユーザーがセグメントを作成するとき、明示的に指定しない場合に使用される表領域

一時表領域:ディスクソートなど一時的な領域が必要な場合に使用される表領域


領域割り当て制限(QUOTA)

 領域割り当て制限(QUOTA)は、ユーザーがセグメントを作成する場合、対象となる表領域にどこまで領域を使用してよいかを設定するものです。デフォルトでは一時表領域を除き、どの表領域にも領域確保ができないようになっています。

 領域割り当て制限を設定するには、Enterprise ManagerもしくはCREATE USER文、ALTER USER文を使用します。

図1 領域割り当て制限画面 図1 領域割り当て制限画面
{CREATE | ALTER} USER ... QUOTA サイズ ON 表領域名;

 サイズに「UNLIMITED」を指定した場合、無制限に表領域が割り当てられます。

 また、UNLIMITED TABLESPACEシステム権限が付与された場合、QUOTA設定は無視され、すべての表領域に対して無制限の領域割り当てが行われます。UNLIMITED TABLESPACEシステム権限は、RESOURCEロールを付与した場合にも同時に付与されます。

図2 領域割り当て制限画面(UNLIMITED TABLESPACEシステム権限) 図2 領域割り当て制限画面(UNLIMITED TABLESPACEシステム権限)

リソース使用量の制御

 プロファイルは、データベースとインスタンスに対するリソース制限のセットに名前を付けたものです。すべてのOracleユーザーには1つのプロファイルが割り当てられています。明示的にユーザーにプロファイルを設定しない場合、DEFAULTプロファイルが割り当てられます。

 DEFAULTプロファイルは、独自に作成するプロファイルの基礎セットとしても使用できます。

図3 プロファイル作成画面 図3 プロファイル作成画面

 注意点として挙げられるのは、プロファイルを使用したリソース制限を行うためにはRESOURCE_LIMIT初期化パラメータをTRUEにする必要があることです。RESOURCE_LIMIT初期化パラメータがFALSEの場合、プロファイルの制限は無効になります。

 プロファイルを使用してパスワードを管理することもできます。パスワード管理に関しては「Oracle Databaseのセキュリティ」の回で解説します。

問題

問題1

ユーザーのセッションで頻繁に次のエラーが表示されるという報告がありました。

ORA-02392: CPU使用に対するセッション制限を超過しました。ログオフします。

このエラーを回避するにはどうしたらよいでしょうか。

a.ユーザーに割り当てているプロファイルの定義を変更する
b.DEFAULTプロファイルの定義を変更する
c.RESOURCE_LIMIT初期化パラメータをTRUEにする
d.CPUを追加する

正解:a

解説

 前回、宿題とした問題です。問題に提示されているエラーは、プロファイルによるCPU制限を超過したときに表示されます。この制限は、CPU使用量(時間)を超過したら処理を中止することで、サーバのリソースを有効活用するものです。しかし設定が不適切だと、頻繁にエラーが発生することになり、ユーザーの処理に不都合が生じます。その場合、ユーザーに割り当てられているプロファイルの設定を変更し、適正化します(正解a)。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢b:ユーザーに明示的にプロファイルを割り当てない場合、そのユーザーにはDEFAULTプロファイルが割り当てられます。問題では、明示的に割り当てたかどうかは記述されていないため、DEFAULTプロファイルの定義を変更すればよいとはいえません。

選択肢c:プロファイルを使用したサーバリソース制限の有効化には、プロファイル作成(変更)、ユーザーへのプロファイル割り当て、RESOURCE_LIMIT初期化パラメータをTRUEにという3つの作業が必要です。問題ではプロファイルによるリソース制限エラーが表示されていることから、3つの作業はすでに完了していると考えられます。

選択肢d:プロファイルに設定したCPUの使用量(時間)に対する制限を超過したエラーであるため、CPU数が追加されても処理時間が超過すれば同じエラーが発生します。CPUを追加した場合は、プロファイルの設定を見直すようにしましょう。

問題2

次のように作成したユーザーが存在します。

SQL> CREATE USER pub1 IDENTIFIED BY oracle
  2  DEFAULT TABLESPACE users;

USERS表領域に無制限の領域を割り当て、そのほかの表領域には領域を割り当てないようにするには、どのコマンドを実行すればよいでしょうか。

a.GRANT connect TO pub1;
b.ALTER USER pub1 QUOTA UNLIMITED ON users;
c.GRANT connect, resource TO pub1;
d.GRANT unlimited tablespace TO pub1;

正解:b

解説

 セグメントの所有者であるユーザーが表領域の領域を獲得するためには、領域割り当て(QUOTA)が必要です。無制限の領域割り当てを行うには、サイズをUNLIMITEDとして設定します(正解b)。QUOTAを設定しない表領域は領域を獲得できないようになっています。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢a:CONNECTロールの設定によって、セッションを確立(CREATE SESSION)したり表を作成(CREATE TABLE)したりする権限は付与されますが、領域割り当てに関連する権限は付与されません。

選択肢c、d:RESOURCEロールを設定すると、UNLIMITED TABLESPACE権限も同時に付与されます。UNLIMITED TABLESPACE権限が付与されると、すべての表領域に対して無制限の領域割り当てが設定されます。この問題ではUSERS表領域以外には領域割り当てをしないとしているため、不適切です。

問題3

scottユーザーのCPUの使用率が、プロファイルに設定した値以上に多いようです。必要な設定を選択しなさい。

a.ユーザーのプロファイルをDEFAULTに変更する
b.OSのCPUモニタで再度値を確認する
c.RESOURCE_LIMIT初期化パラメータをTRUEにする
d.RESOURCE_LIMIT初期化パラメータをFALSEにする

正解:c

解説

 プロファイルに設定したリソース制限を超えて処理を実行できているということは、プロファイルが有効になっていない可能性が高いです。プロファイルによるリソース制限を行うためには、プロファイルを作成(変更)する、ユーザーにプロファイルを設定する、RESOURCE_LIMIT初期化パラメータをTRUEにするという3つの作業が必要です。これに該当する選択肢はcとなります。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢a:ユーザーにプロファイルを設定していない場合に設定されるのがDEFAULTプロファイルです。DEFAULTプロファイルを設定されていても、リソース制限が有効になるわけではありません。

選択肢b:CPU使用のリソース制限は、CPU使用時間で設定します。CPU使用時間が設定した上限時間より長い場合、観測ミスの可能性もありますが、プロファイルによるリソース制限自体が有効化されているかどうかを先に疑うべきです。

選択肢d:RESOURCE_LIMIT初期化パラメータのデフォルト値はFALSEです。この場合、プロファイルによるリソース制限は無効になります。

宿題

 次回は今回に引き続き、「ユーザーの管理」を確認します。次の宿題を解いておいてください。

問題

Database Controlコンソールを使用してユーザーを作成し、SELECT_CATALOG_ROLEロールを選択し、DEFAULTのチェックを外しました。このロールに関する説明として正しいものを選択しなさい。

a.このユーザーのみに割り当てられた状態になっている
b.ロールの有効化にはパスワードが必要である
c.ログオン時から有効化されている状態になっている
d.ログオン後、明示的に有効にする必要がある

IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、「Silver DBA(Oracle10g)」をはじめOracle関連の資格をテーマとして取り上げています。「無料お試し版」もありますので、記事と併せてご覧ください。



Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。