CREATE PROFILE 文を使用して、新しいプロファイルを作成できます。 文の構文は次のとおりです。

CREATE PROFILE profile_name
 [LIMIT {parameter value} ... ];

LIMIT 句と 1 つ以上のスペース区切りのパラメーターと値のペアを使用して、Oracle と互換性のある PolarDB データベースによって適用されるルールを指定できます。

パラメーター

パラメーター 説明
profile_name プロファイルの名前を指定します。
parameter プロファイルによって制限される属性を指定します。
value パラメーターの制限を指定します。

Oracle と互換性のある PolarDB データベースは、各パラメーターについて次の値をサポートします。

FAILED_LOGIN_ATTEMPTS は、サーバーがユーザーのアカウントをロックする前に、ユーザーがログインに失敗した回数を示します。 PASSWORD_LOCK_TIME は、アカウントがロックされる期間を指定します。 有効値は次のとおりです。

  • 0 より大きい INTEGER 値。
  • DEFAULT: DEFAULT プロファイルで指定された FAILED_LOGIN_ATTEMPTS の値。
  • UNLIMITED: ログイン試行の失敗を無制限に許可することを指定します。

PASSWORD_LOCK_TIME は、サーバーがアカウントのロックを解除する前にアカウントがロックされる期間を指定します。 ログインの失敗が FAILED_LOGIN_ATTEMPTS で指定された値を超えるため、このアカウントはロックされています。 有効値は次のとおりです。

  • 0 以上の NUMERIC 値。 1 日の端数部分を指定するには、10 進数値を指定します。 たとえば、値 4.5 を使用して 4 日と 12 時間を指定します。
  • DEFAULT: DEFAULT プロファイルで指定された PASSWORD_LOCK_TIME の値。
  • UNLIMITED: データベースのスーパーユーザーが手動でロックを解除するまで、アカウントはロックされます。

PASSWORD_LIFE_TIME は、ユーザーに新しいパスワードの入力を求める前に、現在のパスワードが使用される日数を指定します。 PASSWORD_LIFE_TIME 句を使用する場合は、PASSWORD_GRACE_TIME 句を使用して、パスワードの有効期限が切れてからパスワードを使用するロールの接続リクエストが拒否されるまでの期間を指定できます。 PASSWORD_GRACE_TIME が指定されていない場合、パスワードは PASSWORD_GRACE_TIME のデフォルト値で指定された日に有効期限が切れます。 その後、新しいパスワードが提供されるまで、ユーザーは文を実行できません。 有効値は次のとおりです。

  • 0 以上の NUMERIC 値。 1 日の端数部分を指定するには、10 進数値を指定します。 たとえば、値 4.5 を使用して 4 日と 12 時間を指定します。
  • DEFAULT: DEFAULT プロファイルで指定された PASSWORD_LIFE_TIME の値。
  • UNLIMITED: パスワードが無期限になることを指定します。

PASSWORD_GRACE_TIME は、パスワードの有効期限が切れてからユーザーがパスワードの変更を強制されるまでの猶予期間を指定します。 猶予期間後、ユーザーはサービスへの接続を許可されますが、ユーザーが期限切れのパスワードを更新するまで、文を実行できません。 有効値は次のとおりです。

  • 0 以上の NUMERIC 値。 1 日の端数部分を指定するには、10 進数値を指定します。 たとえば、値 4.5 を使用して 4 日と 12 時間を指定します。
  • DEFAULT: DEFAULT プロファイルで指定された PASSWORD_GRACE_TIME の値。
  • UNLIMITED: 猶予期間が無限であることを指定します。

PASSWORD_REUSE_TIME は、ユーザーがパスワードを再利用できるようになるまでにユーザーが待機する必要がある日数を指定します。

PASSWORD_REUSE_TIME パラメーターと PASSWORD_REUSE_MAX パラメーターは一緒に使用されます。 一方のパラメーターに有限値を指定し、他方のパラメーターが UNLIMITED に設定されている場合、古いパスワードを再利用することはできません。 両方のパラメーターが UNLIMITED に設定されている場合、パスワードは無制限に再利用できます。 有効値は次のとおりです。

  • 0 以上の NUMERIC 値。 1 日の端数部分を指定するには、10 進数値を指定します。 たとえば、値 4.5 を使用して 4 日と 12 時間を指定します。
  • DEFAULT: DEFAULT プロファイルで指定された PASSWORD_REUSE_TIME の値。
  • UNLIMITED: パスワードを無制限に再利用できることを指定します。

PASSWORD_REUSE_MAX は、パスワードを再利用する前に必要になるパスワード変更回数を指定します。

PASSWORD_REUSE_TIME パラメーターと PASSWORD_REUSE_MAX パラメーターは一緒に使用されます。 一方のパラメーターに有限値を指定し、他方のパラメーターが UNLIMITED に設定されている場合、古いパスワードを再利用することはできません。 両方のパラメーターが UNLIMITED に設定されている場合、パスワードは無制限に再利用できます。 有効値は次のとおりです。

  • 0 以上の INTEGER 値。
  • DEFAULT: DEFAULT プロファイルで指定された PASSWORD_REUSE_MAX の値。
  • UNLIMITED: パスワードを無制限に再利用できることを指定します。

PASSWORD_VERIFY_FUNCTION は、パスワードの複雑さを指定します。 有効値は次のとおりです。

  • PL/SQL 関数の名前。
  • DEFAULT: DEFAULT プロファイルで指定された PASSWORD_VERIFY_FUNCTION の値。
  • NULL

PASSWORD_ALLOW_HASHED は、暗号化されたパスワードを使用できるかどうかを指定します。 TRUE を指定すると、システムはユーザーがクライアント側でハッシュ計算された暗号化パスワードを指定することによってパスワードを変更できるようにします。 ただし、FALSE を指定する場合、有効なパスワードはプレーンテキスト形式でなければなりません。 それ以外の場合、サーバーが暗号化されたパスワードを受信すると、エラーメッセージが返されます。 有効値は次のとおりです。

  • BOOLEAN 値: TRUE、ON、YES、1、FALSE、OFF、NO、および 0。
  • DEFAULT: DEFAULT プロファイルで指定された PASSWORD_ALLOW_HASHED の値。
PASSWORD_ALLOW_HASHED パラメーターは Oracle と互換性がありません。

注記

DROP PROFILE 文を使用して、プロファイルを削除できます。

次の文を実行して、acctg という名前のプロファイルを作成できます。 このプロファイルは、ユーザーが 5 回の試行中に正しいパスワードで認証されなかった場合、アカウントが 1 日間ロックされることを指定しています。

CREATE PROFILE acctg LIMIT
       FAILED_LOGIN_ATTEMPTS 5
       PASSWORD_LOCK_TIME 1;

次の文を実行して、sales という名前のプロファイルを作成できます。 このプロファイルは、ユーザーが 90 日ごとにパスワードを変更する必要があることを指定しています。

CREATE PROFILE sales LIMIT
       PASSWORD_LIFE_TIME 90
       PASSWORD_GRACE_TIME 3;

ユーザーがプロファイルで指定された 90 日間パスワードを変更しなかった場合、ユーザーがサービスにログインしようとするとエラーメッセージが返されます。 3 日間の猶予期間が経過すると、ユーザーがパスワードを変更するまで、アカウントは文を実行できません。

次の文を実行して、accts という名前のプロファイルを作成できます。 プロファイルは、ユーザーがパスワードを使用してから 180 日以内にパスワードを再利用できないこと、およびパスワードを再利用する前にパスワードを少なくとも 5 回変更する必要があることを指定しています。

CREATE PROFILE accts LIMIT
       PASSWORD_REUSE_TIME 180
       PASSWORD_REUSE_MAX 5;

次の文を実行して、resources という名前のプロファイルを作成できます。 このプロファイルは、password_rules という名前のユーザー定義関数を呼び出します。 この関数は、指定されたパスワードが複雑さの要件を満たしていることを確認します。

CREATE PROFILE resources LIMIT
       PASSWORD_VERIFY_FUNCTION password_rules;