パスワード作成時に制限を適用するなど、Oracle Databaseユーザーのセキュリティは様々な方法で管理できます。
内容は次のとおりです。
厳密なパスワードおよびユーザー用の特別な制限を指定することで、ユーザー・アカウントを保護できます。
各Oracleデータベースには、有効なデータベース・ユーザーのリストがあります。データベースにアクセスするには、ユーザーは、データベース・アプリケーションを実行し、データベースに定義されている有効なユーザー名を使用して、データベース・インスタンスに接続する必要があります。
ユーザー・アカウントの作成時に、ユーザー・アカウントに対して制限を指定できます。ユーザーのセキュリティ・ドメインの一部として、各ユーザーが使用できる各種のシステム・リソースの容量に制限を設定することもできます。Oracle Databaseには、リソースやセッションなどの情報を検索する際に問い合せることができる一連のデータベース・ビューが用意されています。この章では、プロファイルについても説明します。プロファイルとは、ユーザーに適用される属性の集合です。それらの属性を共有する複数ユーザーの中の任意のユーザーに関する単一の参照になります。
関連項目:
「権限とロール認可の構成」に、ユーザー権限およびロールを割り当ててユーザー・セキュリティも管理する方法を示しますプロファイル、デフォルト・ロール、表領域制限など、ユーザー・アカウントに制限を設定できます。
内容は次のとおりです。
ユーザー・アカウントおよびパスワードの作成と管理のガイドラインは、次の各項を参照してください。
マルチテナント環境では、共通ユーザーはCDB全体に対するアクセス権を持ち、ローカル・ユーザーはPDB固有のユーザーです。
内容は次のとおりです。
関連項目:
共通ユーザーおよびローカル・ユーザーの概要は、『Oracle Database概要』を参照してください
マルチテナント環境では、共通ユーザーのIDおよびパスワードは、ルートおよび各プラガブル・データベース(PDB)で認識されます。
共通ユーザーは、ルートに接続して操作を実行できます。共通ユーザーに適切な権限がある場合、ローカル・ユーザーへの権限の付与など、PDBで操作を実行できます。
共通ユーザーは、PDBの接続および切断、状態の変更、マルチテナント・コンテナ・データベース(CDB)の一時表領域の指定など、ルートまたはPDBに固有の管理タスクを実行できます。適切な権限を持つ共通ユーザーのみ、CDBに属するコンテナ間を操作できます。
たとえば、共通ユーザーは複数のPDBで次の操作を実行できます。
共通ユーザーまたは共通ロールへの権限の付与
CDB全体に適用するリカバリ句を指定するALTER DATABASE
文の実行
ルートへの接続中に指定されたPDBの状態を変更するALTER PLUGGABLE DATABASE
文の実行。PDBに接続されるローカル・ユーザーは、状態、指定された適切な権限も変更できます。
Oracleから提供されるSYS
およびSYSTEM
などのすべての管理ユーザー・アカウントは共通ユーザーで、CDBを操作できます。共通ユーザーは、別のPDBの異なる権限を持つことができます。たとえば、共通ユーザーSYSTEM
は、PDB間を切り替えて、現在のPDBのSYSTEM
に付与されている権限を使用できます。ただし、PDBのいずれかでOracle Database Vaultが有効な場合、このPDBに接続している間は、ユーザー・アカウントを作成できないSYSTEM
などのDatabase Vault制限が共通SYSTEM
ユーザーに適用されます。(Oracleから提供される共通ユーザーの権限を変更することはお薦めしません。ただし、コンテナごとに、ユーザー作成の共通ユーザーに異なる権限をローカルで付与することはできます。)
関連項目:
PDBでの権限の使用方法の詳細は、共通およびローカルに付与される権限についてを参照してください
共通ユーザーの概念については、『Oracle Database概要』を参照してください
CDB以外をPDBとしてCDBに差し込むと、Oracle付属の管理アカウント、ユーザー作成アカウントおよびそれらの権限に影響があります。
次のアクションが実行されます。
Oracleから提供される管理アカウントが既存の共通ユーザー・アカウントにマージされます。
既存の共通ユーザー・アカウントのパスワードは、CDB以外のアカウントのパスワードよりも優先されます。
元のCDB以外のユーザー・アカウントの権限を変更した場合、これらの権限は保存されますが、ローカルに付与された権限としてCDBにPDBを接続した場合に作成されたPDBにのみ適用されます。たとえば、ユーザーSYSTEM
にCDB以外のdb1
のhr_mgr
と呼ばれるロールを付与したとします。db1
データベースがCDBに追加された後、SYSTEM
は、他のPDBではなくdb1
PDBのhr_mgr
ロールのみ使用できます。
共通ユーザーを格納するPDBをCDBに接続する場合は、次のアクションが発生します。
このPDBの共通ユーザー・アカウントで、SET CONTAINER
権限を含む、付与されている可能性がある共通付与された権限が失われます。
ターゲットCDBに共通ユーザーが存在し、新しく接続されたPDBの共通ユーザーと同じ名前である場合、新しい共通ユーザーはターゲットCDBの共通ユーザーにマージされます。ターゲットCDBの共通ユーザーのパスワードが優先されます。それ以外の場合は、新しく接続されたPDBの共通ユーザーはロックされたアカウントになります。この場合、次のいずれかを実行できます。
ユーザー・アカウントをロックされた状態にし、このスキーマのオブジェクトを使用します。
Oracle Data Pumpを使用して、これらのオブジェクトを別のスキーマにコピーし、ロックされているユーザー・アカウントを削除します。
PDBを閉じ、ルートに接続して、ロックされているアカウントと同じ名前で共通ユーザーを作成します。PDBを再度開くと、Oracle Databaseによって、ロックされているユーザーに共通に付与されたロールと権限の違いが解消されます。後で、PDBのこのユーザー・アカウントのロックを解除できます。ユーザーにローカルに付与されている権限およびロールは変更されません。
マルチテナント環境では、ローカル・ユーザーとは、単一のPDBにのみ存在するデータベース・ユーザーです。
ローカル・ユーザーは管理権限を持つことができますが、これらの権限はローカル・ユーザー・アカウントが作成されたPDBにのみ適用されます。ローカル・ユーザー・アカウントには、共通ユーザー・アカウントと区別する次の特性があります。
ローカル・ユーザー・アカウントは、共通ユーザー・アカウントを作成できないまたは権限をローカルに付与できません。適切な権限を持つ共通ユーザーは、共通またはローカル・ユーザー・アカウントを作成および変更し、共通またはローカルに権限を付与および取り消すことができます。ローカル・ユーザーは、ローカル・ユーザー・アカウントを作成または変更したり、指定のPDBの共通またはローカル・ユーザーに権限をローカルに付与できます。
ローカル・ユーザー・アカウントの共通ロールを付与できます。ただし、共通ロールに関連付けられている権限は、ローカル・ユーザーのPDBにのみ適用されます。
ローカル・ユーザーは、そのPDB内のみで一意にする必要があります。
適切な権限がある場合、ローカル・ユーザーは、共通ユーザーのスキーマのオブジェクトにアクセスできます。たとえば、共通ユーザーのスキーマ内の表にアクセスするためのローカル・ユーザー権限が共通ユーザーに付与されている場合、ローカル・ユーザーはその表にアクセスできます。
共通ユーザー・アカウントではなくローカル・ユーザー・アカウントのエディションに対応できます。
関連項目:
ローカル・ユーザーの概念については、『Oracle Database概要』を参照してください。
CREATE USER
システム権限を付与されているユーザーは、ユーザー・アカウント(プロキシ・ユーザーとして使用されるユーザー・アカウントを含む)を作成できます。
CREATE USER
は強力なシステム権限であるため、通常、この権限を持つユーザーはデータベース管理者またはセキュリティ管理者のみです。
ユーザーを作成する権限を持つユーザーを作成する場合は、GRANT
文にWITH ADMIN OPTION
句を含めます。次に例を示します。
GRANT CREATE SESSION TO lbrown WITH ADMIN OPTION;
権限を付与するすべてのユーザー・アカウントと同様に、これらの権限を信頼できるユーザーのみに付与します。
マルチテナント環境で共通ユーザー・アカウントを作成するには、共通に付与されるCREATE USER
システム権限が必要です。ローカル・ユーザー・アカウントを作成するには、ローカル・ユーザー・アカウントを作成するPDB内に、共通に付与されるCREATE USER
権限またはローカルに付与されるCREATE USER
権限が必要です。
注意:
セキュリティ管理者は、独自のロールを作成し、必要な権限のみを割り当てる必要があります。たとえば、それまでCONNECT
権限を付与されていた多くのユーザーは、CONNECT
で提供されていた追加権限を必要とはしていませんでした。実際に必要なのはCREATE SESSION
のみでした。デフォルトでは、SET CONTAINER
権限がCONNECT
ロールに付与されます。
組織固有のロールを作成することによって、組織で割り当てる権限を詳細に制御でき、Oracle Databaseが定義するロールが将来のリリースで変更された場合に組織を保護できます。ロールの作成方法と管理方法は、「権限とロール認可の構成」を参照してください。
ユーザー・アカウントの名前を指定する場合は、名前が一意かどうかやネーミング規則などの制限事項に注意する必要があります。
内容は次のとおりです。
各ユーザーにはスキーマが関連付けられています。スキーマ内の各スキーマ・オブジェクトには、必ず一意の名前を指定する必要があります。
Oracle Databaseでは、すでに存在しているユーザー名は作成できません。DBA_USERS
データ・ディクショナリ・ビューのUSERNAME
列を問い合せて、既存の名前を確認できます。
各PDB内のユーザー名は、そのPDB内の他のユーザー名およびロールと比較して一意である必要があります。
次の制約に注意してください:
ユーザーが作成する共通ユーザーの名前は、C##
(またはc##
)で始まる必要があります。
ローカル・ユーザー名をC##
(またはc##
)で始めることはできません。
ユーザーとロールに同じ名前を付けることはできません。
ユーザー名をどのように作成するかによって、データベースに格納されるユーザー名の大文字と小文字の区別が決まります。
例:
CREATE USER jward IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 100M ON test_ts QUOTA 500K ON data_ts TEMPORARY TABLESPACE temp_ts PROFILE clerk CONTAINER = CURRENT;
ユーザーjward
はデータベースに大文字で格納されます。次に例を示します。
SELECT USERNAME FROM ALL_USERS; USERNAME --------- JWARD ...
しかし、ユーザー名を二重引用符で囲むと、このユーザー名は名前に使用した大/小文字の区別を使用して格納されます。例:
CREATE USER "jward" IDENTIFIED BY password;
そのため、ALL_USERS
データ・ディクショナリ・ビューを問い合せると、ユーザー・アカウントが作成に使用した大/小文字を使用して格納されていることがわかります。
SELECT USERNAME FROM ALL_USERS; USERNAME --------- jward ...
ユーザーJWARD
とユーザーjward
は、どちらも別々のユーザー・アカウントとしてデータベースに格納されています。後で、二重引用符を使用して作成したユーザーを変更または削除する場合は、そのユーザー名を二重引用符で囲む必要があります。
次に例を示します。
DROP USER "jward";
CREATE USER
文のIDENTIFIED BY
句で、ユーザーにパスワードを割り当てます。
安全性の高いパスワードを作成していることを確認します。
最小限のデータベース権限を持つ新しいユーザー・アカウントの作成の例では、新しいローカル・ユーザーはデータベースを使用して認証されます。この場合、接続に成功するために、接続ユーザーはデータベースに対して正しいパスワードを指定する必要があります。
CREATE USER jward IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 100M ON test_ts QUOTA 500K ON data_ts TEMPORARY TABLESPACE temp_ts PROFILE clerk CONTAINER = CURRENT;
関連項目:
パスワードを作成するための最低要件は、「パスワードの最低要件」を参照してください。
パスワードを保護する別の方法については、「パスワードの保護に関するガイドライン」を参照してください。
Oracle Databaseユーザーが使用できる認証方式の詳細は、認証の構成を参照してください
デフォルト表領域は、ユーザーが作成するオブジェクトを格納します。
内容は次のとおりです。
各ユーザーには、デフォルト表領域が必要です。
スキーマ・オブジェクトがユーザーのスキーマ内に作成され、かつそのDDL文でそのオブジェクトを格納する表領域が指定されていない場合、そのオブジェクトはユーザーのデフォルト表領域に格納されます。
表領域を使用すると、ユーザー・データとシステム・データ(SYSTEM
表領域に格納されるデータなど)を区別できます。CREATE USER
文またはALTER USER
文を使用して、ユーザーにデフォルト表領域を割り当てます。すべてのユーザーのデフォルト表領域に対するデフォルト設定は、SYSTEM
表領域です。ユーザーがオブジェクトを作成せず、オブジェクトを作成するための権限も持っていない場合は、デフォルト設定のままで問題ありません。ただし、任意のタイプのオブジェクトを作成する可能性があるユーザーには、デフォルト表領域(USERS
表領域など)を明示的に割り当てる必要があります。SYSTEM
以外の表領域を使用すると、同じデータ・ファイルに対するデータ・ディクショナリ・オブジェクトとユーザー・オブジェクト間の競合が解消されます。通常、ユーザー・データはSYSTEM
表領域に格納しないでください。
CREATE TABLESPACE
SQL文を使用して、データベースの作成時に、データベースの永続オブジェクトのデフォルトとして使用される、SYSTEM
以外のデフォルト永続表領域を作成できます。ユーザー・データをシステム・データと区切ることにより、状況次第ではデータベース全体が機能不全になる場合もある、SYSTEM
表領域に関する問題が生じる可能性を減らすことができます。このデフォルトの永続表領域は、システム・ユーザー、つまりデフォルトの永続表領域がSYSTEM
であるSYS
、SYSTEM
、およびOUTLN
が使用するものではありません。デフォルト永続表領域として指定されている表領域は削除できません。目標を達成するためには、最初にデフォルトの永続表領域として他の表領域を指定する必要があります。ALTER TABLESPACE
SQL文を使用して、デフォルトの永続表領域を他の表領域に変更できます。この変更はALTER
DDL文の実行後に作成されたすべてのユーザーまたはオブジェクトに影響を及ぼすことに注意してください。
ユーザー作成時に、そのユーザーのデフォルト表領域を設定しておき、作成後にALTER USER
文を使用して変更することもできます。ユーザーのデフォルト表領域を変更すると、設定の変更後に作成されたオブジェクトのみがこの変更の影響を受けます。
ユーザーのデフォルト表領域を指定するときは、その表領域に対する割当て制限もあわせて指定してください。
CREATE USER
文のDEFAULT TABLESPACE
句で、ユーザーにデフォルト表領域を割り当てます。
次のCREATE USER
文では、ローカル・ユーザーjward
のデフォルト表領域はdata_ts
です。
CREATE USER jward IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 100M ON test_ts QUOTA 500K ON data_ts TEMPORARY TABLESPACE temp_ts PROFILE clerk CONTAINER = CURRENT;
関連項目:
表領域に対する領域割当て制限の割当てについては、「ユーザーの表領域の割当て制限」を参照してください。
表領域の割当て制限により、ユーザーの表領域に提供される領域の量が決まります。
内容は次のとおりです。
各ユーザーには、任意の表領域(一時表領域を除く)に対する表領域割当て制限を設定できます。
割当て制限による影響は、次のとおりです。
特定タイプのオブジェクトを作成する権限があるユーザーは、指定した表領域内にオブジェクトを作成できます。
Oracle Databaseでは、指定した表領域内にあるユーザーのオブジェクトの記憶域に対して割当て可能な領域は、割当て制限以内に制限されます。
デフォルトでは、ユーザーに対するデータベースの表領域の割当て制限はありません。ユーザーがスキーマ・オブジェクトを作成する権限を持っている場合は、このユーザーがオブジェクトを作成できるようにするための割当て制限を割り当てる必要があります。最低でも、ユーザーにはデフォルト表領域の割当て制限と、ユーザーがオブジェクトを作成する他の表領域の追加割当て制限を割り当てます。表領域に割り当てることができる最大領域は2 TBです。より多くの領域が必要な場合は、QUOTA
句にUNLIMITED
を指定します。
ユーザーの割当て制限では、各表領域の一定量のディスク領域を個別に割り当てるか、またはすべての表領域のディスク領域を無制限に割り当てるかのどちらかを選択できます。一定量の割当て制限を設定すると、ユーザーのオブジェクトによってデータベースの領域が大量に使用されるのを防止できます。
ユーザーの表領域に対する割当て制限は、ユーザーを作成するときに割り当てることができ、後で割当て制限の追加または変更もできます。(USER_TS_QUOTAS
ビューを問い合せることで、既存ユーザーの割当て制限を確認できます。)新しい割当て制限が古い割当て制限より少ない場合は、次の状況が当てはまります。
ユーザーがすでに新しい表領域割当て制限を超過している場合は、これらのオブジェクトをあわせた領域が新しい割当て制限より少なくならないかぎり、その表領域のユーザー・オブジェクトに追加の領域を割り当てることはできません。
ユーザーが新しい表領域割当て制限を超過していない場合、つまり表領域内でユーザーのオブジェクトが使用している領域が新しい表領域割当て制限よりも少ない場合は、そのユーザーのオブジェクトに新しい割当て制限までの領域を割り当てることができます。
CREATE USER
文のQUOTA
句は、表領域の割当て制限を割り当てます。
次のCREATE USER
文では、test_ts
およびdata_ts
表領域に対して次の割当て制限を割り当てています。
CREATE USER jward IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 500K ON data_ts QUOTA 100M ON test_ts TEMPORARY TABLESPACE temp_ts PROFILE clerk CONTAINER = CURRENT;
現在の割当てがゼロになるように、表領域内のユーザー・オブジェクトに割当て制限を設定できます。
割当て制限を指定するには、ALTER USER
SQL文を使用します。
ゼロの割当て制限が割り当てられると、表領域内のユーザーのオブジェクトはそのまま残り、ユーザーは引き続き新規オブジェクトを作成できますが、既存のオブジェクトには新しい領域が割り当てられなくなります。たとえば、このユーザーの既存の表の1つにデータを挿入することはできません。操作は失敗し、 ORA-1536表に対する領域割当て制限を使い果たしました。
エラーが発生します。
データベース内の表領域を無制限に使用することをユーザーに許可するには、そのユーザーにUNLIMITED TABLESPACE
システム権限を付与します。
UNLIMITED TABLESPACE
権限によって、そのユーザーに対する明示的な表領域の割当て制限がすべて置き換えられます。後で権限を取り消す場合、個々の表領域に対して割当て制限を明示的に付与する必要があります。この権限は、ロールに対してではなく、ユーザーに対してのみ付与できます。
UNLIMITED TABLESPACE
システム権限を付与する前に、この方法のメリットとデメリットを考慮してください。
メリット
データベースのすべての表領域に無制限にアクセスできる権限を1つの文でユーザーに付与できます。
デメリット
この権限によって、そのユーザーに対する明示的な表領域割当て制限がすべて置き換えられます。
UNLIMITED TABLESPACE
システム権限を持つユーザーから表領域へのアクセス権を選択的に取り消すことはできません。この権限を取り消した後でのみ、選択的または制限付きアクセス権を付与できます。
一時表領域には、ユーザー・セッションの存続期間中のみ保持される一時データが含まれています。
内容は次のとおりです。
各ユーザーには、一時表領域を割り当てる必要があります。
ユーザーが一時セグメントを必要とするSQL文を実行すると、このセグメントはそのユーザーの一時表領域に格納されます。これらの一時セグメントは、ソート操作または結合操作の実行時にシステムによって作成されます。一時セグメントは、すべての表領域のリソースに関する権限を持つSYS
が所有します。
一時表領域を作成するには、CREATE TEMPORARY TABLESPACE
SQL文を使用できます。
ユーザーの一時表領域を明示的に割り当てない場合、そのユーザーには、データベース作成時に指定された、または作成後にALTER DATABASE
文によって指定されたデフォルト一時表領域が割り当てられます。デフォルトの一時表領域が明示的に割り当てられていない場合、デフォルトはSYSTEM
表領域またはシステム管理者が設定した別のデフォルト永続表領域になります。一時表領域として使用する表領域を明示的に割り当てることによって、一時セグメントとそれ以外のタイプのセグメントとの間で発生するファイルの競合が解消されます。
注意:
SYSTEM
表領域がローカル管理の場合、ユーザーには特定のデフォルト(ローカル管理)一時表領域を割り当てる必要があります。永続的なローカル管理表領域には、一時オブジェクトを格納できないため、SYSTEM
表領域の使用はデフォルトで禁止されます。
ユーザー作成時に、そのユーザーの一時表領域を設定しておき、作成後にALTER USER
文を使用して変更できます。個々の一時表領域を割り当てるかわりに、表領域グループを設定することもできます。
関連項目:
一時表領域と表領域グループの使用の詳細は、『Oracle Database管理者ガイド』を参照してください。
CREATE USER
文のTEMPORARY TABLESPACE
句で、ユーザーに一時表領域を割り当てます。
次の例では、jward
の一時表領域はtemp_ts
です。これは一時セグメントのみを格納するために明示的に作成された表領域です。
CREATE USER jward IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 100M ON test_ts QUOTA 500K ON data_ts TEMPORARY TABLESPACE temp_ts PROFILE clerk CONTAINER = CURRENT;
プロファイルとは、属性によって定義される、データベース・リソースとそのデータベースへのパスワード・アクセスに関する一連の制限です。
プロファイルを複数のユーザーに適用して、ユーザーがこれらの属性を共有できるようにすることができます。
ユーザーの作成時に、プロファイルを指定できます。CREATE USER
文のPROFILE
句は、ユーザーにプロファイルを割り当てます。プロファイルを指定しない場合、ユーザーにはデフォルト・プロファイルが割り当てられます。
次に例を示します。
CREATE USER jward IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 100M ON test_ts QUOTA 500K ON data_ts TEMPORARY TABLESPACE temp_ts PROFILE clerk CONTAINER = CURRENT;
マルチテナント環境では、異なるプロファイルをルートおよびPDBの共通ユーザーに割り当てることができます。共通ユーザーがPDBにログインする場合、設定をセッションに適用するプロファイルは、設定がパスワード関連またはリソース関連のどちらであるかによって異なります。
パスワード関連のプロファイル設定は、ルートの共通ユーザーに割り当てられるプロファイルからフェッチされます。たとえば、共通プロファイルc##prof
(FAILED_LOGIN_ATTEMPTS
が1
に設定されている)をルートの共通ユーザーc##admin
に割り当てるとします。PDBでは、そのユーザーにローカル・プロファイルlocal_prof
(FAILED_LOGIN_ATTEMPTS
が6
に設定されている)が割り当てられます。loc_prof
が割り当てられているPDBにログインする場合、共通ユーザーc##admin
は、1回のログインの失敗のみ許可されます。
PDBのユーザーに割り当てられているプロファイルに指定されたリソース関連のプロファイル設定は、ルートの共通ユーザーに割り当てられているプロファイルのリソース関連設定を参照せずに使用されます。たとえば、PDBのユーザーc##admin
に割り当てられているプロファイルlocal_prof
でSESSIONS_PER_USER
が2
に設定されている場合、ルートのこのユーザーに割り当てられているプロファイルのこの設定の値に関係なく、PDB loc_prof
にログインするときに、c##admin
は2回の同時セッションのみが許可されます。
関連項目:
CREATE USER
SQL文を使用して、共通ユーザーとローカル・ユーザーの両方を作成できます。
内容は次のとおりです。
作成できる場所、ネーミング規則、スキーマに保存されるオブジェクトなど、ローカル・ユーザー・アカウントの制限事項に注意してください。
共通ユーザー・アカウントを作成するには、次の規則に従います。
共通ユーザーを作成するには、ルートに接続し、共通に付与されるCREATE USER
システム権限が必要です。
セッションの現在のコンテナがCDB$ROOT
である必要があります。
共通ユーザーに指定した名前は、C##
またはc##
で始まり、ASCIIまたはEDCDIC文字のみを含む必要があります。(この要件は、SYS
やSYSTEM
など、Oracleから提供された既存のユーザー・アカウントの名前には適用されません。)既存のユーザー・アカウントの名前を確認するには、ALL_USERS
、CDB_USERS
、DBA_USERS
およびUSER_USERS
データ・ディクショナリ・ビューを問い合せます。
共通ユーザーとしてユーザー・アカウントを明示的に指定するには、CREATE USER
文で、CONTAINER=ALL
を指定します。ルートにログインしている場合に、CREATE USER
文からCONTAINER
句を省略すると、CONTAINER=ALL
句が暗黙のうちに入れられます。
共通ユーザーのスキーマにはオブジェクトを作成しないでください。そうすると、接続および切断操作中に問題が発生する場合があります。
共通ユーザー・アカウントのCREATE USER
文でDEFAULT TABLESPACE
、TEMPORARY TABLESPACE
、QUOTA...ON
およびPROFILE
句を指定する場合、これらのオブジェクト(表領域、表領域グループおよびプロファイル)がCDBのすべてのコンテナに存在することを確認する必要があります。
共通ユーザーが所有するユーザー作成のスキーマ・オブジェクトをPDB境界で共有できません。Oracle作成の共通ユーザーによって所有されているスキーマ・オブジェクトは、CDB全体で共有されます。
CREATE USER
文とCONTAINER
句を使用して、共通ユーザー・アカウントを作成できます。共通ユーザー・アカウントを作成するには、ルート内にいる必要があります。
次の例は、CONTAINER
句を使用することで共通ユーザー・アカウントを作成し、SET CONTAINER
およびCREATE SESSION
権限をユーザーに付与する方法を示しています。共通ユーザーは、コンテナ間を移動するためのこれらの権限が必要です。このアカウントを作成すると、すべてのコンテナでこの共通ユーザーに1つの共通パスワードが作成されます。
CONNECT SYSTEM Enter password: password Connected. CREATE USER c##hr_admin IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 100M ON test_ts QUOTA 500K ON data_ts TEMPORARY TABLESPACE temp_ts CONTAINER = ALL; GRANT SET CONTAINER, CREATE SESSION TO c##hr_admin CONTAINER = ALL;
作成できる場所、ネーミング規則、スキーマに保存されるオブジェクトなど、ローカル・ユーザー・アカウントの制限事項に注意してください。
ローカル・ユーザー・アカウントを作成するには、次の規則に従います。
ローカル・ユーザー・アカウントを作成するには、アカウントを作成するPDBに接続して、CREATE USER
権限を持つ必要があります。
ローカル・ユーザーに指定する名前は、共通ユーザーに予約されている接頭辞(CDB共通ユーザーの場合、デフォルトはC##
)で始めることはできません。
CREATE USER
文にCONTAINER=CURRENT
を含め、ローカル・ユーザーとしてユーザーを指定できます。PDBに接続しており、この句を省略すると、CONTAINER=CURRENT
句が含まれます。
共通ユーザーとローカル・ユーザーの名前を同じにすることはできません。ただし、異なるPDBのローカル・ユーザーに同じ名前を使用できます。既存のユーザー・アカウントの名前を確認するには、ALL_USERS
、CDB_USERS
、DBA_USERS
およびUSER_USERS
データ・ディクショナリ・ビューを問い合せます。
適切な権限があれば、PDBに接続されている共通ユーザーとローカル・ユーザーの両方で、ローカル・ユーザー・アカウントを作成できます。
CREATE USER
文のCONTAINER
句を使用して、ローカル・ユーザー・アカウントを作成できます。
ローカル・ユーザー・アカウントは、そのアカウントを配置するPDBに作成する必要があります。
次の例は、CONTAINER
句を使用したローカル・ユーザー・アカウントの作成方法を示しています。
CONNECT SYSTEM@hrpdb Enter password: password Connected. CREATE USER kmurray IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 100M ON test_ts QUOTA 500K ON data_ts TEMPORARY TABLESPACE temp_ts PROFILE hr_profile CONTAINER = CURRENT;
デフォルト・ロールは、ユーザーがセッションを作成したときに、自動的にそのユーザーに対して使用可能になります。
ユーザーには複数のデフォルト・ロールを割り当てることができますが、割り当てなくてもかまいません。CREATE USER
文ではユーザーのデフォルト・ロールを設定できません。ユーザーを最初に作成すると、ユーザーのデフォルト・ロール設定はALL
であり、ユーザーにその後に付与されるすべてのロールがデフォルト・ロールになります。
ALTER USER
文を使用して、ユーザーのデフォルト・ロールを変更します。
次に例を示します。
GRANT USER rdale clerk_mgr; ALTER USER rdale DEFAULT ROLE clerk_mgr;
ロールをユーザーのデフォルト・ロールにするには、そのロールがユーザーに付与されている必要があります。
関連項目:
ALTER USER
文を使用して、ユーザー・アカウントを変更できます(そのデフォルト表領域やプロファイルの変更など)。さらに、ユーザーは、ユーザーのパスワードを変更できます。
内容は次のとおりです。
ユーザーのセキュリティ設定の変更は、現行セッションではなく、それより後のユーザー・セッションから反映されます。
ほとんどの場合、ユーザーのセキュリティ設定を変更するには、ALTER USER
SQL文を使用します。ユーザーは、自分のパスワードを変更できます。ただし、ユーザーのセキュリティ・ドメインの他のオプションを変更するには、ALTER USER
システム権限が必要です。通常は、セキュリティ管理者のみがこのシステム権限を持ちます。これは、この権限によってすべてのユーザーのセキュリティ・ドメインを変更できるためです。この権限には、データベースの任意の表領域に対するユーザーの表領域割当て制限を設定する許可が含まれています。これは、変更を実行するユーザーが、指定した表領域に対する割当て制限を持っていない場合も同じです。
マルチテナント環境で共通ユーザー・アカウントを変更するには、共通に付与されるALTER USER
システム権限が必要です。ローカル・ユーザー・アカウントを変更するには、ローカル・ユーザー・アカウントが存在するPDB内で、共通に付与されるALTER USER
権限またはローカルに付与されるALTER USER
権限が必要です。
ALTER USER
文で、共通およびローカル・ユーザー・アカウントの両方を変更できます。
既存の共通ユーザー・アカウントをローカル・ユーザー・アカウントに変更でき、その逆も同様です。この場合は、共通ユーザー・アカウントまたはローカル・ユーザー・アカウントとして、新しいアカウントを作成する必要があります。
次の例は、ALTER USER
文を使用して、ユーザーc##hr_admin
がV$SESSION
行を表示する機能を、接続先がCDB$ROOT
ならびにemp_db
およびhr_db
PDBであるセッションに関連するものに制限する方法を示しています。
CONNECT SYSTEM
Enter password: password
Connected.
ALTER USER c##hr_admin
DEFAULT TABLESPACE data_ts
TEMPORARY TABLESPACE temp_ts
QUOTA 100M ON data_ts
QUOTA 0 ON test_ts
SET CONTAINER_DATA = (emp_db, hr_db) FOR V$SESSION
CONTAINER = CURRENT;
このALTER USER
文によって、ユーザーc##hr_admin
のセキュリティ設定は次のように変更されます。
DEFAULT TABLESPACE
およびTEMPORARY TABLESPACE
は、data_ts
およびtemp_ts
にそれぞれ明示的に設定されます。
QUOTA 100M
は、data_ts
表領域に100MBを提供します。
QUOTA 0
は、temp_ts
表領域の割当て制限を取り消します。
SET CONTAINER_DATA
は、ユーザーc##hr_admin
がemp_db
およびhr_db
PDBに関するデータにアクセスすることを可能にし、このユーザーがルートからV$SESSION
ビューを問い合せる場合はルートに関するデータアクセスすることを可能にします。
関連項目:
SET CONTAINER_DATA
句の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。ユーザーは、自身のパスワードを変更できますが、他のユーザーのパスワードを変更するには、正しい権限が必要です。
内容は次のとおりです。
ユーザーは、PASSWORD
コマンドまたはALTER USER
文を使用してパスワードを変更できます。
ユーザーが自分のパスワードを変更するには、特別な権限(データベースへの接続およびセッションの作成権限以外)は不要です。ユーザーには、自分のパスワードを頻繁に変更することを薦めてください。パスワードを保護する最適な方法に関するガイドラインは、パスワードの保護に関するガイドラインを参照してください。ALL_USERS
ビューを問い合せることで、現行データベース・インスタンスの既存のユーザーを検索できます。
セキュリティを強化するには、PASSWORD
コマンドを使用してアカウントのパスワードを変更します。ALTER USER
文では、新規パスワードが画面に表示されるため、他者に見られる可能性があります。PASSWORD
コマンドでは新規パスワードが表示されないため、自分のみが把握し、他者に知られることはありません。どちらの場合も、パスワードはネットワーク上で暗号化されます。
ユーザーが認証方式を切り替えるには、PASSWORD
とALTER USER
権限が必要です。通常、この権限を持つのは管理者のみです。
関連項目:
パスワードを作成するための最低要件は、「パスワードの最低要件」を参照してください。
パスワードを保護する別の方法については、「パスワードの保護に関するガイドライン」を参照してください。
Oracle Databaseユーザーが使用できる認証方式の詳細は、認証の構成を参照してください
ほとんどのユーザーが、SQL*PlusのPASSWORD
コマンドまたはALTER USER
SQL文を使用して自身のパスワードを変更できます。
次のいずれかの方法を使用して、ユーザーのパスワードを変更します。
SQL*PlusのPASSWORD
コマンドを使用してパスワードを変更するには、ユーザーの名前を指定し、プロンプトが表示された場合は新しいパスワードを入力します。
次に例を示します。
PASSWORD andy Changing password for andy New password: password Retype new password: password
ALTER USER
SQL文を使用してパスワードを変更するには、IDENTIFIED BY
句を指定します。
次に例を示します。
ALTER USER andy IDENTIFIED BY password;
SYS
ユーザーのパスワードを変更するには、ORAPWD
コマンドライン・ユーティリティを使用する必要があります。
内容は次のとおりです。
ORAPWD
コマンドライン・ユーティリティで、SYS
ユーザー・パスワードが格納された新しいパスワード・ファイルを作成できます。
次のことに注意してください。
SYS
ユーザー・アカウントは、ほとんどの内部再帰的SQLが使用します。そのため、ALTER USER
文を使用してこのパスワードを変更しようとするときにデータベースがオープンしていると、デッドロックが生じる可能性があります。
ALTER USER
を使用してSYS
ユーザー・パスワードを変更しようとする場合に、インスタンス初期化パラメータREMOTE_LOGIN_PASSWORDFILE
がSHARED
に設定されていると、SYS
パスワードを変更できません。ALTER USER
文は、ORA-28046: SYSのパスワードは変更できません
のエラーで失敗します。
新しいアカウントは、SHA-2
(SHA-512
)ベリファイアで作成されます。DBA_USERS
データ・ディクショナリ・ビューのPASSWORD_VERSIONS
列を問い合せて、これらのアカウントを識別できます。(これらのパスワード・バージョンは、ビューの出力に12C
としてリストされます。)このベリファイアが大きすぎて元のパスワード・ファイル形式に合わないため、ORAPWD
コマンドのformat=12
引数を使用して、パスワード・ファイルを拡張形式で作成する必要があります。そうしないと、PASSWORD
コマンドを使用してSYS
パスワードを変更しようとする場合、ORA-28017: パスワード・ファイルが拡張形式ではありません。
エラーが表示されます。
Oracle Real Application Clusters (Oracle RAC)環境では、複数のOracle RACインスタンスで共有できるように、パスワードをASMディスク・グループに格納してください。
関連項目:
orapwd
コマンド構文と引数の詳細は、『Oracle Database管理者ガイド』を参照してください。
ORAPWD
ユーティリティでは、SYS
ユーザーのパスワードを変更できます。
ORAPWD
ユーティリティでFILE
パラメータを使用して、SYS
ユーザーのパスワードを変更できます。次の例では、orapworcl
と呼ばれるパスワード・ファイルに格納される新しいSYS
パスワードの作成方法を示しています。(このパスワード・ファイルがすでに存在する場合は、 OPW-00005: 同一名のファイルがあります。 - 削除または名前を変更してください。
のエラーにより他の名前を選択するように警告されます。既存のパスワード・ファイルを上書きする場合は、force=y
引数をORAPWD
コマンドに追加してください。)
orapwd file='orapworcl' force=y
Enter password for SYS: new_password
パスワード・ファイルを移行する場合、現在のパスワード・ファイルを指定するためにinput_file
パラメータを含める必要があります。データベースが開いている間にユーザーがALTER USER
文を使用してこのパスワードを変更しようとする場合のデッドロックの発生を防ぐには、sys
オプションをy
に設定します。次に例を示します。
orapwd input_file='orapworcl' file='orapwd' sys=y force=y
Enter password for SYS: new_password
関連項目:
ORAPWD
ユーティリティの詳細は、『Oracle Database管理者ガイド』を参照してください。
リソースの制限により、ユーザーに利用可能なシステム・リソースの量が決まります。
内容は次のとおりです。
ユーザーのセキュリティ・ドメインの一部として、各ユーザーが使用できるシステム・リソースの容量に制限を設定できます。
そうすることで、CPUタイムなど貴重なシステム・リソースが無制限に消費されることを防ぐことができます。
このリソース制限機能は、システム・リソースに多額の費用がかかる大規模なマルチ・ユーザー・システムでは非常に有効です。1人以上のユーザーが過度にリソースを使用すると、データベースの他のユーザーに有害な影響を与える可能性があります。シングル・ユーザー・データベースや小規模なマルチ・ユーザー・データベースの場合は、ユーザーがシステム・リソースを消費しても影響は少ないため、システム・リソース機能はそれほど重要ではありません。
ユーザーのリソース制限は、データベース・リソース・マネージャを使用して管理します。パスワード管理の作業環境は、ユーザーごとに個別にプロファイルを使用して設定するか、または多数のユーザー用のデフォルト・プロファイルを使用して設定できます。それぞれのOracleデータベースに指定できるプロファイルの数に、制限はありません。Oracle Databaseでは、セキュリティ管理者が、プロファイルによるリソース制限の規定を全体的に使用可能または使用禁止に設定できます。
リソース制限を設定すると、ユーザーによるセッション作成時に、パフォーマンスがわずかに低下します。これは、各ユーザーがデータベースに接続した時点で、そのユーザーのすべてのリソース制限データがロードされるためです。
関連項目:
リソース制限の設定の詳細は、『Oracle Database管理者ガイド』を参照してください
Oracle Databaseでは、CPUタイムや論理読取りなど様々なタイプのシステム・リソースの使用を制限できます。一般にこれらの各リソースを、セッション・レベル、コール・レベルまたは両方のレベルで制御できます。
内容は次のとおりです。
ユーザーがデータベースに接続すると、セッションが作成されます。セッションではCPU時間とメモリーが使用されますが、これらに制限を設定できます。
複数のリソース制限をセッション・レベルで設定できます。ユーザーがセッション・レベルのリソース限度を超えると、Oracle Databaseは現在の文を終了(ロールバック)して、セッション限度に達したことを示すメッセージを返します。この時点で、カレント・トランザクションのそれ以前の文のすべてがそのまま残り、ユーザーが実行できる操作のみがCOMMIT
、ROLLBACK
、または切断になります(この場合、カレント・トランザクションはコミットされます)。他のすべての操作はエラーになります。トランザクションがコミットまたはロールバックされた後も、ユーザーはこれ以上の作業をカレント・セッション中は完了できません。
ユーザーがSQL文を実行するたびに、Oracle Databaseでは、いくつかのステップが実行され文が処理されます。
SQL文の処理では、データベースに対して複数のコールが異なる実行フェーズの一部として発行されます。1回のコールで過度にシステムが使用されないように、Oracle Databaseでは、複数のリソース制限をコール・レベルで設定できます。
ユーザーがコール・レベルのリソース制限を超えると、Oracle Databaseは文の処理を停止してその文をロールバックし、エラーを戻します。ただし、カレント・トランザクションのそれ以前の文の結果はそのまま残り、そのユーザー・セッションは接続されたままになります。
SQL文やその他のコールがOracle Databaseに発行されると、そのコールを処理するためにCPU時間が必要になります。
平均的なコールであれば、わずかなCPUタイムですみます。ただし、大量のデータや冗長な問合せを伴うSQL文はCPUタイムを大量に使用することがあるため、他の処理に使用できるCPUタイムが少なくなります。
CPUタイムが無制限に消費されないようにするため、1回のコール当たりのCPUタイムと、1つのセッション中にOracle Databaseコールに使用されるCPUタイムの合計に対して、固定した制限または動的な制限を設定できます。これらの制限は、コールやセッションに使用される1/100秒(0.01秒)単位のCPUタイムで設定し、測定されます。
入出力(I/O)は、データベース・システムで最もリソースの使用量が多い操作の1つです。
I/Oを集中的に実行するSQL文は、メモリーとディスクの使用を独占することがあるため、他のデータベース操作がこれらのリソースをめぐって競合する原因になる可能性があります。
単一の原因による過度のI/Oが発生しないようにするために、1コール当たりおよび1セッション当たりの論理データ・ブロック読取り数を制限できます。論理データ・ブロック読取りには、メモリーとディスクの両方からの論理データ・ブロック読取りが含まれます。これらの制限は、1コールまたは1セッション中に実行されるブロック読取りの数として設定し、測定されます。
ユーザーの同時セッション数やアイドル時間に制限を設定できます。
その他のリソースの制限を次に示します。
ユーザー当たりの同時実行セッション数の制限。各ユーザーは、事前に定義された数まで同時実行セッションを作成できます。
セッションのアイドル時間の制限。1つのセッションでのコール間の時間がアイドル制限時間に達すると、カレント・トランザクションがロールバックされてセッションは終了し、そのセッションのリソースはシステムに戻されます。次のコールは、ユーザーがインスタンスから切断されたことを示すエラーを受け取ります。この制限は、分単位の経過時間として設定します。
注意:
セッションがアイドル時間の制限を超えたために終了すると、その少し後に、終了したセッションの後処理としてプロセス・モニター(PMON)・バックグラウンド・プロセスがクリーン・アップを実行します。PMONがこのプロセスを完了するまでは、終了したセッションも、セッションまたはユーザー・レベルのリソース制限に加算されます。
セッション当たりの経過接続時間の制限。セッションの持続時間が経過制限時間を超えると、カレント・トランザクションがロールバックされてセッションが削除され、そのセッションのリソースがシステムに戻されます。この制限は、分単位の経過時間として設定します。
注意:
Oracle Databaseは、経過アイドル時間や経過接続時間を絶えず監視しているわけではありません。絶えず監視した場合、システム・パフォーマンスが低下します。そのかわり数分ごとにチェックします。このため、Oracle Databaseがこの制限を規定してからセッションを終了させるまでの間に、セッションはこの制限をわずかに(5分など)超える可能性があります。
セッションのプライベート・システム・グローバル領域(SGA)(プライベートSQL領域に使用)の容量の制限。この制限が重要になるのは、共有サーバーの構成を使用するシステムの場合のみです。それ以外のシステムの場合、プライベートSQL領域はプログラム・グローバル領域(PGA)内にあります。この制限は、インスタンスのSGAに使用するメモリーのバイト数として設定します。KBまたはMBで指定するには、KまたはMの文字を使用します。
関連項目:
リソース管理の詳細は、『Oracle Database管理者ガイド』を参照してくださいプロファイルを作成しリソース制限を設定する前に、各リソース制限について適切な値を決定する必要があります。
リソース制限の値は、典型的なユーザーが実行する操作のタイプを基準として決定できます。たとえば、あるクラスのユーザーが通常は大量の論理データ・ブロック読取りを実行しない場合は、ALTER RESOURCE COST
SQL文を使用して、LOGICAL_READS_PER_SESSION
設定を控えめに設定します。
通常、ユーザー・プロファイルの適切なリソース制限値を決定するには、それぞれのタイプのリソースの使用状況について履歴情報を収集するのが最善です。たとえば、データベース管理者やセキュリティ管理者は、AUDIT
SESSION
句を使用して、CONNECT_TIME
およびLOGICAL_READS_PER_SESSION
の制限値についての情報を収集できます。
その他の制限値の統計情報は、Oracle Enterprise Manager(またはSQL*Plus)のモニター機能、特に統計モニターを使用して収集できます。
プロファイルとは、ユーザーのデータベース使用とインスタンス・リソースを制限する一連のリソース制限およびパスワード・パラメータに名前を付けたものです。
内容は次のとおりです。
プロファイルは、ユーザーに適用される属性の集合で、それらの属性を共有する複数ユーザーの中の任意のユーザーに関する単一の参照になります。
Oracle Internet Directoryのユーザー・プロファイルには、各ユーザーのディレクトリ使用と認証に関連した属性が含まれています。同様に、Oracle Label Securityのプロファイルには、Oracle Label Securityのユーザー管理や操作管理に役立つ属性が含まれています。プロファイル属性にはシステム・リソースに関する制限を含めることができます。データベース・リソース・マネージャを使用すると、これらのタイプのリソース制限を設定できます。
ユーザーごとにプロファイルを割り当てたり、すべてのユーザーにデフォルトのプロファイルを割り当てる必要があります。各ユーザーに割り当てることができるプロファイルは1つのみで、新しいプロファイルを作成すると、旧バージョンと置き換えられます。ユーザー・プロファイルを作成して管理する必要があるのは、リソース制限がデータベースのセキュリティ・ポリシーの要件である場合のみです。プロファイルを使用するには、最初にデータベース内のユーザーの関連タイプを分類します。ロールを使用して関連ユーザーの権限を管理するのと同様に、プロファイルを使用して関連ユーザーのリソース制限を管理します。データベース内のすべてのタイプのユーザーを含めるために必要なプロファイル数を決定してから、プロファイルごとに適切なリソース制限を決定します。
プロファイルのリソース制限が適用されるのは、対応するデータベースのリソース制限が使用可能な場合のみです。このリソース制限が使用可能になるのは、データベースの起動前(RESOURCE_LIMIT
初期化パラメータを使用)またはオープン中(ALTER SYSTEM
文を使用)のいずれかです。
パスワード・パラメータはプロファイル内にありますが、RESOURCE_LIMIT
またはALTER SYSTEM
の影響は受けず、パスワード管理は常に使用可能です。Oracle Databaseでは、主にデータベース・リソース・マネージャによって、リソースの割当てと制限が処理されます。
認可されたデータベース・ユーザーは、プロファイルの作成、ユーザーへの割当て、変更および削除を(CREATE USER
またはALTER USER
文を使用して)随時実行できます。プロファイルは、ロールや他のプロファイルではなく、ユーザーにのみ割り当てることができます。プロファイルの割当ては現行のセッションには影響を与えず、それより後のセッションにのみ有効です。
現行のプロファイルに関する情報を検索するには、DBA_PROFILES
ビューを問い合せます。
関連項目:
リソース管理の詳細は、『Oracle Database管理者ガイド』を参照してください
リソース情報の表示の詳細は、「データベース・ユーザーおよびプロファイルのデータ・ディクショナリ・ビュー」を参照してください
ALTER SYSTEM
ファンクションの詳細は、『Oracle Database SQL言語リファレンス』を参照
RESOURCE_LIMIT
の詳細は、『Oracle Databaseリファレンス』を参照してください
プロファイルには、パスワードの制限やリソースの制限など、特定のカテゴリに対する制限が含まれます。
プロファイルを作成する場合、CREATE PROFILE
システム権限が必要です。すべての既存のプロファイルを検索するには、DBA_PROFILES
ビューを問い合せます。
プロファイルを作成するには、CREATE PROFILE
文を使用します。
たとえば、パスワードの制限を定義するプロファイルを作成するとします。
CREATE PROFILE password_prof LIMIT FAILED_LOGIN_ATTEMPTS 6 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10 PASSWORD_VERIFY_FUNCTION DEFAULT;
次の例は、リソース制限プロファイルの作成方法を示しています。
CREATE PROFILE app_user LIMIT SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL 3500 CONNECT_TIME 50 LOGICAL_READS_PER_SESSION DEFAULT LOGICAL_READS_PER_CALL 1200 PRIVATE_SGA 20K COMPOSITE_LIMIT 7500000;
関連項目:
CREATE PROFILE
SQL文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
プロファイルの作成後、ユーザーにプロファイルを割り当てることができます。
すでにプロファイルを割り当てられているユーザーにプロファイルを割り当てることはできますが、直近に割り当てられたプロファイルが優先されます。外部ユーザーまたはグローバル・ユーザーにプロファイルを割り当てる場合、パスワードのパラメータは、そのユーザーに対して有効ではありません。
ユーザーに現在割り当てられているプロファイルを検索するには、DBA_USERS
ビューを問い合せます。
ALTER USER
文を使用して、ユーザーにプロファイルを割り当てます。
次に例を示します。
ALTER USER psmith PROFILE app_user;
プロファイルは、現在ユーザーに割り当てられている場合でも削除できます。
プロファイルを削除しても、現在アクティブなセッションに影響はありません。プロファイルの削除後に作成されたセッションのみが、変更されたプロファイル割当てを使用します。プロファイルを削除するには、DROP PROFILE
システム権限が必要です。デフォルトのプロファイルは削除できません。
プロファイルを削除するには、SQL文のDROP PROFILE
を使用します。ユーザーに現在割り当てられているプロファイルを削除するには、CASCADE
オプションを使用します。
次に例を示します。
DROP PROFILE clerk CASCADE;
削除するプロファイルに現在割り当てられているユーザーは、自動的にDEFAULT
プロファイルに割り当てられます。DEFAULT
プロファイルは削除できません。
関連項目:
DROP PROFILE
SQL文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
ユーザーがユーザー・セッションにログインしていない場合、ユーザー・アカウントを削除できます。ユーザーを削除する場合、そのユーザーのスキーマに関連付けられているオブジェクトも削除されます。
内容は次のとおりです。
ユーザー・アカウントを削除する前に、削除に適した権限があることを確認する必要があります。
いずれの環境でユーザー・アカウントを削除する場合でも、DROP USER
システム権限が必要です。マルチテナント環境で共通ユーザー・アカウントを削除するには、共通に付与されるDROP USER
システム権限が必要です。ローカル・ユーザー・アカウントを削除するには、ローカル・ユーザー・アカウントが存在するPDB内で、共通に付与されるDROP USER
権限またはローカルに付与されるDROP USER
権限が必要です。
ユーザー・アカウントを削除すると、Oracle Databaseではこのユーザー・アカウントおよび対応するスキーマがデータ・ディクショナリから削除されます。さらに、ユーザー・スキーマに含まれているすべてのスキーマ・オブジェクトも(存在する場合)削除されます。
注意:
ユーザーのスキーマとそれに対応するオブジェクトは残したままで、データベースへのアクセスを拒否する場合は、そのユーザーからCREATE SESSION
権限を取り消してください。
SYS
ユーザーまたはSYSTEM
ユーザーは削除しないでください。これらのユーザーを削除すると、データベースが破損します。
データベースに接続されているユーザーは削除できません。
関連項目:
セッションの終了の詳細は、『Oracle Database管理者ガイド』を参照してください。
ユーザーがデータベースから切断した後に、DROP USER
文を使用してユーザーを削除できます。
ユーザーとそのユーザーのスキーマ・オブジェクト(ある場合)をすべて削除するには、DROP USER
システム権限が必要です。DROP USER
システム権限は強力な権限であるため、通常はセキュリティ管理者のみがこの権限を持ちます。
ユーザーのスキーマに依存型のスキーマ・オブジェクトが含まれている場合に、ユーザーと対応付けられているすべてのオブジェクト、およびそのユーザーの表に依存している外部キーをすべて削除するには、CASCADE
オプションを使用します。CASCADE
を指定していない場合は、ユーザーのスキーマに依存型のオブジェクトが含まれていると、エラー・メッセージが戻され、ユーザーは削除されません。
Oracle Databaseには、ユーザーとプロファイルの作成に使用した設定の情報を提供する、一連のデータ・ディクショナリ・ビューがあります。
内容は次のとおりです。
Oracle Databaseには、データベース・ユーザーおよびプロファイルに関する情報を含むデータ・ディクショナリ・ビュー一式が用意されています。
表2-1に、これらのデータ・ディクショナリ・ビューを示します。これらのビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
表2-1 ユーザーとプロファイルに関する情報を表示するデータ・ディクショナリ・ビュー
ビュー | 説明 |
---|---|
|
現行ユーザーがアクセス可能なすべてのオブジェクトが表示されます。 |
|
現行ユーザーに対して表示可能なユーザーがリストされますが、それらの記述は表示されません。 |
|
すべてのプロファイルとそれぞれの制限が表示されます。 |
|
ユーザーの表領域割当て制限が表示されます。 |
|
データベース内のすべてのオブジェクトが表示されます。 |
|
データベースのすべてのユーザーの記述が表示されます。 |
|
デフォルト・パスワードが設定されているすべてのユーザー・アカウントがリストされます。 |
|
他のユーザーの識別情報を引き継ぐことができるユーザーの記述が表示されます。 |
|
セッション当たりのCPU、セッション当たりの読取り、接続時間およびSGAの観点から各リソースのコストがリストされます。 |
|
ユーザーに割り当てられているパスワード・プロファイル・パラメータが表示されます。 |
|
現行ユーザーのリソース制限が表示されます。 |
|
ユーザーの表領域割当て制限が表示されます。 |
|
現行ユーザーが所有するすべてのオブジェクトが表示されます。 |
|
現行ユーザーの記述のみが表示されます。 |
|
現在のデータベース・セッションのセッション情報がリストされます。 |
|
ユーザー・セッションの統計が表示されます。 |
|
|
次の各項では、これらのビューの使用例を示します。各例では、次の文がすでに実行されていることを前提としています。ユーザーはすべてローカル・ユーザーです。
CREATE PROFILE clerk LIMIT SESSIONS_PER_USER 1 IDLE_TIME 30 CONNECT_TIME 600; CREATE USER jfee IDENTIFIED BY password DEFAULT TABLESPACE example TEMPORARY TABLESPACE temp QUOTA 500K ON example PROFILE clerk CONTAINER = CURRENT; CREATE USER dcranney IDENTIFIED BY password DEFAULT TABLESPACE example TEMPORARY TABLESPACE temp QUOTA unlimited ON example CONTAINER = CURRENT; CREATE USER userscott IDENTIFIED BY password CONTAINER = CURRENT;
DBA_USERS
データ・ディクショナリ・ビューには、データベースで定義されているすべてのユーザーとその関連情報が表示されます。
DBA_USERS
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
次に例を示します。
col username format a11 col profile format a10 col account_status format a19 col authentication_type format a29 SELECT USERNAME, PROFILE, ACCOUNT_STATUS, AUTHENTICATION_TYPE FROM DBA_USERS; USERNAME PROFILE ACCOUNT_STATUS AUTHENTICATION_TYPE --------------- --------------- --------------- ------------------- SYS DEFAULT OPEN PASSWORD SYSTEM DEFAULT OPEN PASSWORD USERSCOTT DEFAULT OPEN PASSWORD JFEE CLERK OPEN GLOBAL DCRANNEY DEFAULT OPEN EXTERNAL
DBA_TS_QUOTAS
データ・ディクショナリ・ビューには、各ユーザーに割り当てられているすべての表領域割当てが表示されます。
このビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
次に例を示します。
SELECT * FROM DBA_TS_QUOTAS; TABLESPACE USERNAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS ---------- --------- -------- ---------- ------- ---------- EXAMPLE JFEE 0 512000 0 250 EXAMPLE DCRANNEY 0 -1 0 -1
固有の割当て制限が割り当てられている場合は、正確な数値がMAX_BYTES
列に示されます。この数値は常にデータベース・ブロック・サイズの倍数となるため、倍数でない表領域割当て制限を指定すると、適切な値に切り上げられます。無制限割当ての場合は、-1
が表示されます。
DBA_PROFILE
ビューには、データベース内のすべてのプロファイル、および各プロファイルの制限ごとの関連設定がリストされます。
このビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
次に例を示します。
SELECT * FROM DBA_PROFILES ORDER BY PROFILE; PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT ----------------- ----------------------- ------------- -------------- CLERK COMPOSITE_LIMIT KERNEL DEFAULT CLERK FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT CLERK PASSWORD_LIFE_TIME PASSWORD DEFAULT CLERK PASSWORD_REUSE_TIME PASSWORD DEFAULT CLERK PASSWORD_REUSE_MAX PASSWORD DEFAULT CLERK PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT CLERK PASSWORD_LOCK_TIME PASSWORD DEFAULT CLERK PASSWORD_GRACE_TIME PASSWORD DEFAULT CLERK PRIVATE_SGA KERNEL DEFAULT CLERK CONNECT_TIME KERNEL 600 CLERK IDLE_TIME KERNEL 30 CLERK LOGICAL_READS_PER_CALL KERNEL DEFAULT CLERK LOGICAL_READS_PER_SESSION KERNEL DEFAULT CLERK CPU_PER_CALL KERNEL DEFAULT CLERK CPU_PER_SESSION KERNEL DEFAULT CLERK SESSIONS_PER_USER KERNEL 1 DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 DEFAULT PASSWORD_LIFE_TIME PASSWORD 180 DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED DEFAULT PASSWORD_LOCK_TIME PASSWORD 1 DEFAULT PASSWORD_GRACE_TIME PASSWORD 7 DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD UNLIMITED DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED 32 rows selected.
デフォルト・プロファイル値を検索するには、次の問合せを実行します。
SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT'; PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT ----------------- ------------------------- ------------- -------------- DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED DEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED DEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 DEFAULT PASSWORD_LIFE_TIME PASSWORD 180 DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL DEFAULT PASSWORD_LOCK_TIME PASSWORD 1 DEFAULT PASSWORD_GRACE_TIME PASSWORD 7 16 rows selected.
V$SESSION
動的ビューには、各ユーザー・セッションのメモリー使用量が表示されます。
このビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
次の問合せを実行するとすべてのカレント・セッションがリストされ、各セッションのOracle Databaseユーザーと現在のユーザー・グローバル領域(UGA)メモリー使用が示されます。
SELECT USERNAME, VALUE || 'bytes' "Current UGA memory" FROM V$SESSION sess, V$SESSTAT stat, V$STATNAME name WHERE sess.SID = stat.SID AND stat.STATISTIC# = name.STATISTIC# AND name.NAME = 'session uga memory'; USERNAME Current UGA memory ------------------------------ --------------------------------------------- 18636bytes 17464bytes 19180bytes 18364bytes 39384bytes 35292bytes 17696bytes 15868bytes USERSCOTT 42244bytes SYS 98196bytes SYSTEM 30648bytes 11 rows selected.
インスタンスの起動以降、各セッションに割り当てられた最大のUGAメモリーを表示するには、この問合せの'session uga memory'
を'session uga memory max'
に置き換えてください。