用途
ALTER
USER
を使用すると、次の操作を実行できます。
データベース・ユーザーの認証またはデータベース・リソースの特性を変更します。
プロキシ・サーバーが認証なしでクライアントとして接続することを許可します。
Oracle Automatic Storage Management (Oracle ASM)クラスタで、ユーザーのパスワードを現在のノードのOracle ASMインスタンスに対してローカルなパスワード・ファイルで変更します。
関連項目: ユーザーの認証方式の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
前提条件
通常、ALTER
USER
システム権限が必要です。ただし、現行ユーザーはこの権限がない場合でも自分のパスワードは変更できます。
Oracle ASMインスタンス・パスワード・ファイルで自分以外のユーザーのパスワードを変更するには、AS
SYSASM
として認証されている必要があります。
CONTAINER
句を指定する場合は、マルチテナント・コンテナ・データベース(CDB)に接続している必要があります。現在のコンテナがルートである場合は、CONTAINER
=
ALL
またはCONTAINER
=
CURRENT
を指定できます。現在のコンテナがプラガブル・データベース(PDB)である場合は、CONTAINER
=
CURRENT
のみ指定可能です。
container_data_clause
を使用してCONTAINER_DATA
属性を設定および変更する場合は、CDBに接続している必要があります。また、現在のコンテナがルートである必要があります。
構文
alter_user::=
(size_clause::=を参照)
proxy_clause ::=
セマンティクス
この項で説明するキーワード、パラメータおよび句は、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エンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。また、「ユーザー識別の変更例:」および「ユーザー認証の変更例:」も参照してください。 |
この句を使用すると、ユーザーの永続セグメントの表領域の割当てまたは再割当てを行うことができます。この句は、データベース用に指定されているデフォルトの表領域を上書きします。
デフォルトの表領域の制限事項: ローカル管理の一時表領域(UNDO表領域を含む)またはディクショナリ管理の一時表領域は、ユーザーのデフォルトの表領域として指定できません。
この句を使用すると、ユーザーの一時セグメントの表領域または表領域グループの割当てまたは再割当てを行うことができます。
tablespace
に、ユーザーの一時セグメント表領域を指定します。CDBに接続しているときに、CDB$DEFAULT
を指定すると、CDB全体のデフォルト一時表領域を使用できます。
tablespace_group_name
を指定すると、ユーザーは、tablespace_group_name
で指定された表領域グループ内の任意の表領域に一時セグメントを保存できるようになります。
ユーザーの一時表領域の制限事項: ユーザーの一時表領域として割り当てる表領域、または再度割り当てる表領域は、標準的なブロック・サイズの一時表領域である必要があります。
ログイン時にデフォルトによってユーザーに付与されるロールを指定します。この句では、GRANT
文を使用してユーザーに直接付与されているロール、またはCREATE
ROLE
権限を持つユーザーが作成したロールのみ指定できます。DEFAULT
ROLE
句を使用して次のロールを指定することはできません。
ユーザーに付与されていないロール
他のロールを介して付与されているロール
外部サービス(オペレーティング・システムなど)またはOracle Internet Directoryによって管理されるロール
パスワード認証されるロールや保護アプリケーション・ロールなど、SET
ROLE
文によって使用可能になるロール
CDBの共通ユーザーへのデフォルト・ロールの割当て 現在のコンテナや、CDB内のすべてのコンテナの共通ユーザーに割り当てられたデフォルト・ロールを変更できます。
すべてのコンテナの共通ユーザーにデフォルト・ロールを割り当てているときには、role
は、共通ユーザーに共通に付与された共通ロールにする必要があります。
現在のコンテナの共通ユーザーにデフォルト・ロールを割り当てているときには、role
は、次のいずれかのロールにする必要があります。
現在のコンテナの共通ユーザーに付与されたローカル・ロール
共通ユーザーに付与された共通ロール(共通に付与されたものか、現在のコンテナでローカルに付与されたもののいずれか)
ENABLE EDITIONS
この句は元に戻すことができません。ENABLE
EDITIONS
を指定すると、ユーザーは、エディションを使用しているスキーマ内で、エディション化可能なオブジェクトの複数のバージョンを作成できるようになります。エディションが有効でないスキーマ内のエディション化可能なオブジェクトは、エディション化できません。
FOR
句を使用すると、ユーザーが作成できるエディション化可能オブジェクトについて、1つ以上のオブジェクト・タイプを指定できます。object_type
の有効な値のリストを表示するには、V$EDITIONABLE_TYPES
動的パフォーマンス・ビューを問い合せます。FOR
句を省略すると、ユーザーは、すべてのエディション化可能オブジェクト・タイプのエディション化可能オブジェクトを作成できるようになります。
関連項目: V$EDITIONABLE_TYPES動的パフォーマンス・ビューの詳細は、『Oracle Databaseリファレンス』 を参照してください。 |
エディションを有効にするスキーマ内にエディション化が可能でないオブジェクトが含まれており、そのオブジェクトがスキーマ内のエディション化可能なオブジェクトに依存している場合は、FORCE
を指定して、このスキーマのエディションを有効にする必要があります。この場合、エディションを有効にするスキーマ内にある、エディション化可能なタイプのオブジェクトに依存するオブジェクトのうち、エディション化が可能でないオブジェクトは、すべて無効になります。
CONTAINER句
現在のコンテナがPDBである場合、CONTAINER
=
CURRENT
を指定すると、現在のコンテナ内で、ローカル・ユーザーの属性、または共通ユーザーのコンテナ固有の属性(デフォルト表領域など)を変更できます。現在のコンテナがルートである場合は、CONTAINER
=
ALL
を指定することによって、CDB全体の共通ユーザーの属性を変更できます。現在のコンテナがPDBであるときにこの句を省略した場合、デフォルトはCONTAINER
=
CURRENT
です。現在のコンテナがルートであるときにこの句を省略した場合、デフォルトはCONTAINER
=
ALL
です。
CDBの共通ユーザー変更の制限事項: 共通ユーザーの特定の属性は、CDB内の一部のコンテナに限定するのではなく、すべてのコンテナに対して変更する必要があります。そのため、次のいずれかの句を使用して共通ユーザーを変更にするときには、ルートに接続し、CONTAINER=ALL
を指定することによって、すべてのコンテナを変更するようにしてください。
IDENTIFIED
句
PASSWORD
句
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
を使用すると、エンタープライズ・ユーザー(データベースの外側のユーザー)またはデータベース・プロキシ(別のデータベース・ユーザー)が、変更対象のデータベース・ユーザーとして、どのように接続できるようにするかを制御できます。
GRANT
CONNECT
THROUGH
を指定すると、接続を許可できます。
REVOKE
CONNECT
THROUGH
を指定すると、接続を禁止できます。
この句を使用すると、user
を、エンタープライズ・ユーザーがプロキシ使用できるように公開できます。Oracle Internet Directoryを担当する管理者は、user
の代理として作業するエンタープライズ・ユーザーに権限を適切に付与する必要があります。
この句を使用すると、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 AUTHENTICATION
REQUIRED
句を指定した場合を除き、Oracle Databaseはユーザーの認証にプロキシを想定しません。この句は、ユーザーが指定されたプロキシを介して認証される場合に、ユーザーの認証資格証明が提示される必要があることを示しています。資格証明は、パスワードです。
AUTHENTICATED USING AUTHENTICATED
USING
句は、以前のリリースの構文で使用されていましたが、非推奨になり、必要ではありません。AUTHENTICATED
USING
PASSWORD
句を指定した場合、AUTHENTICATION
REQUIRED
句に変換されます。AUTHENTICATED
USING
CERTIFICATE
句またはAUTHENTICATED
USING
DISTINGUISHED
NAME
句を指定することは、AUTHENTICATION
REQUIRED
句を省略することと同じです。
関連項目:
|
例
ユーザー識別の変更例: 次の文は、ユーザー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_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;