注意: リソース制限を設定する場合、このSQL文ではなく、データベース・リソース・マネージャを使用することをお薦めします。データベース・リソース・マネージャを使用すると、リソース使用の管理および監査を柔軟に行うことができます。データベース・リソース・マネージャの詳細は、『Oracle Database管理者ガイド』を参照してください。 |
用途
CREATE
PROFILE
文を使用すると、プロファイルを作成できます。プロファイルとは、データベース・リソースの制限の集合です。プロファイルをユーザーに割り当てた場合、そのユーザーはそれらの制限を超えることはできません。
関連項目: パスワード管理およびパスワード保護の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
前提条件
プロファイルを作成する場合、CREATE
PROFILE
システム権限が必要です。
次の方法でユーザーに対するリソース制限を指定します。
ALTER
SYSTEM
文または初期化パラメータRESOURCE_LIMIT
で動的にリソース制限を使用可能にします。このパラメータは、パスワード・リソースには適用されません。パスワード・リソースは、常に使用可能です。
CREATE
PROFILE
文を使用して、制限を定義するプロファイルを作成します。
CREATE
USER
またはALTER
USER
文を使用して、プロファイルを割り当てます。
関連項目:
|
構文
create_profile::=
(size_clause::=を参照)
セマンティクス
profile
作成するプロファイルの名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。プロファイルを使用した場合、ユーザーが使用可能なデータベース・リソースを1つのコールまたは1つのセッションごとに制限できます。
Oracle Databaseでは、次の方法でリソース制限を適用します。
CONNECT_TIME
またはIDLE_TIME
で指定したセッション・リソース制限を超えた場合、現行のトランザクションが自動的にロールバックされ、セッションが終了します。ユーザー・プロセスで次にコールを実行すると、エラーが戻ります。
他のセッション・リソースに対する制限を超える処理を実行しようとした場合、その処理が自動的に中断され、現行の文がロールバックされ、すぐにエラーが戻されます。この後、ユーザーは、現行のトランザクションをコミットまたはロールバックできます。そして、セッションを終了する必要があります。
1つのコールに対する制限を超える処理を実行しようとした場合、その処理が自動的に中断され、現行の文がロールバックされ、エラーが戻されます。この場合、現行のトランザクションは有効です。
注意:
|
リソース・パラメータでUNLIMITED
を指定すると、このプロファイルを割り当てられたユーザーは無制限にリソースを使用できます。パスワード・パラメータでUNLIMITED
を指定した場合は、パラメータに制限が設定されていないことを示します。
DEFAULT
DEFAULT
を指定すると、このプロファイルでリソースの制限を省略できます。このプロファイルを割り当てられたユーザーは、DEFAULT
プロファイルで指定した対象リソースに対する制限を受けます。DEFAULT
プロファイルは、最初に無制限のリソースを定義します。ALTER
PROFILE
文でこの制限を変更できます。
明示的にプロファイルが割り当てられていないユーザーは、DEFAULT
プロファイルに定義されている制限を受けます。ユーザーに明示的に割り当てられているプロファイルでリソースに対する制限が省略されている場合、または制限に対してDEFAULT
が指定されている場合、ユーザーはDEFAULT
プロファイルで定義されているリソースに関する制限を受けます。
resource_parameters
SESSIONS_PER_USER ユーザーを制限する同時セッションの数を指定します。
CPU_PER_SESSION 1セッション当たりのCPU時間制限を指定します。この値は100分の1秒単位で指定します。
CPU_PER_CALL 1コール(解析、実行またはフェッチ)当たりのCPU時間制限を指定します。この値は100分の1秒単位で指定します。
CONNECT_TIME 1セッション当たりの合計経過時間制限を指定します。この値は分単位で指定します。
IDLE_TIME セッション中の連続的な非活動時間の長さを制限します。この値は分単位で指定します。実行時間の長い問合せおよびその他の操作には、この制限は適用されません。
LOGICAL_READS_PER_SESSION メモリーおよびディスクから読み込まれるブロックなど、1セッション中に読み込まれるデータ・ブロックの数の制限を指定します。
LOGICAL_READS_PER_CALL SQL文(解析、実行またはフェッチ)を処理する1つのコールで読み込まれるデータ・ブロックの数の制限を指定します。
PRIVATE_SGA 1つのセッションでシステム・グローバル領域(SGA)の共有プール内に割り当てることができるプライベート領域の大きさを指定します。この句の詳細は、「size_clause」を参照してください。
注意: この制限は、共有サーバー・アーキテクチャを使用している場合のみに適用されます。SGA内のセッション用のプライベート領域には、プライベートSQLおよびPL/SQL領域が含まれますが、共有SQLおよびPL/SQL領域は含まれません。 |
COMPOSITE_LIMIT 1セッション当たりのリソースの総コストをサービス単位で指定します。サービス単位の合計は、CPU_PER_SESSION
、CONNECT_TIME
、LOGICAL_READS_PER_SESSION
およびPRIVATE_SGA
の重み付き合計として計算されます。
次の句を使用すると、パスワード・パラメータを設定できます。時間の長さを設定するパラメータ(FAILED_LOGIN_ATTEMPTS
およびPASSWORD_REUSE_MAX
を除くすべてのパスワード・パラメータ)は、日数で解析されます。これらのパラメータには、テストのために、分(n/1440)または秒(n/86400)を指定できます。また、この目的のために小数値(約1時間を示す.0833など)も使用できます。最小値は1秒です。最大値は24855日です。FAILED_LOGIN_ATTEMPTS
およびPASSWORD_REUSE_MAX
には、整数を指定する必要があります。
FAILED_LOGIN_ATTEMPTS ユーザー・アカウントがロックされる前に、そのアカウントへのログインに連続して失敗できる回数を指定します。この句を指定しない場合、10回がデフォルトになります。
PASSWORD_LIFE_TIME 同じパスワードを認証に使用できる日数を制限します。PASSWORD_GRACE_TIME
の値とともに設定した場合、猶予期間内にパスワードを変更しないと、そのパスワードは使用できなくなり、それ以降の接続は拒否されます。この句を指定しない場合、180日がデフォルトになります。
関連項目: PASSWORD_LIFE_TIME の値を短くする場合は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
PASSWORD_REUSE_TIMEおよびPASSWORD_REUSE_MAX これら2つのパラメータは、両方を組み合せて設定する必要があります。PASSWORD_REUSE_TIME
は、パスワードを再利用できない日数を指定します。PASSWORD_REUSE_MAX
は、現行のパスワードを再利用する前に必要な、パスワードの変更回数を指定します。これらのパラメータを有効にするには、両方のパラメータに値を指定する必要があります。
両方のパラメータに値を指定すると、PASSWORD_REUSE_TIME
に指定した日数の間は、PASSWORD_REUSE_MAX
に指定した回数までパスワードが変更されなりかぎり、パスワードを再利用できません。
たとえば、PASSWORD_REUSE_TIME
に30を指定し、PASSWORD_REUSE_MAX
に10を指定した場合、パスワードが10回変更されていると、30日後にパスワードを再利用できます。
これらのパラメータのいずれかに値を指定し、他方にUNLIMITED
を指定すると、パスワードは再利用できなくなります。
いずれかのパラメータにDEFAULT
を指定すると、DEFAULT
プロファイルに定義された値が使用されます。DEFAULT
プロファイルでは、すべてのパラメータはデフォルトでUNLIMITED
に設定されます。DEFAULT
プロファイルのデフォルト設定のUNLIMITED
を変更していない場合、パラメータの値はUNLIMITED
として扱われます。
両方のパラメータをUNLIMITED
に設定すると、これらのパラメータは無視されます。これは、両方のパラメータを指定しない場合のデフォルトです。
PASSWORD_LOCK_TIME ログインが指定された回数連続して失敗した場合、アカウントがロックされる日数を指定します。この句を指定しない場合、1日がデフォルトになります。
PASSWORD_GRACE_TIME 警告が出され、ログインが許可される猶予期間の日数を指定します。この句を指定しない場合、7日がデフォルトになります。
PASSWORD_VERIFY_FUNCTION PASSWORD_VERIFY_FUNCTION
句を使用すると、PL/SQLの複雑なパスワード検証スクリプトをCREATE
PROFILE
文の引数として渡すことができます。Oracle Databaseにはデフォルトのスクリプトがありますが、ユーザー固有のルーチンを作成することも、サード・パーティのソフトウェアを使用することもできます。
function
には、複雑なパスワード検証ルーチンの名前を指定します。ファンクションがSYS
スキーマ内にある必要があり、ファンクションにEXECUTE
権限が必要です。
NULL
を指定すると、パスワードの検証が行われないことを示します。
パスワード・パラメータにexpr
を指定する場合、スカラー副問合せ式を除くすべての形式の式を指定できます。
パスワード・パラメータの制限事項 外部ユーザーまたはグローバル・ユーザーにプロファイルを割り当てると、パスワード・パラメータはそのユーザーに対して無効になります。
プロファイルの作成例: 次の文は、プロファイルnew_profile
を作成します。
CREATE PROFILE new_profile LIMIT PASSWORD_REUSE_MAX 10 PASSWORD_REUSE_TIME 30;
プロファイルのリソース制限の設定の例: 次の文は、プロファイルapp_user
を作成します。
CREATE PROFILE app_user LIMIT SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL 3000 CONNECT_TIME 45 LOGICAL_READS_PER_SESSION DEFAULT LOGICAL_READS_PER_CALL 1000 PRIVATE_SGA 15K COMPOSITE_LIMIT 5000000;
ユーザーにapp_user
プロファイルを割り当てた場合、そのユーザーは、後続のセッションで次の制限を受けます。
ユーザーは、無制限に同時セッションを使用できます。
1つのセッションにおいて、ユーザーはCPU時間を無制限に使用できます。
ユーザーが作成した1つのコールで消費できるCPU時間は30秒以下です。
1つのセッションで継続できる時間は45分以下です。
1つのセッションでメモリーおよびディスクから読み込むデータ・ブロック数は、DEFAULT
プロファイルで指定した制限を受けます。
ユーザーが実行した1つのコールで、メモリーまたはディスクから読み込むことができるデータ・ブロック数の合計は1000以下です。
1つのセッションで割り当てることができるSGA内のメモリーは、15KB以下です。
1つのセッションのリソースの総コストは、サービス単位で500万を超えることはできません。リソースの総コストの計算式は、ALTER
RESOURCE
COST
文で指定します。
app_user
プロファイルでは、IDLE_TIME
およびパスワードに対する制限が指定されていないため、ユーザーはDEFAULT
プロファイルに指定されているこれらのリソースの制限を受けます。
プロファイルのパスワード制限の設定例: 次の文は、app_user2
プロファイルに、パスワード制限値を設定して作成します。
CREATE PROFILE app_user2 LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_VERIFY_FUNCTION verify_function PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10;
この例では、Oracle Databaseのデフォルトのパスワード検証ファンクションverify_function
を使用します。この検証ファンクションの使用方法または独自の検証ファンクションの設計方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。