CREATE USER
目的
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では、ユーザー名の要件は次のとおりです。
-
共通ユーザーの名前は、
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
BY password句を使用すると、ローカル・ユーザーを作成し、データベースへのログイン時に、パスワードの指定が必要であることを指定できます。パスワードは大/小文字が区別されます。この後に、ユーザーをデータベースに接続するために使用されるCONNECT文字列では、このCREATE USER文または後述のALTER USER文で使用されているものと同じ文字(大文字、小文字または混在)を使用してパスワードを指定する必要があります。パスワードには、二重引用符(")およびリターン文字を除く、データベース文字セットのシングルバイト文字、マルチバイト文字、特殊文字またはこれらの組合せを含めることができます。パスワードがアルファベット以外の文字で始まるか、英数字、アンダースコア(_)、ドル記号($)および番号記号(#)以外の文字を含む場合は、その文字を二重引用符で囲む必要があります。そうでない場合は、任意でパスワードを二重引用符で囲むこともできます。
関連項目:
パスワードでの大/小文字の区別、パスワードの複雑さ、その他パスワードに関するガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。
Oracle Databaseの、3つの複雑なパスワード検証ルーチンの1つを使用していないかぎり、パスワードは、「データベース・オブジェクトのネーミング規則」の項で説明した規則に従う必要があります。これらのルーチンでは、通常のネーミング規則より複雑な文字の組合せが要求されます。これらのルーチンは、UTLPWDMG.SQLスクリプトを使用して実装します。詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
ノート:
ユーザー名およびパスワードは、ご使用のプラットフォームに応じて、ASCIIまたはEBCDIC文字のみでエンコードすることをお薦めします。
関連項目:
パスワード管理およびパスワード保護の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
[HTTP] DIGEST句
この句を使用すると、ユーザーのHTTP Digestアクセス認証をENABLEまたはDISABLEにできます。デフォルトはDISABLEです。
HTTPキーワードはオプションで、セマンティクスを明確にするために使用されます。
[HTTP] DIGEST句の制限事項
この句は、外部ユーザーまたはグローバル・ユーザーには指定できません。
EXTERNALLY句
EXTERNALLYを指定すると、外部ユーザーを作成できます。このユーザーは、外部サービス(オペレーティング・システムやサード・パーティのサービスなど)で認証する必要があります。その場合、オペレーティング・システムまたはサード・パーティ・サービスによる認証を使用して、特定の外部ユーザーが特定のデータベース・ユーザーへのアクセス権を所有することが可能になります。
AS 'certificate_DN'
この句はSSL認証の外部ユーザーに必須で、このユーザーに対してのみ使用されます。certificate_DNは、ユーザーのウォレット内のユーザーのPKI証明書にある識別名です。certificate_DNの最大長は1024文字です。
AS 'kerberos_principal_name'
この句はKerberos認証の外部ユーザーに必須で、このユーザーに対してのみ使用されます。kerberos_principal_nameの最大長は1024文字です。
ノート:
ご使用のオペレーティング・システムにログインする際のセキュリティが十分でない場合は、IDENTIFIED EXTERNALLYを使用しないことをお薦めします。
外部ユーザーの作成の制限事項
Oracle ASMでは、外部ユーザーの作成はサポートされません。
関連項目:
-
外部で識別されるユーザーの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。
GLOBALLY句
GLOBALLY句を使用すると、グローバル・ユーザーを作成することができます。このユーザーは、エンタープライズ・ディレクトリ・サービス(Oracle Internet Directory)によって認可される必要があります。
directory_DN文字列は、次のいずれかの形式になります。
-
このユーザーを識別するエンタープライズ・ディレクトリ・サービスのX.509の名前。文字列は、
CN=username,other_attributesという形式である必要があります。other_attributesは、ディレクトリ内のユーザーの識別名(DN)以外の部分です。このフォームはLDAP Data Interchange Format(LDIF)を使用しており、プライベート・グローバル・スキーマを作成します。 -
NULL文字列(' ')。エンタープライズ・ディレクトリ・サービスによって、認証されたグローバル・ユーザーがこのデータベース・スキーマにマップされ、適切なロールが割り当てられます。この形式を使用すると、
GLOBALLYキーワードのみを指定する場合と同様に、共有グローバル・スキーマが作成されます。
directory_DNの最大長は1024文字です。
特定のユーザーとして接続し、ALTER USER文を使用してユーザーのロールをアクティブにするために、アプリケーション・サーバーの機能を制御できます。
グローバル・ユーザーの作成の制限事項
Oracle ASMでは、グローバル・ユーザーの作成はサポートされません。
関連項目:
-
グローバル・ユーザーの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
NO AUTHENTICATION句
パスワードがないためログインできないスキーマを作成するには、NO AUTHENTICATION句を使用します。これはスキーマ専用アカウントを対象としており、デフォルト・パスワードを削除しパスワードのローテーションの必要性を解消することで、メンテナンス作業が軽減されます。
DEFAULT COLLATION句
この句を使用すると、ユーザーが所有するスキーマのデフォルトの照合を指定できます。デフォルトの照合は、スキーマに後で作成される表、ビューおよびマテリアライズド・ビューに割り当てられます。
collation_nameには、有効な名前付き照合または疑似照合を指定します。
この句を省略すると、ユーザーが所有するスキーマのデフォルトの照合がUSING_NLS_COMP疑似照合に設定されます。
この句を上書きして、特定の表、マテリアライズド・ビューまたはビューに別のデフォルトの照合を割り当てるには、表、マテリアライズド・ビューまたはビューにCREATE文またはALTER文のDEFAULT COLLATION句を指定します。また、データベース・セッション中にすべてのスキーマのデフォルトの照合を上書きするには、このセッションに対するデフォルトの照合を設定します。詳細は、「ALTER SESSION」の「DEFAULT_COLLATION」句を参照してください。
DEFAULT COLLATION句を指定できるのは、COMPATIBLE初期化パラメータが12.2以上に設定され、かつMAX_STRING_SIZE初期化パラメータがEXTENDEDに設定されている場合のみです。
DEFAULT TABLESPACE句
ユーザーのスキーマ内に作成されるオブジェクトを格納するデフォルトの表領域を指定します。この句を省略した場合、ユーザーのオブジェクトはデータベースのデフォルトの表領域に格納されます。データベースのデフォルトの表領域が指定されていない場合、ユーザーのオブジェクトはSYSTEM表領域に格納されます。
デフォルト表領域の制限事項
ローカル管理の一時表領域(UNDO表領域を含む)またはディクショナリ管理の一時表領域は、ユーザーのデフォルトの表領域として指定できません。
関連項目:
-
表領域の概要およびUNDO表領域の詳細は、「CREATE TABLESPACE」を参照してください。
-
デフォルトの表領域をユーザーに割り当てる方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
[LOCAL] TEMPORARY TABLESPACE句
ユーザーの一時セグメントが確保される表領域または表領域グループを指定します。この句を省略した場合、ユーザーの一時セグメントはデータベースのデフォルトの一時表領域に格納されます。データベースのデフォルトの一時表領域が指定されていない場合は、SYSTEM表領域に格納されます。
-
tablespaceに、ユーザーの一時セグメント表領域を指定します。共有一時表領域を指定するには、TEMPORARYTABLESPACEを指定します。ローカル一時表領域を指定するには、LOCALTEMPORARYTABLESPACEを指定します。CDBに接続しているときに、CDB$DEFAULTを指定すると、CDB全体のデフォルト一時表領域を使用できます。 -
tablespace_group_nameを指定すると、ユーザーは、tablespace_group_nameで指定された表領域グループ内の任意の表領域に一時セグメントを保存できるようになります。ローカル一時表領域を表領域グループに含めることはできません。
一時表領域の制限事項
この句には、次の制限事項があります。
-
表領域は一時表領域で、標準ブロック・サイズである必要があります。
-
表領域は、UNDO表領域または自動セグメント領域管理の表領域にできません。
関連項目:
-
表領域グループの詳細は、『Oracle Database管理者ガイド』を参照してください。一時表領域をユーザーに割り当てる方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
-
UNDO表領域およびセグメント管理の詳細は、「CREATE TABLESPACE」を参照してください。
QUOTA句
QUOTA句を使用すると、ユーザーが表領域内に割り当てることができる最大サイズを指定できます。
CREATE USER文では、複数の表領域に対して複数のQUOTA句を指定できます。
UNLIMITEDを使用すると、ユーザーは、表領域の領域を無制限に割り当てることができます。
指定できる領域の最大量は2テラバイト(TB)です。より多くの領域が必要な場合は、UNLIMITEDを指定します。
QUOTA句の制限事項
この句は、一時表領域には指定できません。
関連項目:
この句の詳細は、「size_clause」を参照してください。表領域の割当て制限の指定については、『Oracle Databaseセキュリティ・ガイド』を参照してください。
PROFILE句
ユーザーに割り当てるプロファイルを指定します。このプロファイルによって、ユーザーが使用できるデータベース・リソース容量が制限されます。この句を省略した場合、DEFAULTプロファイルがユーザーに割り当てられます。
ノート:
データベース・リソース制限を設定する場合、このSQLプロファイルではなく、データベース・リソース・マネージャを使用することをお薦めします。データベース・リソース・マネージャを使用すると、リソース使用の管理および監査を柔軟に行うことができます。データベース・リソース・マネージャの詳細は、『Oracle Database管理者ガイド』を参照してください。
関連項目:
「GRANT」および「CREATE PROFILE」を参照してください。
PASSWORD EXPIRE句
PASSWORD EXPIREを指定すると、ユーザーのパスワードを期限切れにできます。この設定によって、ユーザーがデータベースにログインする前に、ユーザーまたはDBAはパスワードの変更が必要となります。
ACCOUNT句
ACCOUNT LOCKを指定すると、ユーザー・アカウントをロックし、アクセスを禁止できます。ACCOUNT UNLOCKを指定すると、ユーザー・アカウントのロックを解除し、アカウントへのアクセスを許可できます。デフォルトはACCOUNT UNLOCKです。
ENABLE EDITIONS
この句は元に戻すことができません。ENABLE EDITIONSを指定すると、ユーザーは、エディションを使用しているスキーマ内で、エディション化可能なオブジェクトの複数のバージョンを作成できるようになります。エディションが有効でないスキーマ内のエディション化可能なオブジェクトは、エディション化できません。
エディションの有効化の制限事項
シード・データベースのサンプル・スキーマを除いて、Oracle提供のすべてのスキーマではエディションを有効にできません。
CONTAINER句
CONTAINER句は、CDBに接続しているときに適用されます。ただし、デフォルト値が使用できる唯一の値であるため、CONTAINER句を指定する必要はありません。
-
共通ユーザーを作成するには、ルートに接続する必要があります。ルートに接続する場合にデフォルトの
CONTAINER=ALLをオプションで指定できます。 -
ローカル・ユーザーを作成するには、PDBに接続する必要があります。PDBに接続する場合にデフォルトの
CONTAINER=CURRENTをオプションで指定できます。
共通ユーザーの作成時には、次の句を使用して指定したデフォルトの表領域、一時表領域またはプロファイルがいずれも、CDBに属するすべてのコンテナ内に存在している必要があります。
-
DEFAULTTABLESPACE -
TEMPORARYTABLESPACE -
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
