用途
CREATE
USER
文を使用すると、データベース・ユーザー(データベースにログイン可能なアカウント)を作成および構成でき、Oracle Databaseがそのユーザーによるアクセスを許可する方法が確立されます。
この文をOracle Automatic Storage Management (Oracle ASM)クラスタで発行すると、現行のノードのOracle ASMインスタンスに対してローカルなパスワード・ファイルに、ユーザーおよびパスワードの組合せを追加できます。各ノードのOracle ASMインスタンスでは、この文を使用して個々のパスワード・ファイルを更新できます。このパスワード・ファイル自体は、ORAPWD
ユーティリティで作成されている必要があります。
プロキシ・アプリケーションまたはアプリケーション・サーバーによって、データベースとユーザーを接続できます。構文および説明は、「ALTER USER」を参照してください。
前提条件
CREATE
USER
システム権限が必要です。CREATE
USER
文を使用して作成したユーザーの権限ドメインは空(権限を付与されていない状態)になります。Oracle Databaseにログオンするユーザーには、CREATE
SESSION
システム権限が必要です。そのため、ユーザーを作成した場合、必ずCREATE
SESSION
システム権限をそのユーザーに付与してください。詳細は、「GRANT」を参照してください。
AS
SYSASM
として認証されたユーザーのみが、このコマンドを発行して、Oracle ASMインスタンスのパスワード・ファイルを変更できます。
CONTAINER
句を指定する場合は、マルチテナント・コンテナ・データベース(CDB)に接続している必要があります。CONTAINER
=
ALL
を指定する場合は、現在のコンテナがルートである必要があります。CONTAINER
=
CURRENT
を指定するには、現在のコンテナがプラガブル・データベース(PDB)である必要があります。
セマンティクス
user
作成するユーザーの名前を指定します。この名前には、使用しているデータベース・キャラクタ・セットの文字のみを指定できます。また、「データベース・オブジェクトのネーミング規則」で説明した規則に従う必要があります。データベース・キャラクタ・セットにマルチバイト文字が含まれている場合でも、ユーザーにはシングルバイト文字を1つ以上使用することをお薦めします。
CDB以外では、ユーザー名の先頭をC##
またはc##
にできません。
CDBでは、ユーザー名の要件は次のとおりです。
Oracle Database 12cリリース1(12.1.0.1)では、共通ユーザーの名前は、C##
またはc##
から始める必要があり、ローカル・ユーザーの名前は、C##またはc##
から始めないでください
。
Oracle Database 12cリリース1(12.1.0.2)以降:
共通ユーザーの名前は、COMMON_USER_PREFIX
初期化パラメータで指定された接頭辞と大/小文字を区別しないで一致する文字から始める必要があります。デフォルトでは、接頭辞はC##
です。
ローカル・ユーザーの名前は、COMMON_USER_PREFIX初期化パラメータで指定された接頭辞と大/小文字を区別しないで一致する文字から始めないでください
。COMMON_USER_PREFIX
の値に関係なく、ローカル・ユーザーの名前の先頭にC##
またはc##
を使用できません。
注意: COMMON_USER_PREFIX の値が空の文字列である場合、共通またはローカル・ユーザー名に要件はありませんが、次の1つの例外があります。ローカル・ユーザーの名前の先頭にC## またはc## を使用できません。PDBを別のCDBに接続する場合または共通ユーザーの作成時に閉じられたPDBを開く場合、ローカルおよび共通ユーザーの名前が競合する可能性があるため、空の文字列を使用しないことをお薦めします。 |
注意: ユーザー名およびパスワードは、ご使用のプラットフォームに応じて、ASCIIまたはEBCDIC文字のみでエンコードすることをお薦めします。 |
IDENTIFIED句
IDENTIFIED
句を使用すると、Oracle Databaseによるユーザーの認証方法を指定できます。
BY
password
句を使用すると、ローカル・ユーザーを作成し、データベースへのログイン時に、パスワードの指定が必要であることを指定できます。パスワードは、大/小文字が区別されます。この後に、ユーザーをデータベースに接続するために使用される
CONNECT
文字列では、このCREATE
USER
文または後述のALTER
USER
文で使用されているものと同じ文字(大文字、小文字または混在)を使用してパスワードを指定する必要があります。パスワードには、二重引用符(")およびリターン文字を除く、データベース・キャラクタ・セットのシングルバイト文字、マルチバイト文字、特殊文字またはこれらの組合せを含めることができます。パスワードがアルファベット以外の文字で始まるか、英数字、アンダースコア(_)、ドル記号($)および番号記号(#)以外の文字を含む場合は、その文字を二重引用符で囲む必要があります。そうでない場合は、任意でパスワードを二重引用符で囲むこともできます。
関連項目: パスワードでの大/小文字の区別、パスワードの複雑さ、その他パスワードに関するガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
Oracle Databaseの、3つの複雑なパスワード検証ルーチンの1つを使用していないかぎり、パスワードは、「データベース・オブジェクトのネーミング規則」にある規則に従う必要があります。これらのルーチンでは、通常のネーミング規則より複雑な文字の組合せが要求されます。これらのルーチンは、UTLPWDMG.SQL
スクリプトを使用して実装します。詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
注意: ユーザー名およびパスワードは、ご使用のプラットフォームに応じて、ASCIIまたはEBCDIC文字のみでエンコードすることをお薦めします。 |
関連項目: パスワード管理およびパスワード保護の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
EXTERNALLY
を指定すると、外部ユーザーを作成できます。このユーザーは、外部サービス(オペレーティング・システムやサード・パーティのサービスなど)で認証する必要があります。その場合、オペレーティング・システムまたはサード・パーティ・サービスによる認証を使用して、特定の外部ユーザーが特定のデータベース・ユーザーへのアクセス権を所有することが可能になります。
AS 'certificate_DN' この句はSSL認証の外部ユーザーに必須で、そのユーザーに対してのみ使用されます。certificate_DN
は、ユーザーのウォレット内のユーザーのPKI証明書にある識別名です。certificate_DN
の最大長は1024文字です。
AS 'kerberos_principal_name' この句はKerberos認証の外部ユーザーに必須で、そのユーザーに対してのみ使用されます。kerberos_principal_name
の最大長は1024文字です。
注意: ご使用のオペレーティング・システムにログインする際のセキュリティが十分でない場合は、IDENTIFIED EXTERNALLY を使用しないことをお薦めします。 |
外部ユーザーの作成の制限事項 次の制限事項は外部ユーザーの作成に適用されます。
ユーザーSYS
を外部ユーザーにすることはできません。
Oracle ASMでは、外部ユーザーの作成はサポートされません。
GLOBALLY
句を使用すると、グローバル・ユーザーを作成することができます。このユーザーは、エンタープライズ・ディレクトリ・サービス(Oracle Internet Directory)によって認可される必要があります。
directory_DN
文字列は、次のいずれかの形式になります。
このユーザーを識別するエンタープライズ・ディレクトリ・サービスのX.509の名前。文字列は、CN=
username,other_attributes
という形式である必要があります。other_attributes
は、ディレクトリ内のユーザーの識別名(DN)以外の部分です。この形式を使用すると、プライベート・グローバル・スキーマが作成されます。
NULL文字列(' ')。エンタープライズ・ディレクトリ・サービスによって、認証されたグローバル・ユーザーがこのデータベース・スキーマにマップされ、適切なロールが割り当てられます。この形式を使用すると、GLOBALLY
キーワードのみを指定する場合と同様に、共有グローバル・スキーマが作成されます。
directory_DN
の最大長は1024文字です。
特定のユーザーとして接続し、ALTER
USER
文を使用してユーザーのロールをアクティブにするために、アプリケーション・サーバーの機能を制御できます。
グローバル・ユーザーの作成の制限事項 Oracle ASMでは、グローバル・ユーザーの作成はサポートされません。
ユーザーのスキーマ内に作成されるオブジェクトを格納するデフォルトの表領域を指定します。この句を省略した場合、ユーザーのオブジェクトはデータベースのデフォルトの表領域に格納されます。データベースのデフォルトの表領域が指定されていない場合、ユーザーのオブジェクトはSYSTEM
表領域に格納されます。
デフォルトの表領域の制限事項: ローカル管理の一時表領域(UNDO表領域を含む)またはディクショナリ管理の一時表領域は、ユーザーのデフォルトの表領域として指定できません。
関連項目:
|
ユーザーの一時セグメントが確保される表領域または表領域グループを指定します。この句を省略した場合、ユーザーの一時セグメントはデータベースのデフォルトの一時表領域に格納されます。データベースのデフォルトの一時表領域が指定されていない場合は、SYSTEM
表領域に格納されます。
tablespace
に、ユーザーの一時セグメント表領域を指定します。CDBに接続しているときに、CDB$DEFAULT
を指定すると、CDB全体のデフォルト一時表領域を使用できます。
tablespace_group_name
を指定すると、ユーザーは、tablespace_group_name
で指定された表領域グループ内の任意の表領域に一時セグメントを保存できるようになります。
一時表領域の制限事項: この句には、次の制限事項があります。
表領域は一時表領域で、標準ブロック・サイズである必要があります。
表領域は、UNDO表領域または自動セグメント領域管理の表領域にできません。
関連項目:
|
QUOTA
句を使用すると、ユーザーが表領域内に割り当てることができる最大サイズを指定できます。
CREATE
USER
文では、複数の表領域に対して複数のQUOTA
句を指定できます。
UNLIMITED
を使用すると、ユーザーは、表領域の領域を無制限に割り当てることができます。
指定できる領域の最大量は2テラバイト(TB)です。より多くの領域が必要な場合は、UNLIMITED
を指定します。
QUOTA句の制限事項: この句は、一時表領域には指定できません。
ユーザーに割り当てるプロファイルを指定します。このプロファイルによって、ユーザーが使用できるデータベース・リソース容量が制限されます。この句を省略した場合、DEFAULT
プロファイルがユーザーに割り当てられます。
注意: データベース・リソース制限を設定する場合、このSQLプロファイルではなく、データベース・リソース・マネージャを使用することをお薦めします。データベース・リソース・マネージャを使用すると、リソース使用の管理および監査を柔軟に行うことができます。データベース・リソース・マネージャの詳細は、『Oracle Database管理者ガイド』を参照してください。 |
PASSWORD
EXPIRE
を指定すると、ユーザーのパスワードを期限切れにできます。この設定によって、ユーザーがデータベースにログインする前に、ユーザーまたはDBAはパスワードの変更が必要となります。
ACCOUNT
LOCK
を指定すると、ユーザー・アカウントをロックし、アクセスを禁止できます。ACCOUNT
UNLOCK
を指定すると、ユーザー・アカウントのロックを解除し、アカウントへのアクセスを許可できます。デフォルトはACCOUNT
UNLOCK
です。
ENABLE EDITIONS
この句は元に戻すことができません。ENABLE
EDITIONS
を指定すると、ユーザーは、エディションを使用しているスキーマ内で、エディション化可能なオブジェクトの複数のバージョンを作成できるようになります。エディションが有効でないスキーマ内のエディション化可能なオブジェクトは、エディション化できません。
エディションを使用可能にする場合の制限事項: シード・データベースのサンプル・スキーマを除いて、Oracle提供のスキーマはすべて、エディションを使用可能にできません。
CONTAINER句
CONTAINER
句は、CDBに接続しているときに適用されます。ただし、デフォルト値が使用できる唯一の値であるため、CONTAINER
句を指定する必要はありません。
共通ユーザーを作成するには、ルートに接続する必要があります。ルートに接続する場合にデフォルトのCONTAINER
=
ALL
をオプションで指定できます。
ローカル・ユーザーを作成するには、PDBに接続する必要があります。PDBに接続する場合にデフォルトのCONTAINER
=
CURRENT
をオプションで指定できます。
共通ユーザーの作成時には、次の句を使用して指定したデフォルトの表領域、一時表領域またはプロファイルがいずれも、CDBに属するすべてのコンテナ内に存在している必要があります。
DEFAULT
TABLESPACE
TEMPORARY
TABLESPACE
QUOTA
PROFILE
これらのオブジェクトが存在していないコンテナがあると、CREATE
USER
文は失敗します。
次のすべての例では、example
表領域を使用します。この表領域はシード・データベースに存在し、サンプル・スキーマにアクセス可能です。
データベース・ユーザーの作成例: PASSWORD
EXPIRE
を指定して新規ユーザーを作成する場合、データベースにログインする前に、そのユーザーのパスワードを変更する必要があります。次の文は、sidney
ユーザーを作成します。
CREATE USER sidney IDENTIFIED BY out_standing1 DEFAULT TABLESPACE example QUOTA 10M ON example TEMPORARY TABLESPACE temp QUOTA 5M ON system PROFILE app_user PASSWORD EXPIRE;
前述のユーザーsidney
には次の特性があります。
パスワードout_standing1
10MBの割当て制限のあるデフォルト表領域example
一時表領域temp
5MBの割当て制限のある表領域SYSTEM
へのアクセス
プロファイルapp_user
(「プロファイルの作成例:」で作成)によって定義されているデータベース・リソースの制限
sidney
がデータベースにログインする前に変更する必要がある期限切れのパスワード
外部データベース・ユーザーの作成例: 次の例は、データベースにアクセスする前に外部ソースによって識別される必要のある、外部ユーザーを作成します。
CREATE USER app_user1 IDENTIFIED EXTERNALLY DEFAULT TABLESPACE example QUOTA 5M ON example PROFILE app_user;
ユーザーapp_user1
には次の追加の特性があります。
デフォルトの表領域example
デフォルトの一時表領域example
表領域example
に5MBの領域、およびデータベースの一時表領域に無制限の割当て
プロファイルapp_user
によって定義されているデータベース・リソースの制限
オペレーティング・システム・アカウントによってのみアクセス可能な別のユーザーを作成する場合、ユーザー名に初期化パラメータOS_AUTHENT_PREFIX
値の接頭辞を付けます。たとえば、この値が「ops$
」の場合、次の文を使用して、外部で識別されるユーザーexternal_user
を作成できます。
CREATE USER ops$external_user IDENTIFIED EXTERNALLY DEFAULT TABLESPACE example QUOTA 5M ON example PROFILE app_user;
グローバル・データベース・ユーザーの作成例: 次の例は、グローバル・ユーザーを作成します。グローバル・ユーザーを作成する場合、エンタープライズ・ディレクトリ・サーバーでユーザーを識別するX.509の名前を指定することができます。
CREATE USER global_user IDENTIFIED GLOBALLY AS 'CN=analyst, OU=division1, O=oracle, C=US' DEFAULT TABLESPACE example QUOTA 5M ON example;
CDB内の共通ユーザーの作成: 次の例では、c##comm_user
という共通ユーザーをCDBに作成します。このCREATE USER
文を実行する前に、CDBに属するすべてのコンテナに表領域example
とtemp_tbs
が存在していることを確認してください。
CREATE USER c##comm_user IDENTIFIED BY comm_pwd DEFAULT TABLESPACE example QUOTA 20M ON example TEMPORARY TABLESPACE temp_tbs;
ユーザーcomm_user
には次の追加の特性があります。
パスワードcomm_pwd
20MBの割当て制限のあるデフォルト表領域example
一時表領域temp_tbs