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)である必要があります。
構文
セマンティクス
IF NOT EXISTS
IF NOT EXISTS
を指定すると、次の効果が得られます。
-
ユーザーが存在していない場合は、文の最後に新しいユーザーが作成されます。
-
ユーザーが存在している場合、これは文の最後の時点にあるユーザーになります。古いものが検出されるため、新しいものは作成されません。
IF EXISTS
はCREATE
とともに使用すると、ORA-11543: Incorrect IF NOT EXISTS clause for CREATE statement
が発生します。
user
作成するユーザーの名前を指定します。この名前には、使用しているデータベース文字セットの文字のみを指定できます。また、「データベース・オブジェクトのネーミング規則」の項で説明した規則に従う必要があります。データベース文字セットにマルチバイト文字が含まれている場合でも、ユーザーにはシングルバイト文字を1つ以上使用することをお薦めします。
CDB以外では、ユーザー名の先頭をC##
またはc##
にできません。
ノート:
マルチテナント・コンテナ・データベースが、Oracle Database 21c以降のリリースで唯一サポートされているアーキテクチャです。ドキュメントが改訂されている間は、従来の用語が残っている可能性があります。ほとんどの場合、「データベース」と「非CDB」は、コンテキストに応じてCDBまたはPDBを指しています。アップグレードなどのコンテキストでは、「非CDB」が以前のリリースの非CDBを指す場合もあります。
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
句を使用すると、ローカル・ユーザーを作成し、データベースへのログイン時に、パスワードの指定が必要であることを指定できます。パスワードは大/小文字が区別されます。最大長は1024バイトです。この後に、ユーザーをデータベースに接続するために使用される
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
文を使用してユーザーのロールをアクティブにするために、アプリケーション・サーバーの機能を制御できます。
GLOBALLY AS AZURE_USER
を使用して、Oracle DatabaseスキーマをMicrosoft Azure ADユーザーに排他的にマップできます。CREATE USER
またはALTER USER
システム権限が付与されたユーザーとして、Oracle Autonomous Databaseインスタンスにログインする必要があります。
例: Microsoft Azure ADユーザーへのOracle Databaseスキーマのマッピング
この例では、peter_fitch
という名前の新しいデータベース・スキーマ・ユーザーを作成し、このユーザーをpeter.fitch@example.com
という名前の既存のAzure ADユーザーにマップします。
CREATE USER peter_fitch IDENTIFIED GLOBALLY AS 'AZURE_USER=peter.fitch@example.com';
例: アプリケーション・ロールへの共有Oracle Databaseスキーマのマッピング
この例では、dba_azure
という名前の新しいデータベース・グローバル・ユーザー・アカウント(スキーマ)を作成し、AZURE_DBA
という名前の既存のAzure ADアプリケーション・ロールにマップします。
CREATE USER dba_azure IDENTIFIED GLOBALLY AS 'AZURE_ROLE=AZURE_DBA';
グローバル・ユーザーの作成の制限事項
Oracle ASMでは、グローバル・ユーザーの作成はサポートされません。
関連項目:
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
に、ユーザーの一時セグメント表領域を指定します。共有一時表領域を指定するには、TEMPORARY
TABLESPACE
を指定します。ローカル一時表領域を指定するには、LOCAL
TEMPORARY
TABLESPACE
を指定します。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
プロファイルがユーザーに割り当てられます。
CREATE USER
文を使用すると、新規ユーザーを作成し、そのユーザーをPASSWORD_ROLLOVER_TIME
が構成されているプロファイルに関連付けることができます。
最初に、CREATE PROFILE
またはALTER PROFILE
を使用してパスワード・ロールオーバー期間を設定する必要があります。
例では、u1
はユーザーで、パスワードはp1
です。prof1
は、PASSWORD_ROLLOVER_TIME
が設定されたプロファイルです。
CREATE USER u1 IDENTIFIED BY p1 PROFILE prof1 ;
ノート:
データベース・リソース・マネージャを使用して、SQLプロファイルではなくデータベース・リソース制限を設定することをお薦めします。データベース・リソース・マネージャを使用すると、リソース使用の管理および監査を柔軟に行うことができます。データベース・リソース・マネージャの詳細は、『Oracle Database管理者ガイド』を参照してください。
関連項目:
-
「GRANT」および「CREATE PROFILE」を参照してください。
PASSWORD EXPIRE句
PASSWORD
EXPIRE
を指定すると、ユーザーのパスワードを期限切れにできます。この設定によって、ユーザーがデータベースにログインする前に、ユーザーまたはDBAはパスワードの変更が必要となります。
ACCOUNT句
ACCOUNT
LOCK
を指定すると、ユーザー・アカウントをロックし、アクセスを禁止できます。ACCOUNT
UNLOCK
を指定すると、ユーザー・アカウントのロックを解除し、アカウントへのアクセスを許可できます。デフォルトはACCOUNT
UNLOCK
です。
ENABLE EDITIONS
この句は元に戻すことができません。ENABLE
EDITIONS
を指定すると、ユーザーは、エディションを使用しているスキーマ内で、エディション化可能なオブジェクトの複数のバージョンを作成できるようになります。エディションが有効でないスキーマ内のエディション化可能なオブジェクトは、エディション化できません。
ALTER USER
でエディションを有効にする前に、次の点に注意してください。
-
エディションの有効化は、ライブ操作ではありません。
-
データベースがリリース11.2からリリース12.1にアップグレードされると、アップグレード前のデータベースでエディションに対して有効であったユーザーは、アップグレード後のデータベースでもエディションに対して有効になり、デフォルトのスキーマ・オブジェクト・タイプはこれらのスキーマでエディション対応になります。デフォルトのスキーマ・オブジェクト・タイプは、静的データ・ディクショナリ・ビュー
DBA_EDITIONED_TYPES
によって表示されます。アップグレード前のデータベースでエディションに対して無効だったユーザーは、アップグレード後のデータベースでもエディションに対して無効であり、スキーマ・オブジェクト・タイプはこれらのスキーマではエディション対応になりません。 -
エディションが有効になっているユーザー確認するには、静的データ・ディクショナリ・ビュー
DBA_USERS
またはUSER_USERS
のEDITIONS_ENABLED
列を参照してください。
エディションの有効化の制限事項
FOR
句は、ENABLE EDITIONS
とともに使用すると無視されます。これはALTER USER
文ではなく、CREATE USER
文にのみ適用されます。
Oracle提供のすべてのスキーマではエディションを有効にできません。
関連項目:
-
V$EDITIONABLE_TYPES
動的パフォーマンス・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
CONTAINER句
CONTAINER
句は、CDBに接続しているときに適用されます。ただし、デフォルト値が使用できる唯一の値であるため、CONTAINER
句を指定する必要はありません。
-
共通ユーザーを作成するには、ルートに接続する必要があります。ルートに接続する場合にデフォルトの
CONTAINER
=
ALL
をオプションで指定できます。 -
ローカル・ユーザーを作成するには、PDBに接続する必要があります。PDBに接続する場合にデフォルトの
CONTAINER
=
CURRENT
をオプションで指定できます。
共通ユーザーの作成時には、次の句を使用して指定したデフォルトの表領域、一時表領域またはプロファイルがいずれも、CDBに属するすべてのコンテナ内に存在している必要があります。
-
DEFAULT
TABLESPACE
-
TEMPORARY
TABLESPACE
-
QUOTA
-
PROFILE
これらのオブジェクトが存在していないコンテナがあると、CREATE
USER
文は失敗します。
READ ONLY | READ WRITE
この句を使用して、ローカルPDBユーザーへのREAD ONLY
アクセスを設定します。
読取り専用アクセスの場合、ローカルPDBユーザーは、接続先のPDBに対する書込み操作を実行できません。セッションは、データベースが読取り専用モードで開いているかのように動作します。
READ WRITE
を指定して、ローカル・ユーザーへのREAD WRITE
アクセスを設定します。
この文を実行するには、CREATE USER
権限が必要です。
ローカル・ユーザーの状態は、*_USERS
ビューで表示できます。
例
次のすべての例では、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