ALTER USER
目的
ALTER USERを使用すると、次の操作を実行できます。
-
データベース・ユーザーの認証またはデータベース・リソースの特性を変更します。
-
プロキシ・サーバーが認証なしでクライアントとして接続することを許可します。
-
Oracle Automatic Storage Management (Oracle ASM)クラスタで、ユーザーのパスワードを現在のノードのOracle ASMインスタンスに対してローカルなパスワード・ファイルで変更します。
関連項目:
ユーザーの認証方式の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
前提条件
通常、ALTER USERシステム権限が必要です。ただし、現行ユーザーはこの権限がない場合でも自分のパスワードは変更できます。
SYSユーザーのパスワードを変更するには、パスワード・ファイルが存在している必要があります。
Oracle ASMインスタンス・パスワード・ファイルで自分以外のユーザーのパスワードを変更するには、AS SYSASMとして認証されている必要があります。
CONTAINER句を指定する場合は、マルチテナント・コンテナ・データベース(CDB)に接続している必要があります。現在のコンテナがルートである場合は、CONTAINER = ALLまたはCONTAINER = CURRENTを指定できます。現在のコンテナがプラガブル・データベース(PDB)である場合は、CONTAINER = CURRENTのみ指定可能です。
container_data_clauseを使用してCONTAINER_DATA属性を設定および変更する場合は、CDBに接続している必要があります。また、現在のコンテナがルートである必要があります。
構文
container_data_clause::=
db_user_proxy_clauses::=
セマンティクス
この項で説明するキーワード、パラメータおよび句は、ALTER USER独自か、または、CREATE USERでの場合とセマンティクスが異なります。その他のキーワード、パラメータおよび句には、CREATE USER文と同じ意味があります。
ノート:
ユーザー名およびパスワードは、ご使用のプラットフォームに応じて、ASCIIまたはEBCDIC文字のみでエンコードすることをお薦めします。
関連項目:
キーワードおよびパラメータについては、「CREATE USER」を参照してください。ユーザーにデータベース・リソースへの制限を割り当てる方法については、「CREATE PROFILE」を参照してください。
IDENTIFIED句
BY password
BY passwordを指定すると、ユーザーの新しいパスワードを指定できます。パスワードは大/小文字が区別されます。この後に、ユーザーをデータベースに接続するために使用されるCONNECT文字列は、このALTER USER文で使用されているものと同じ文字(大文字、小文字または混在)を使用してパスワードを指定する必要があります。パスワードには、データベース文字セットから、シングルバイト文字、マルチバイト文字または両方を含めることができます。
ノート:
異なるタイムスタンプで特定のパスワードを再設定する必要があります。1秒以内に1つのパスワードを複数回再設定した場合(たとえば、スクリプトを使用して一連のパスワードの設定を繰り返した場合)、データベースはパスワードが再利用できないというエラー・メッセージを戻すことがあります。このため、パスワードの再設定には、スクリプトを使用しないことをお薦めします。
自分のパスワードを設定する場合、またはALTER USERシステム権限を持っていて、他のユーザーのパスワードを変更する場合は、REPLACE句を省略できます。ただし、ALTER USERシステム権限を持たないかぎり、複雑なパスワードの検証機能が使用可能な場合は、UTLPWDMG.SQLスクリプトを実行するか、またはユーザーに割り当てられたプロファイルのPASSWORD_VERIFY_FUNCTIONパラメータに検証機能を指定して、常にREPLACE句を指定する必要があります。
Oracle ASMクラスタで、この句を使用して、ユーザーのパスワードを、現行のノードのOracle ASMインスタンスに対してローカルなパスワード・ファイルで変更できます。REPLACE old_password句を使用せずにIDENTIFIED BY passwordを指定するには、AS SYSASMとして認証されている必要があります。AS SYSASMとして認証されていない場合は、REPLACE old_passwordを指定して自分のパスワードのみを変更できます。
以前のパスワードをREPLACE句に指定した場合でも、自分以外の既存のパスワードを変更している場合は、以前のパスワードはチェックされません。
関連項目:
パスワード作成のガイドラインに関しては『Oracle Databaseセキュリティ・ガイド』を参照してください
GLOBALLY
この句の詳細は、「CREATE USER」を参照してください。
ユーザー・アクセスの検証方法は、IDENTIFIED GLOBALLYからIDENTIFIED BY passwordまたはIDENTIFIED EXTERNALLYのいずれかに変更できます。ユーザーのアクセス検証方法を他のいずれかの検証方法からIDENTIFIED GLOBALLYに変更できるのは、ユーザーに明示的に付与されたすべての外部ロールが取り消された場合のみです。
EXTERNALLY
この句の詳細は、「CREATE USER」を参照してください。
関連項目:
グローバルまたは外部で識別されるユーザーの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。また、「ユーザー識別の変更: 例」および「ユーザー認証の変更: 例」も参照してください。
NO AUTHENTICATION句
この句を使用して、認証を使用する既存のユーザー・アカウントを認証を使用しないスキーマ・アカウントに変更して、アカウントにログインできないようにします。
DEFAULT COLLATION句
この句を使用すると、ユーザーが所有するスキーマのデフォルトの照合を変更できます。新しいデフォルトの照合は、それ以降にスキーマで作成される表、ビューおよびマテリアライズド・ビューに割り当てられます。これは、既存の表ビューおよびマテリアライズド・ビューのデフォルトの照合には影響を及ぼしません。この句のセマンティクスの詳細は、「CREATE USER」の「DEFAULT COLLATION句」を参照してください。
DEFAULT TABLESPACE句
この句を使用すると、ユーザーの永続セグメントの表領域の割当てまたは再割当てを行うことができます。この句は、データベース用に指定されているデフォルトの表領域を上書きします。
デフォルト表領域の制限事項
ローカル管理の一時表領域(UNDO表領域を含む)またはディクショナリ管理の一時表領域は、ユーザーのデフォルトの表領域として指定できません。
[LOCAL] TEMPORARY TABLESPACE句
この句を使用すると、ユーザーの一時セグメントの一時表領域または表領域グループの割当てまたは再割当てを行うことができます。
-
tablespaceに、ユーザーの一時セグメント表領域を指定します。共有一時表領域を指定するには、TEMPORARYTABLESPACEを指定します。ローカル一時表領域を指定するには、LOCALTEMPORARYTABLESPACEを指定します。CDBに接続しているときに、CDB$DEFAULTを指定すると、CDB全体のデフォルト一時表領域を使用できます。 -
tablespace_group_nameを指定すると、ユーザーは、tablespace_group_nameで指定された表領域グループ内の任意の表領域に一時セグメントを保存できるようになります。ローカル一時表領域を表領域グループに含めることはできません。
ユーザーの一時表領域の制限事項
ユーザーの一時表領域として割り当てる表領域、または再度割り当てる表領域は、標準的なブロック・サイズの一時表領域である必要があります。
関連項目:
DEFAULT ROLE句
ログオン時に、ユーザーに対してデフォルトで有効になるロールを指定します。この句では、GRANT文を使用してユーザーに直接付与されているロール、またはCREATE ROLE権限を持つユーザーが作成したロールのみ指定できます。DEFAULT ROLE句を使用して次のロールを指定することはできません。
-
ユーザーに付与されていないロール
-
他のロールを介して付与されているロール
-
外部サービス(オペレーティング・システムなど)またはOracle Internet Directoryによって管理されるロール
-
パスワード認証されるロールや保護アプリケーション・ロールなど、
SETROLE文によって使用可能になるロール
関連項目:
CDBの共通ユーザーへのデフォルト・ロールの割当て
現在のコンテナや、CDB内のすべてのコンテナの共通ユーザーに割り当てられたデフォルト・ロールを変更できます。
すべてのコンテナの共通ユーザーにデフォルト・ロールを割り当てているときには、roleは、共通ユーザーに共通に付与された共通ロールにする必要があります。
現在のコンテナの共通ユーザーにデフォルト・ロールを割り当てているときには、roleは、次のいずれかのロールにする必要があります。
-
現在のコンテナの共通ユーザーに付与されたローカル・ロール
-
共通ユーザーに付与された共通ロール(共通に付与されたものか、現在のコンテナでローカルに付与されたもののいずれか)
ENABLE EDITIONS
この句は元に戻すことができません。ENABLE EDITIONSを指定すると、ユーザーは、エディションを使用しているスキーマ内で、エディション化可能なオブジェクトの複数のバージョンを作成できるようになります。エディションが有効でないスキーマ内のエディション化可能なオブジェクトは、エディション化できません。
FOR句を使用すると、ユーザーが作成できるエディション化可能オブジェクトについて、1つ以上のオブジェクト・タイプを指定できます。object_typeの有効な値のリストを表示するには、V$EDITIONABLE_TYPES動的パフォーマンス・ビューを問い合せます。FOR句を省略すると、ユーザーは、すべてのエディション化可能オブジェクト・タイプのエディション化可能オブジェクトを作成できるようになります。
関連項目:
V$EDITIONABLE_TYPES動的パフォーマンス・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
エディションを有効にするスキーマ内にエディション化が可能でないオブジェクトが含まれており、そのオブジェクトがスキーマ内のエディション化可能なオブジェクトに依存している場合は、FORCEを指定して、このスキーマのエディションを有効にする必要があります。この場合、エディションを有効にするスキーマ内にある、エディション化可能なタイプのオブジェクトに依存するオブジェクトのうち、エディション化が可能でないオブジェクトは、すべて無効になります。
[HTTP] DIGEST句
この句を使用すると、ユーザーのHTTP Digestアクセス認証を有効または無効にできます。
-
HTTP Digestアクセス認証を有効にする場合は、
ENABLEを指定します。この句を指定した後、ユーザーのパスワードを変更する必要があります。これにより、データベースで新しいパスワードのHTTP Digest検証が生成されます。このようにすることによってのみ、HTTP Digestアクセス認証が有効になります。この句を発行した後でユーザーのパスワードが確実に変更されるようにする1つの方法は、HTTPDIGESTENABLE句と同じ文内で、次のようにPASSWORDEXPIRE句を指定することです。ALTER USER user PASSWORD EXPIRE HTTP DIGEST ENABLE;これにより、ユーザーが次回データベースにログインしようとすると、新しいパスワードを要求されます。その後、ユーザーのHTTP Digestアクセス認証が有効になります。
-
ユーザーのHTTP Digestアクセス認証を無効にする場合は、
DISABLEを指定します。この句を有効にするために、ユーザーのパスワードを変更する必要はありません。DISABLE句を指定すると、ディクショナリ表からHTTPダイジェストが削除されます。ALTER USER user PASSWORD EXPIRE HTTP DIGEST DISABLE;
この句の詳細は、CREATE USERのドキュメントの「[HTTP] DIGEST句」を参照してください。
CONTAINER句
現在のコンテナがPDBである場合、CONTAINER = CURRENTを指定すると、現在のコンテナ内で、ローカル・ユーザーの属性、または共通ユーザーのコンテナ固有の属性(デフォルト表領域など)を変更できます。現在のコンテナがルートである場合は、CONTAINER = ALLを指定することによって、CDB全体の共通ユーザーの属性を変更できます。現在のコンテナがPDBであるときにこの句を省略した場合、デフォルトはCONTAINER = CURRENTです。現在のコンテナがルートであるときにこの句を省略した場合、デフォルトはCONTAINER = ALLです。
CDBの共通ユーザーの変更の制限事項
共通ユーザーの特定の属性は、CDB内の一部のコンテナに限定するのではなく、すべてのコンテナに対して変更する必要があります。そのため、次のいずれかの句を使用して共通ユーザーを変更にするときには、ルートに接続し、CONTAINER=ALLを指定することによって、すべてのコンテナを変更するようにしてください。
-
IDENTIFIED句 -
PASSWORD句 -
[HTTP]DIGEST句
container_data_clause
container_data_clauseを使用すると、共通ユーザーのCONTAINER_DATA属性を設定および変更できます。FOR句を使用すると、デフォルトのCONTAINER_DATA属性を設定または変更するのか、オブジェクト固有のCONTAINER_DATA属性を設定または変更するのかを指定できます。これらの属性によって決定されるコンテナ・セット(このセットからのルートの除外は不可)のデータが、現在のセッションがルートであるときに、CONTAINER_DATAオブジェクトを介して、指定した共通ユーザーに表示されます。
container_data_clauseを指定するには、現在のセッションがルートである必要があります。また、CONTAINER = CURRENTを指定する必要があります。
SET CONTAINER_DATA
この句を使用すると、デフォルトのCONTAINER_DATA属性、または共通ユーザーのオブジェクト固有のCONTAINER_DATA属性を設定できます。この句を使用すると、CONTAINER_DATA属性に既存の値がある場合は、その値が置換されます。
container_nameを使用すると、ユーザーがアクセスできるようになる1つ以上のコンテナを指定できます。
ALLを使用すると、ユーザーは、CDBに含まれる現在または将来のすべてのコンテナにアクセスできるようになります。
DEFAULTを使用すると、次に示すデフォルトの動作を指定できます。
-
デフォルトの
CONTAINER_DATA属性の場合、ユーザーは、現在のコンテナ(つまり、ルート)と、CDB全体にアクセスできるようになります。 -
オブジェクト固有の
CONTAINER_DATA属性の場合、データベースはユーザーのデフォルトのCONTAINER_DATA属性を使用します。
ノート:
CONTAINER_DATA属性はDEFAULTに設定されていると、DBA_CONTAINER_DATAビューに表示されません。
ADD CONTAINER_DATA
この句を使用すると、デフォルトのCONTAINER_DATA属性、または共通ユーザーのオブジェクト固有のCONTAINER_DATA属性にコンテナを追加できます。container_nameを使用すると、追加するコンテナを1つ以上指定できます。
この句は、デフォルトのCONTAINER_DATA属性にALLを設定しているときには指定できません。デフォルトのCONTAINER_DATA属性にDEFAULTを設定しているときに、この句を使用すると、コンテナのセットにCDB$ROOTが自動的に追加されます(このセットにCDB$ROOTがすでに含まれていない場合)。
この句は、オブジェクト固有のCONTAINER_DATA属性をALLまたはDEFAULTに設定されているときには使用できません。
REMOVE CONTAINER_DATA
この句を使用すると、デフォルトのCONTAINER_DATA属性、または共通ユーザーのオブジェクト固有のCONTAINER_DATA属性からコンテナを削除できます。container_nameを使用すると、削除するコンテナを1つ以上指定できます。
この句は、デフォルトのCONTAINER_DATA属性またはオブジェクト固有のCONTAINER_DATA属性をALLまたはDEFAULTに設定しているときには使用できません。
FOR container_data_object
FOR句を指定すると、共通ユーザーのcontainer_data_objectのオブジェクト固有のCONTAINER_DATA属性を設定および変更できます。container_data_objectは、CONTAINER_DATA表またはビューであることが必要です。schemaを省略すると、そのcontainer_data_objectは自分のスキーマ内にあるとみなされます。
FOR句を省略すると、共通ユーザーのデフォルトのCONTAINER_DATA属性を設定および変更できるようになります。
関連項目:
PDBオブジェクトに関する情報が共通ユーザーに表示されるようにする方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
proxy_clause
proxy_clauseを使用すると、エンタープライズ・ユーザー(データベースの外側のユーザー)またはデータベース・プロキシ(別のデータベース・ユーザー)が、変更対象のデータベース・ユーザーとして、どのように接続できるようにするかを制御できます。
GRANT CONNECT THROUGH
GRANT CONNECT THROUGHを指定すると、接続を許可できます。
REVOKE CONNECT THROUGH
REVOKE CONNECT THROUGHを指定すると、接続を禁止できます。
ENTERPRISE USER
この句を使用すると、userを、エンタープライズ・ユーザーがプロキシ使用できるように公開できます。Oracle Internet Directoryを担当する管理者は、userの代理として作業するエンタープライズ・ユーザーに権限を適切に付与する必要があります。
db_user_proxy
この句を使用すると、userを、データベース・ユーザーdb_user_proxy (プロキシ)がプロキシ使用できるように公開できます。
-
プロキシは、userに直接付与されたすべての権限を持ちます。
-
db_user_proxy_clausesのWITH句を指定してプロキシをuserの一部のロールまたはロールなしに制限した場合を除き、プロキシはuserに関連付けられているすべてのロールを持ちます。プロキシに関連付けられている各ロールについて、デフォルトでログイン時にuserに対してロールが有効化される場合、プロキシに対してもデフォルトでログイン時にそのロールが有効化されます。
db_user_proxy_clauses
WITH句を指定して、プロキシをuserに関連付けられている一部のロールまたはロールなしに制限し、AUTHENTICATION REQUIRED句を使用して、認証が必要かどうかを指定します。
WITH ROLE
WITH ROLE role_nameを使用すると、プロキシは指定したユーザーとして接続でき、role_nameで指定されたロールのみをアクティブにできますこの句には、userに関連付けられているロールのみを含めることができます。
WITH ROLE ALL EXCEPT
WITH ROLE ALL EXCEPT role_nameを使用すると、プロキシは指定したユーザーとして接続でき、role_nameで指定されたロール以外の、このユーザーに対応付けられたすべてのロールをアクティブにできます。この句には、userに関連付けられているロールのみを含めることができます。
WITH NO ROLES
WITH NO ROLESを使用すると、プロキシは指定したユーザーとして接続できますが、接続後にそのユーザーのロールを1つでもアクティブにすることは禁止されます。
AUTHENTICATION REQUIRED句を指定しない場合、Oracle Databaseは、ユーザーの認証にプロキシを想定しません。この句は、ユーザーが指定されたプロキシを介して認証される場合に、ユーザーの認証資格証明が提示される必要があることを示しています。資格証明は、パスワードです。
以前のリリースの構文に出現したAUTHENTICATED USING句は非推奨になり、必要でなくなりました。AUTHENTICATED USING PASSWORD句を指定した場合、AUTHENTICATION REQUIRED句に変換されます。AUTHENTICATED USING CERTIFICATE句またはAUTHENTICATED USING DISTINGUISHED NAME句を指定することは、AUTHENTICATION REQUIRED句を省略することと同じです。
関連項目:
-
データベース・セキュリティの概要および中間層システムおよびプロキシ認証の詳細は、『Oracleセキュリティ概要』を参照してください。
-
プロキシおよびデータベースの使用方法の詳細は、『Oracle Databaseセキュリティ・ガイド』および「プロキシ・ユーザー: 例」を参照してください。
例
ユーザー識別の変更: 例
次の文は、ユーザーsidney (「データベース・ユーザーの作成: 例」で作成)のパスワードをsecond_2nd_pwdに、デフォルト表領域を表領域exampleに変更します。
ALTER USER sidney
IDENTIFIED BY second_2nd_pwd
DEFAULT TABLESPACE example;
次の文は、new_profileプロファイル(「プロファイルの作成: 例」で作成)をサンプル・ユーザーshに割り当てます。
ALTER USER sh
PROFILE new_profile;
後続のセッションでは、shはnew_profileプロファイルの制限に従います。
次の文は、shに直接付与されているすべてのロール(dw_managerロールを除く)をデフォルト・ロールに設定します。
ALTER USER sh
DEFAULT ROLE ALL EXCEPT dw_manager;
shの次のセッションの開始時には、dw_manager以外でshに直接付与されているすべてのロールが使用可能になります。
ユーザー認証の変更: 例
次の文は、ユーザーapp_user1(「データベース・ユーザーの作成: 例」で作成)の認証メカニズムを変更します。
ALTER USER app_user1 IDENTIFIED GLOBALLY AS 'CN=tom,O=oracle,C=US';
次の文は、ユーザーsidneyのパスワードを期限切れにします。
ALTER USER sidney PASSWORD EXPIRE;
PASSWORD EXPIREを使用してデータベース・ユーザーのパスワードを期限切れにした場合、そのユーザー(またはDBA)は、期限切れの後でデータベースにログインする際、パスワードを変更する必要があります。ただし、SQL*Plusなどのツール製品を使用した場合、期限切れの後の最初のログイン時に、パスワードを変更できます。
表領域グループの割当て: 例
次の文は、tbs_grp_01 (「表領域グループへの一時表領域の追加: 例」で作成)を表領域グループとしてユーザーshに割り当てます。
ALTER USER sh TEMPORARY TABLESPACE tbs_grp_01;
プロキシ・ユーザー: 例
次の文は、ユーザーapp_user1を変更します。例では、app_user1がプロキシ・ユーザーshを使用して接続できます。また、プロキシshを使用して接続したときに、app_user1がwarehouse_userロール(「ロールの作成: 例」で作成)を有効にできます。
ALTER USER app_user1 GRANT CONNECT THROUGH sh WITH ROLE warehouse_user;
基本的な構文を示すため、サンプル・データベースSales Historyのユーザー(sh)をプロキシとして使用します。通常、プロキシ・ユーザーは、アプリケーション・サーバーまたは中間層のエンティティに存在します。アプリケーション・サーバーを経由して、アプリケーション・ユーザーとデータベースの間のインタフェースを作成する場合の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。
関連項目:
-
app_userユーザーの作成方法の詳細は、「外部データベース・ユーザーの作成: 例」を参照してください。 -
dw_userロールの作成方法の詳細は、「ロールの作成: 例」を参照してください。
次の文は、ユーザーapp_user1がプロキシ・ユーザーshを使用して接続する権限を取り消します。
ALTER USER app_user1 REVOKE CONNECT THROUGH sh;
次の仮想例は、プロキシ認証の他の方法を示します。
ALTER USER sully GRANT CONNECT THROUGH OAS1 AUTHENTICATED USING PASSWORD;
次の例では、ユーザーapp_user1をエンタープライズ・ユーザーがプロキシ使用できるように公開します。エンタープライズ・ユーザーは、Oracle Internet Directory管理者が適切な権限を付与するまでは、app_user1の代理として作業することができません。
ALTER USER app_user1 GRANT CONNECT THROUGH ENTERPRISE USERS;



