2 Oracle Databaseユーザーのセキュリティの管理
パスワード作成時に制限を適用するなど、Oracle Databaseユーザーのセキュリティは様々な方法で管理できます。
- ユーザー・セキュリティについて
厳密なパスワードおよびユーザー用の特別な制限を指定することで、ユーザー・アカウントを保護できます - ユーザー・アカウントの作成
プロファイル、デフォルト・ロール、表領域制限など、ユーザー・アカウントに制限を設定できます。 - ユーザー・アカウントの変更
ALTER USER
文で、デフォルトの表領域やプロファイル、ユーザー・パスワードの変更など、ユーザー・アカウントを変更します。 - ユーザー・リソース制限の構成
リソースの制限により、ユーザーに利用可能なシステム・リソースの量が決まります。 - ユーザー・アカウントの削除
ユーザーのスキーマにオブジェクトがある場合、そのユーザーがセッション中でなければユーザー・アカウントを削除できます。 - データベース・ユーザーおよびプロファイルのデータ・ディクショナリ・ビュー
Oracle Databaseには、ユーザーとプロファイルの作成に使用した設定の情報を提供する、一連のデータ・ディクショナリ・ビューがあります。
親トピック: ユーザー認証および認可の管理
2.1 ユーザー・セキュリティについて
厳密なパスワードおよびユーザー用の特別な制限を指定することで、ユーザー・アカウントを保護できます。
各Oracleデータベースには、有効なデータベース・ユーザーのリストがあります。データベースにアクセスするには、ユーザーは、データベース・アプリケーションを実行し、データベースに定義されている有効なユーザー名を使用して、データベース・インスタンスに接続する必要があります。
ユーザー・アカウントの作成時に、ユーザー・アカウントに対して制限を指定できます。ユーザーのセキュリティ・ドメインの一部として、各ユーザーが使用できる各種のシステム・リソースの容量に制限を設定することもできます。Oracle Databaseには、リソースやセッションなどの情報を検索する際に問い合せることができる一連のデータベース・ビューが用意されています。この章では、プロファイルについても説明します。プロファイルとは、ユーザーに適用される属性の集合です。それらの属性を共有する複数ユーザーの中の任意のユーザーに関する単一の参照になります。
関連項目:
「権限とロール認可の構成」では、ユーザー権限とロールを割り当てることによる、ユーザー・セキュリティの別の管理方法について説明します。2.2 ユーザー・アカウントの作成
プロファイル、デフォルト・ロール、表領域制限など、ユーザー・アカウントに制限を設定できます。
- 共通ユーザーおよびローカル・ユーザーについて
マルチテナント環境では、CDB共通ユーザーとアプリケーション共通ユーザーはそれぞれのコンテナに対するアクセス権を持ち、ローカル・ユーザーはPDB固有のユーザーです。 - ユーザー・アカウントの作成者とは
CREATE USER
システム権限を付与されているユーザーは、ユーザー・アカウント(プロキシ・ユーザーとして使用されるユーザー・アカウントを含む)を作成できます。 - 最小限のデータベース権限を持つ新しいユーザー・アカウントの作成
新しいユーザー・アカウントを作成する場合、このユーザーがデータベースにアクセスできるようにする必要があります。 - 新しいアカウントのユーザー名の作成に関する制限事項
ユーザー・アカウントの名前を指定する場合は、ネーミング規則や名前が一意かどうかなどの制限事項に注意してください。 - ユーザーへのパスワードの割当て
CREATE USER
文のIDENTIFIED BY
句で、ユーザーにパスワードを割り当てます。 - ユーザーのデフォルト表領域
デフォルト表領域は、ユーザーが作成するオブジェクトを格納します。 - ユーザーへの表領域の割当て制限
表領域の割当て制限により、ユーザーの表領域に提供される領域の量が決まります。 - ユーザーの一時表領域
一時表領域には、ユーザー・セッションの存続期間中のみ保持される一時データが含まれています。 - ユーザーのプロファイル
プロファイルとは、属性によって定義される、データベース・リソースとそのデータベースへのパスワード・アクセスに関する一連の制限です。 - 共通ユーザーまたはローカル・ユーザーの作成
CREATE USER
SQL文を使用して、共通(CDBおよびアプリケーション)ユーザーとローカル・ユーザーの両方を作成できます。 - ユーザーのデフォルト・ロールの作成
デフォルト・ロールは、ユーザーがセッションを作成したときに、自動的にそのユーザーに対して使用可能になります。
2.2.1 共通ユーザーおよびローカル・ユーザーについて
マルチテナント環境では、CDB共通ユーザーとアプリケーション共通ユーザーはそれぞれのコンテナに対するアクセス権を持ち、ローカル・ユーザーはPDB固有のユーザーです。
- 共通ユーザーについて
共通ユーザーには、CDB共通ユーザーとアプリケーション共通ユーザーの2つのタイプがあります。 - PDBへの接続によるCDB共通ユーザーへの影響
CDB以外をPDBとしてCDBに差し込むと、Oracle付属の管理アカウント、ユーザー作成アカウントおよびそれらの権限に影響があります。 - ローカル・ユーザーについて
マルチテナント環境では、ローカル・ユーザーとは、単一のPDBにのみ存在するデータベース・ユーザーです。
親トピック: ユーザー・アカウントの作成
2.2.1.1 共通ユーザーについて
共通ユーザーには、CDB共通ユーザーとアプリケーション共通ユーザーの2つのタイプがあります。
CDB共通ユーザーとは、CDBルートならびに既存および将来のプラガブル・データベース(PDB)によって単一のIDとパスワードが認識されているデータベース・ユーザーです。Oracle提供のSYS
およびSYSTEM
などのすべての管理ユーザー・アカウントはCDB共通ユーザーであり、システム・コンテナを操作できます。CDB共通ユーザーは、異なるPDBで異なる権限を持つことができます。たとえば、ユーザーSYSTEM
は、PDBを切り替えて、現在のPDBのSYSTEM
に付与されている権限を使用できます。ただし、PDBのいずれかでOracle Database Vaultが有効な場合、SYSTEM
がこのPDBに接続している間は、SYSTEM
によるユーザー・アカウントの作成が許可されないといったDatabase Vaultの制限が同ユーザーに適用されます。Oracle提供のCDB共通ユーザーの権限を変更することはお薦めしません。
CDB共通ユーザーは、そのユーザーに適切な権限が付与されている場合にかぎり、アプリケーション共通ユーザーが実行できるすべてのタスクを実行できます。
アプリケーション共通ユーザーはアプリケーション・ルートで作成されるユーザー・アカウントで、このアプリケーション・コンテナ内のみで共通です。つまり、アプリケーション共通ユーザーは、CDB共通ユーザーのようにCDB環境全体にアクセスすることはできません。アプリケーション共通ユーザーは、アプリケーションPDBの作成(接続を含む)、オープン、クローズ、切断および削除などのアクティビティに対する責任を負います。このユーザーは、アプリケーション・ルートでアプリケーション共通オブジェクトを作成できます。アプリケーション共通ユーザーを作成できるのは、アプリケーション・ルートに接続しているときに限定されます。ユーザーがアプリケーション共通オブジェクトにアクセスする機能は、ローカルおよびCDB共通オブジェクトと同じ権限に依存します。たとえば、アプリケーション・ルートに関連付けられたPDBのローカル・ユーザーは、そのユーザーが権限を持つPDB内のオブジェクトにのみアクセスできます。アプリケーション・ルート自体では、アプリケーション・コンテナ間で適用される、CDB共通オブジェクトに対する権限を共通に付与できます。
いずれのタイプの共通ユーザーも、それぞれのルート内の共通オブジェクトを管理する責任を負います。CDB共通ユーザーまたはアプリケーション共通ユーザーに適切な権限がある場合、ローカル・ユーザーへの権限の付与など、PDBでの操作も実行できます。これらのユーザーは、共通ユーザーに対してコンテナごとの異なる権限をローカルに付与することもできます。
CDBおよびアプリケーション共通ユーザーは、次のアクティビティを実行できます。
-
共通ユーザーまたは共通ロールへの権限の付与。つまり、CDB共通ユーザーは共通ユーザーまたは共通ロールに権限を付与でき、この権限が適用される範囲は、文が発行されるコンテナ(CDBルート、アプリケーション・ルートまたはPDB)および権限が(CDBルートまたはアプリケーション・ルートで)共通に付与されたかどうかによって決まります。アプリケーション・ルートに接続しているCDB共通ユーザーは、CDB共通オブジェクトに対する権限を共通に付与でき、その権限はアプリケーション・コンテナ間で適用されます。
次の図に、CDB共通ユーザー、アプリケーション共通ユーザーおよびローカル・ユーザーのアクセス階層を示します。
図dbseg_vm_011a.epsの説明CDB共通ユーザーはCDBルートで定義され、CDB内のすべてのPDB(アプリケーション・ルートおよびそのアプリケーションPDBを含む)にアクセスできます。アプリケーション共通ユーザーはアプリケーション・ルートで定義され、アプリケーション・コンテナに属するPDBにアクセスできます。CDB PDBまたはアプリケーションPDBのローカル・ユーザーは、そのローカル・ユーザーが存在するPDBにのみアクセスできます。
-
PDBの状態は、CDBルート、アプリケーション・ルート(PDBがアプリケーション・コンテナに属するアプリケーションPDBである場合)またはPDB自体から
ALTER PLUGGABLE DATABASE
文を発行するための適切な権限を持つユーザーが変更できます。
CDB共通ユーザーとアプリケーション共通ユーザーの違いの1つは、CDB全体に適用されるリカバリ句を指定するALTER DATABASE
文を実行できるのはCDB共通ユーザーのみであることです。
関連項目:
-
PDBでの権限の使用方法の詳細は、共通およびローカルに付与される権限についてを参照してください
-
CDB共通ユーザーおよびアプリケーション共通ユーザーの概念については、Oracle Database概要を参照してください
親トピック: 共通ユーザーおよびローカル・ユーザーについて
2.2.1.2 PDBへの接続によるCDB共通ユーザーへの影響
CDB以外をPDBとしてCDBに差し込むと、Oracle付属の管理アカウント、ユーザー作成アカウントおよびそれらの権限に影響があります。
これは、これらのCDB共通ユーザー・アカウントのパスワードと、新しく接続したデータベース内のすべてのアカウントの権限に影響します。
次のアクションが実行されます。
-
Oracleから提供される管理アカウントが既存の共通ユーザー・アカウントにマージされます。
-
ユーザー作成のアカウントが既存のユーザー作成の共通ユーザー・アカウントにマージされます。
-
既存のCDB共通ユーザー・アカウントのパスワードは、非CDBのアカウントのパスワードよりも優先されます。
-
元のCDB以外のユーザー・アカウントの権限を変更した場合、これらの権限は保存されますが、ローカルに付与された権限としてCDBにPDBを接続した場合に作成されたPDBにのみ適用されます。たとえば、ユーザー
SYSTEM
にCDB以外のdb1
のhr_mgr
と呼ばれるロールを付与したとします。db1
データベースがCDBに追加された後、SYSTEM
は、他のPDBではなくdb1
PDBのhr_mgr
ロールのみ使用できます。
あるCDB (cdb_1
)のPDB (たとえば、pdb_1
)を別のCDB (cdb_2
)に接続する場合、次の2つのシナリオが可能です。
-
cdb_1
には共通ユーザーc##cdb1_user
がいます。cdb_2
にこのユーザーはいません。c##cdb1_user
はPDB_1
に残っていますが、このアカウントはロックされています。このアカウントを復活させるには、pdb_1
をクローズし、cdb_2
のルートで共通ユーザーc##cdb1_user
を再作成し、pdb_1
を再オープンします。 -
cdb_1
とcdb_2
の両方には、共通ユーザーc##common_user
がいます。両方の
c##common_user
アカウントはマージされます。c##common_user
はそのパスワードをcdb_2
で保持します。cdb_2
で割り当てられ、cdb_1
では割り当てられていない権限は、pdb_1
でローカルに保持されます。
親トピック: 共通ユーザーおよびローカル・ユーザーについて
2.2.1.3 ローカル・ユーザーについて
マルチテナント環境では、ローカル・ユーザーとは、単一のPDBにのみ存在するデータベース・ユーザーです。
ローカル・ユーザーは管理権限を持つことができますが、これらの権限はローカル・ユーザー・アカウントが作成されたPDBにのみ適用されます。ローカル・ユーザー・アカウントには、共通ユーザー・アカウントと区別する次の特性があります。
-
ローカル・ユーザー・アカウントは、共通ユーザー・アカウントを作成できないまたは権限をローカルに付与できません。適切な権限を持つ共通ユーザーは、共通またはローカル・ユーザー・アカウントを作成および変更し、共通またはローカルに権限を付与および取り消すことができます。ローカル・ユーザーは、ローカル・ユーザー・アカウントを作成または変更したり、指定のPDBの共通またはローカル・ユーザーに権限をローカルに付与できます。
-
ローカル・ユーザー・アカウントの共通ロールを付与できます。ただし、共通ロールに関連付けられている権限は、ローカル・ユーザーのPDBにのみ適用されます。
-
ローカル・ユーザーは、そのPDB内のみで一意にする必要があります。
-
適切な権限がある場合、ローカル・ユーザーは、共通ユーザーのスキーマのオブジェクトにアクセスできます。たとえば、共通ユーザーのスキーマ内の表にアクセスするためのローカル・ユーザー権限が共通ユーザーに付与されている場合、ローカル・ユーザーはその表にアクセスできます。
-
共通ユーザー・アカウントではなくローカル・ユーザー・アカウントのエディションに対応できます。
関連項目:
-
ローカル・ユーザーの概念については、『Oracle Database概要』を参照してください。
親トピック: 共通ユーザーおよびローカル・ユーザーについて
2.2.2 ユーザー・アカウントの作成者とは
CREATE USER
システム権限を付与されているユーザーは、ユーザー・アカウント(プロキシ・ユーザーとして使用されるユーザー・アカウントを含む)を作成できます。
CREATE USER
は強力なシステム権限であるため、通常、この権限を持つユーザーはデータベース管理者またはセキュリティ管理者のみです。
自らユーザーを作成する権限を持つユーザーを作成するには、GRANT
文にWITH ADMIN OPTION
句を含めます。たとえば:
GRANT CREATE USER TO lbrown WITH ADMIN OPTION;
権限を付与するすべてのユーザー・アカウントと同様に、これらの権限を信頼できるユーザーのみに付与します。
マルチテナント環境で共通ユーザー・アカウントを作成するには、共通に付与されるCREATE USER
システム権限が必要です。ローカル・ユーザー・アカウントを作成するには、ローカル・ユーザー・アカウントを作成するPDB内に、共通に付与されるCREATE USER
権限またはローカルに付与されるCREATE USER
権限が必要です。
ノート:
セキュリティ管理者は、独自のロールを作成し、必要な権限のみを割り当てる必要があります。たとえば、それまでCONNECT
権限を付与されていた多くのユーザーは、CONNECT
で提供されていた追加権限を必要とはしていませんでした。かわりに、CREATE SESSION
のみが実際には必要でした。デフォルトでは、SET CONTAINER
権限がCONNECT
ロールに付与されます。
組織固有のロールを作成することによって、組織で割り当てる権限を詳細に制御でき、Oracle Databaseが定義するロールが将来のリリースで変更された場合に組織を保護できます。
関連トピック
親トピック: ユーザー・アカウントの作成
2.2.4 新しいアカウントのユーザー名の作成に関する制限事項
ユーザー・アカウントの名前を指定する場合は、名前が一意かどうかやネーミング規則などの制限事項に注意する必要があります。
- ユーザー名の一意性
各ユーザーにはスキーマが関連付けられています。スキーマ内の各スキーマ・オブジェクトには、必ず一意の名前を指定する必要があります。 - マルチテナント環境のユーザー名
各PDB内のユーザー名は、そのPDB内の他のユーザー名およびロールと比較して一意である必要があります。 - ユーザー名の大/小文字の区別
ユーザー名をどのように作成するかによって、データベースに格納されるユーザー名の大文字と小文字の区別が決まります。
親トピック: ユーザー・アカウントの作成
2.2.4.1 ユーザー名の一意性
各ユーザーにはスキーマが関連付けられています。スキーマ内の各スキーマ・オブジェクトには、必ず一意の名前を指定する必要があります。
Oracle Databaseでは、すでに存在しているユーザー名は作成できません。DBA_USERS
データ・ディクショナリ・ビューのUSERNAME
列を問い合せて、既存の名前を確認できます。
親トピック: 新しいアカウントのユーザー名の作成に関する制限事項
2.2.4.2 マルチテナント環境のユーザー名
各PDB内のユーザー名は、そのPDB内の他のユーザー名およびロールと比較して一意であることが必要です。
次の制約に注意してください:
-
共通ユーザー名の場合、ユーザー作成の共通ユーザーの名前は共通のユーザー接頭辞で始める必要があります。デフォルトでは、CDB共通ユーザーの場合、この接頭辞は
C##
です。アプリケーション共通ユーザーの場合、この接頭辞は空の文字列です。これは、CDB共通ユーザー用に予約された接頭辞を使用しないかぎり、アプリケーション共通ユーザーに割り当てる名前には制限がないことを意味します。たとえば、CDB共通ユーザーにc##hr_admin
、アプリケーション共通ユーザーにhr_admin
という名前を付けることができます。CDB$ROOT
のCOMMON_USER_PREFIX
パラメータは、共通のユーザー接頭辞を定義します。この設定は変更できますが、十分に注意して行うようにしてください。 -
ローカル・ユーザー名の場合、名前を
C##
(またはc##
)で始めることはできません。 -
ユーザーとロールに同じ名前を付けることはできません。
親トピック: 新しいアカウントのユーザー名の作成に関する制限事項
2.2.4.3 ユーザー名の大/小文字の区別
ユーザー名をどのように作成するかによって、データベースに格納されるユーザー名の大文字と小文字の区別が決まります。
たとえば:
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";
親トピック: 新しいアカウントのユーザー名の作成に関する制限事項
2.2.5 ユーザーへのパスワードの割当て
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;
関連トピック
親トピック: ユーザー・アカウントの作成
2.2.6 ユーザーのデフォルト表領域
デフォルト表領域は、ユーザーが作成するオブジェクトを格納します。
- ユーザーに対するデフォルト表領域の割当てについて
各ユーザーには、デフォルト表領域が必要です。 - デフォルト表領域を割り当てるためのDEFAULT TABLESPACE句
CREATE USER
文のDEFAULT TABLESPACE
句で、ユーザーにデフォルト表領域を割り当てます。
親トピック: ユーザー・アカウントの作成
2.2.6.1 ユーザーに対するデフォルト表領域の割当てについて
各ユーザーには、デフォルト表領域が必要です。
スキーマ・オブジェクトがユーザーのスキーマ内に作成され、かつその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
文を使用して変更することもできます。ユーザーのデフォルト表領域を変更すると、設定の変更後に作成されたオブジェクトのみがこの変更の影響を受けます。
ユーザーのデフォルト表領域を指定するときは、その表領域に対する割当て制限もあわせて指定してください。
親トピック: ユーザーのデフォルト表領域
2.2.6.2 デフォルト表領域を割り当てるためのDEFAULT TABLESPACE句
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;
関連トピック
親トピック: ユーザーのデフォルト表領域
2.2.7 ユーザーの表領域の割当て制限
表領域の割当て制限により、ユーザーの表領域に提供される領域の量が決まります。
- ユーザーへの表領域割当て制限の割当てについて
各ユーザーには、任意の表領域(一時表領域を除く)に対する表領域割当て制限を設定できます。 - 表領域の割当て制限を割り当てるためのCREATE USER文
CREATE USER
文のQUOTA
句は、表領域の割当て制限を割り当てます。 - 表領域でのユーザー・オブジェクトに対する割当て限度の制限
現在の割当てがゼロになるように、表領域内のユーザー・オブジェクトに割当て制限を設定できます。 - ユーザーへのUNLIMITED TABLESPACEシステム権限の付与
データベース内の表領域を無制限に使用することをユーザーに許可するには、そのユーザーにUNLIMITED TABLESPACE
システム権限を付与します。
親トピック: ユーザー・アカウントの作成
2.2.7.1 ユーザーへの表領域割当て制限の割当てについて
各ユーザーには、任意の表領域(一時表領域を除く)に対する表領域割当て制限を設定できます。
割当て制限による影響は、次のとおりです。
-
特定タイプのオブジェクトを作成する権限があるユーザーは、指定した表領域内にオブジェクトを作成できます。
-
Oracle Databaseでは、指定した表領域内にあるユーザーのオブジェクトの記憶域に対して割当て可能な領域は、割当て制限以内に制限されます。
デフォルトでは、ユーザーに対するデータベースの表領域の割当て制限はありません。ユーザーがスキーマ・オブジェクトを作成する権限を持っている場合は、このユーザーがオブジェクトを作成できるようにするための割当て制限を割り当てる必要があります。最低でも、ユーザーにはデフォルト表領域の割当て制限と、ユーザーがオブジェクトを作成する他の表領域の追加割当て制限を割り当てます。表領域に割り当てることができる最大領域は2 TBです。より多くの領域が必要な場合は、QUOTA
句にUNLIMITED
を指定します。
ユーザーの割当て制限では、各表領域の一定量のディスク領域を個別に割り当てるか、またはすべての表領域のディスク領域を無制限に割り当てるかのどちらかを選択できます。一定量の割当て制限を設定すると、ユーザーのオブジェクトによってデータベースの領域が大量に使用されるのを防止できます。
ユーザーの表領域に対する割当て制限は、ユーザーを作成するときに割り当てることができ、後で割当て制限の追加または変更もできます。(USER_TS_QUOTAS
ビューを問い合せることで、既存ユーザーの割当て制限を確認できます。)新しい割当て制限が古い割当て制限より少ない場合は、次の状況が当てはまります。
-
ユーザーがすでに新しい表領域割当て制限を超過している場合は、これらのオブジェクトをあわせた領域が新しい割当て制限より少なくならないかぎり、その表領域のユーザー・オブジェクトに追加の領域を割り当てることはできません。
-
ユーザーが新しい表領域割当て制限を超過していない場合、つまり表領域内でユーザーのオブジェクトが使用している領域が新しい表領域割当て制限よりも少ない場合は、そのユーザーのオブジェクトに新しい割当て制限までの領域を割り当てることができます。
親トピック: ユーザーへの表領域の割当て制限
2.2.7.2 表領域の割当て制限を割り当てるためのCREATE USER文
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;
親トピック: ユーザーへの表領域の割当て制限
2.2.7.3 表領域でのユーザー・オブジェクトに対する割当て限度の制限
現在の割当てがゼロになるように、表領域内のユーザー・オブジェクトに割当て制限を設定できます。
割当て制限を指定するには、ALTER USER
SQL文を使用します。
ゼロの割当て制限が割り当てられると、表領域内のユーザーのオブジェクトはそのまま残り、ユーザーは引き続き新規オブジェクトを作成できますが、既存のオブジェクトには新しい領域が割り当てられなくなります。たとえば、このユーザーの既存の表の1つにデータを挿入することはできません。操作は失敗し、 ORA-1536表に対する領域割当て制限を使い果たしました。
エラーが発生します。
親トピック: ユーザーへの表領域の割当て制限
2.2.7.4 ユーザーへのUNLIMITED TABLESPACEシステム権限の付与
データベース内の表領域を無制限に使用することをユーザーに許可するには、そのユーザーにUNLIMITED TABLESPACE
システム権限を付与します。
UNLIMITED TABLESPACE
権限によって、そのユーザーに対する明示的な表領域の割当て制限がすべて置き換えられます。後で権限を取り消す場合、個々の表領域に対して割当て制限を明示的に付与する必要があります。この権限は、ロールに対してではなく、ユーザーに対してのみ付与できます。
UNLIMITED TABLESPACE
システム権限を付与する前に、この方法のメリットとデメリットを考慮してください。
メリット:
-
データベースのすべての表領域に無制限にアクセスできる権限を1つの文でユーザーに付与できます。
デメリット:
-
この権限によって、そのユーザーに対する明示的な表領域割当て制限がすべて置き換えられます。
-
UNLIMITED TABLESPACE
システム権限を持つユーザーから表領域へのアクセス権を選択的に取り消すことはできません。この権限を取り消した後でのみ、選択的または制限付きアクセス権を付与できます。
親トピック: ユーザーへの表領域の割当て制限
2.2.8 ユーザーの一時表領域
一時表領域には、ユーザー・セッションの存続期間中のみ保持される一時データが含まれています。
- ユーザーに対する一時表領域の割当てについて
各ユーザーには、一時表領域を割り当てる必要があります。 - 一時表領域を割り当てるためのTEMPORARY TABLESPACE句
CREATE USER
文のTEMPORARY TABLESPACE
句で、ユーザーに一時表領域を割り当てます。
親トピック: ユーザー・アカウントの作成
2.2.8.1 ユーザーに対する一時表領域の割当てについて
各ユーザーには、一時表領域を割り当てる必要があります。
ユーザーが一時セグメントを必要とするSQL文を実行すると、このセグメントはそのユーザーの一時表領域に格納されます。これらの一時セグメントは、ソート操作または結合操作の実行時にシステムによって作成されます。一時セグメントは、すべての表領域のリソースに関する権限を持つSYS
が所有します。
一時表領域を作成するには、CREATE TEMPORARY TABLESPACE
SQL文を使用できます。
ユーザーの一時表領域を明示的に割り当てない場合、そのユーザーには、データベース作成時に指定された、または作成後にALTER DATABASE
文によって指定されたデフォルト一時表領域が割り当てられます。デフォルトの一時表領域が明示的に割り当てられていない場合、デフォルトはSYSTEM
表領域またはシステム管理者が設定した別のデフォルト永続表領域になります。一時表領域として使用する表領域を明示的に割り当てることによって、一時セグメントとそれ以外のタイプのセグメントとの間で発生するファイルの競合が解消されます。
ノート:
SYSTEM
表領域がローカル管理の場合、ユーザーには特定のデフォルト(ローカル管理)一時表領域を割り当てる必要があります。永続的なローカル管理表領域には、一時オブジェクトを格納できないため、SYSTEM
表領域の使用はデフォルトで禁止されます。
ユーザー作成時に、そのユーザーの一時表領域を設定しておき、作成後にALTER USER
文を使用して変更できます。個々の一時表領域を割り当てるかわりに、表領域グループを設定することもできます。
関連項目:
一時表領域と表領域グループの使用の詳細は、『Oracle Database管理者ガイド』を参照してください。
親トピック: ユーザーの一時表領域
2.2.8.2 一時表領域を割り当てるためのTEMPORARY TABLESPACE句
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;
親トピック: ユーザーの一時表領域
2.2.9 ユーザーのプロファイル
プロファイルとは、データベース・リソースとそのデータベースへのパスワード・アクセスについて属性によって定義される一連の制限です。
プロファイルは複数のユーザーに適用でき、それらのユーザーはそうした属性を共有できます。
ユーザーの作成時に、プロファイルを指定できます。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
に設定されている場合、c##admin
は、loc_prof
が割り当てられたPDBにログインすると、ルートで割り当てられたプロファイルにおけるこの設定の値に関係なく、許可される同時セッション数は2つのみになります。
関連トピック
親トピック: ユーザー・アカウントの作成
2.2.10 共通ユーザーまたはローカル・ユーザーの作成
CREATE USER
SQL文を使用して、共通(CDBおよびアプリケーション)ユーザーとローカル・ユーザーの両方を作成できます。
- 共通ユーザー・アカウントの作成について
作成できる場所、ネーミング規則、スキーマに保存されるオブジェクトなど、共通ユーザー・アカウントの制限事項に注意してください。 - 共通ユーザー・アカウントを作成するためのCREATE USER文
CREATE USER
文のCONTAINER=ALL
句を使用して、共通ユーザー・アカウントを作成できます。 - ローカル・ユーザー・アカウントの作成について
作成できる場所、ネーミング規則、スキーマに保存されるオブジェクトなど、ローカル・ユーザー・アカウントの制限事項に注意してください。 - ローカル・ユーザー・アカウントを作成するためのCREATE USER文
CREATE USER
文のCONTAINER
句を使用して、ローカル・ユーザー・アカウントを作成できます。
親トピック: ユーザー・アカウントの作成
2.2.10.1 共通ユーザー・アカウントの作成について
作成できる場所、ネーミング規則、スキーマに保存されるオブジェクトなど、共通ユーザー・アカウントの制限事項に注意してください。
共通ユーザー・アカウントを作成するには、次の規則に従います。
-
CDB共通ユーザーを作成するには、CDBルートに接続し、共通に付与される
CREATE USER
システム権限を持っていることが必要です。 -
アプリケーション共通ユーザーを作成するには、アプリケーション・ルートに接続し、共通に付与される
CREATE USER
システム権限を持っていることが必要です。 -
CREATE USER ... CONTAINER = ALL
文を実行して、アプリケーション・ルートでアプリケーション共通ユーザーを作成できます。その後、このユーザーがアプリケーションPDBで表示されるように、アプリケーションを同期する必要があります。たとえば、saas_sales_app
というアプリケーションでは次のようになります。ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;
-
CDBルートに接続する共通ユーザーに付ける名前は、CDBルートの
COMMON_USER_PREFIX
パラメータで定義された接頭辞(デフォルトでは、C##
)で始まる必要があります。(このパラメータは変更できますが、十分に注意して行うようにしてください。)名前に使用できるのは、ASCIIまたはEBCDIC文字のみです。このネーミング要件は、SYS
やSYSTEM
など、Oracle提供の既存のユーザー・アカウントの名前には適用されません。既存のユーザー・アカウントの名前を確認するには、ALL_USERS
、CDB_USERS
、DBA_USERS
およびUSER_USERS
データ・ディクショナリ・ビューを問い合せます。 -
アプリケーション・ルートに接続する共通ユーザーに付ける名前は、標準ユーザー・アカウントのネーミング規則に従う必要があります。デフォルトでは、アプリケーション・ルートで
COMMON_USER_PREFIX
パラメータが空の文字列に設定されています。つまり、アプリケーション・ルートでhr_admin
というユーザーを作成できますが、c##hr_admin
というユーザーは作成できません。 -
CDBまたはアプリケーション共通ユーザーとしてユーザー・アカウントを明示的に指定するには、
CREATE USER
文で、CONTAINER=ALL
句を指定します。CDBルートまたはアプリケーション・ルートにログインしている場合に、CREATE USER
文からCONTAINER
句を省略すると、CONTAINER=ALL
句が暗黙のうちに入れられます。 -
CDBの共通ユーザーのスキーマにはオブジェクトを作成しないでください。かわりに、アプリケーション共通オブジェクトを作成できます。これらは、アプリケーション・コンテナに属するすべてのアプリケーションPDB間でメタデータおよび(データ・リンクまたは拡張データ・リンクの場合は)データが共有されるオブジェクトです。アプリケーション共通オブジェクトは、アプリケーション・コンテナのルートで作成する必要があります。
-
CDBまたはアプリケーション共通ユーザー・アカウントの
CREATE USER
文でDEFAULT TABLESPACE
、TEMPORARY TABLESPACE
、QUOTA...ON
およびPROFILE
句を指定する場合、CDB共通ユーザーのCDBのすべてのコンテナに、またはアプリケーション共通ユーザーのアプリケーション・コンテナのアプリケーション・ルートおよびすべてのPDBに、これらのオブジェクト(表領域、表領域グループおよびプロファイル)が存在することを確認する必要があります。
親トピック: 共通ユーザーまたはローカル・ユーザーの作成
2.2.10.2 共通ユーザー・アカウントを作成するためのCREATE USER文
CREATE USER
文のCONTAINER=ALL
句を使用して、共通ユーザー・アカウントを作成できます。
CDB共通ユーザー・アカウントを作成するにはCDBルートに、アプリケーション共通ユーザー・アカウントを作成するにはアプリケーション・ルートにいる必要があります。
次の例は、CONTAINER
句を使用してCDBルートからCDB共通ユーザー・アカウントを作成し、そのユーザーにSET CONTAINER
およびCREATE SESSION
権限を付与する方法を示しています。共通ユーザーは、コンテナ間を移動するためにSET CONTAINER
システム権限を必要とします。このアカウントを作成すると、すべてのコンテナでこの共通ユーザーに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;
次の例は、CONTAINER
句を使用してアプリケーション・ルート(app_root
)でアプリケーション共通ユーザーを作成し、そのユーザーにSET CONTAINER
およびCREATE SESSION
システム権限を付与する方法を示しています。最後に、このユーザーがアプリケーションPDBで表示されるように同期するため、ALTER PLUGGABLE DATABASE APPLICATION APP$CON SYNC
文が実行されています。
CONNECT SYSTEM@app_root Enter password: password Connected. CREATE USER app_admin IDENTIFIED BY password DEFAULT TABLESPACE data_ts QUOTA 100M ON temp_ts QUOTA 500K ON data_ts TEMPORARY TABLESPACE temp_ts CONTAINER = ALL; GRANT SET CONTAINER, CREATE SESSION TO app_admin CONTAINER = ALL; CONNECT SYSTEM@app_hr_pdb Enter password: password Connected. ALTER PLUGGABLE DATABASE APPLICATION APP$CON SYNC;
2.2.10.3 ローカル・ユーザー・アカウントの作成について
作成できる場所、ネーミング規則、スキーマに保存されるオブジェクトなど、ローカル・ユーザー・アカウントの制限事項に注意してください。
ローカル・ユーザー・アカウントを作成するには、次の規則に従います。
-
ローカル・ユーザー・アカウントを作成するには、アカウントを作成するPDBに接続して、
CREATE USER
権限を持つ必要があります。 -
ローカル・ユーザーに付ける名前は、共通ユーザー用に予約された接頭辞(CDB共通ユーザーの場合、デフォルトでは
C##
)で始めることはできません。 -
CREATE USER
文にCONTAINER=CURRENT
を含め、ローカル・ユーザーとしてユーザーを指定できます。PDBに接続しており、この句を省略すると、CONTAINER=CURRENT
句が含まれます。 -
共通ユーザーとローカル・ユーザーの名前を同じにすることはできません。ただし、異なるPDBのローカル・ユーザーに同じ名前を使用できます。既存のユーザー・アカウントの名前を確認するには、
ALL_USERS
、CDB_USERS
、DBA_USERS
およびUSER_USERS
データ・ディクショナリ・ビューを問い合せます。 -
適切な権限があれば、PDBに接続されている共通ユーザーとローカル・ユーザーの両方で、ローカル・ユーザー・アカウントを作成できます。
親トピック: 共通ユーザーまたはローカル・ユーザーの作成
2.2.10.4 ローカル・ユーザー・アカウントを作成するためのCREATE USER文
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;
2.2.11 ユーザーのデフォルト・ロールの作成
デフォルト・ロールは、ユーザーがセッションを作成したときに、自動的にそのユーザーに対して使用可能になります。
ユーザーには複数のデフォルト・ロールを割り当てることができますが、割り当てなくてもかまいません。CREATE USER
文ではユーザーのデフォルト・ロールを設定できません。ユーザーを最初に作成すると、ユーザーのデフォルト・ロール設定はALL
であり、ユーザーにその後に付与されるすべてのロールがデフォルト・ロールになります。
-
ALTER USER
文を使用して、ユーザーのデフォルト・ロールを変更します。
たとえば:
GRANT USER rdale clerk_mgr; ALTER USER rdale DEFAULT ROLE clerk_mgr;
ロールをユーザーのデフォルト・ロールにするには、そのロールがユーザーに付与されている必要があります。
関連トピック
親トピック: ユーザー・アカウントの作成
2.3 ユーザー・アカウントの変更
ALTER USER
文で、デフォルトの表領域やプロファイル、ユーザー・パスワードの変更など、ユーザー・アカウントを変更します。
- ユーザー・アカウントの変更について
ユーザーのセキュリティ設定の変更は、現行セッションではなく、それより後のユーザー・セッションから反映されます。 - 共通またはローカル・ユーザー・アカウントの変更方法
ALTER USER
文またはPASSWORD
コマンドを使用して、共通ユーザー・アカウントとローカル・ユーザー・アカウントの両方を変更できます。 - SYS以外のユーザー・パスワードの変更
ユーザーは、自身のパスワードを変更できますが、他のユーザーのパスワードを変更するには、正しい権限が必要です。 - SYSユーザー・パスワードの変更
SYS
ユーザーのパスワードを変更するには、ORAPWD
コマンドライン・ユーティリティを使用する必要があります。
2.3.1 ユーザー・アカウントの変更について
ユーザーのセキュリティ設定の変更は、現行セッションではなく、それより後のユーザー・セッションから反映されます。
ほとんどの場合、ユーザーのセキュリティ設定を変更するには、ALTER USER
SQL文を使用します。ユーザーは、自分のパスワードを変更できます。ただし、ユーザーのセキュリティ・ドメインの他のオプションを変更するには、ALTER USER
システム権限が必要です。通常は、セキュリティ管理者のみがこのシステム権限を持ちます。これは、この権限によってすべてのユーザーのセキュリティ・ドメインを変更できるためです。この権限には、データベースの任意の表領域に対するユーザーの表領域割当て制限を設定する許可が含まれています。これは、変更を実行するユーザーが、指定した表領域に対する割当て制限を持っていない場合も同じです。
マルチテナント環境で共通ユーザー・アカウントを変更するには、共通に付与されるALTER USER
システム権限が必要です。ローカル・ユーザー・アカウントを変更するには、ローカル・ユーザー・アカウントが存在するPDB内で、共通に付与されるALTER USER
権限またはローカルに付与されるALTER USER
権限が必要です。
親トピック: ユーザー・アカウントの変更
2.3.2 共通ユーザー・アカウントまたはローカル・ユーザー・アカウントの変更方法
ALTER USER
文またはPASSWORD
コマンドを使用して、共通ユーザー・アカウントとローカル・ユーザー・アカウントの両方を変更できます。
既存の共通ユーザー・アカウントをローカル・ユーザー・アカウントに変更したり、ローカル・ユーザー・アカウントを共通ユーザー・アカウントに変更することはできません。この場合は、共通ユーザー・アカウントまたはローカル・ユーザー・アカウントとして、新しいアカウントを作成する必要があります。
次の例は、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
ビューを問い合せる場合はルートに関するデータにアクセスすることを可能にします。
パスワードを変更するにはALTER USER
を使用できますが、SYS
以外のユーザー・アカウントとSYS
ユーザー・アカウントの両方で、PASSWORD
コマンドを使用してパスワードを変更することをお薦めします。
親トピック: ユーザー・アカウントの変更
2.3.3 SYS以外のユーザー・パスワードの変更
ユーザーは、自身のパスワードを変更できますが、他のユーザーのパスワードを変更するには、正しい権限が必要です。
- SYS以外のユーザーのパスワードの変更について
ユーザーは、PASSWORD
コマンドまたはALTER USER
文を使用してパスワードを変更できます。 - PASSWORDコマンドまたはALTER USER文を使用したパスワードの変更
ほとんどのユーザーが、SQL*PlusのPASSWORD
コマンドまたはALTER USER
SQL文を使用して自身のパスワードを変更できます。
親トピック: ユーザー・アカウントの変更
2.3.3.1 SYS以外のユーザーのパスワードの変更について
ユーザーは、PASSWORD
コマンドまたはALTER USER
文を使用してパスワードを変更できます。
ユーザーが自分のパスワードを変更するには、特別な権限(データベースへの接続およびセッションの作成権限以外)は不要です。ユーザーには、自分のパスワードを頻繁に変更することを薦めてください。ALL_USERS
ビューを問い合せることで、現行データベース・インスタンスの既存のユーザーを検索できます。
セキュリティを強化するには、PASSWORD
コマンドを使用してアカウントのパスワードを変更します。ALTER USER
文では、新規パスワードが画面に表示されるため、他者に見られる可能性があります。PASSWORD
コマンドでは新規パスワードが表示されないため、自分のみが把握し、他者に知られることはありません。PASSWORD
コマンドは、ネットワーク上のパスワードも暗号化します。ALTER USER
はパスワードをクリア・テキストで送信するため、クライアントとデータベース間のネットワーク接続が暗号化されているか、セッションがネットワークを介してルーティングされないローカル・セッションである場合を除き、パスワードを使用しないでください。
ユーザーが認証方式を切り替えるには、PASSWORD
とALTER USER
権限が必要です。通常、この権限を持つのは管理者のみです。
関連トピック
親トピック: SYS以外のユーザー・パスワードの変更
2.3.3.2 PASSWORDコマンドまたはALTER USER文を使用したパスワードの変更
ほとんどのユーザーが、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以外のユーザー・パスワードの変更
2.3.4 SYSユーザー・パスワードの変更
SYS
ユーザーのパスワードを変更するには、ORAPWD
コマンドライン・ユーティリティを使用する必要があります。
- SYSユーザーのパスワードの変更について
ORAPWD
コマンドライン・ユーティリティで、SYS
ユーザー・パスワードが格納された新しいパスワード・ファイルを作成できます。 - SYSユーザーのパスワードを変更するためのORAPWDユーティリティ
ORAPWD
ユーティリティでは、SYS
ユーザーのパスワードを変更できます。
親トピック: ユーザー・アカウントの変更
2.3.4.1 SYSユーザーのパスワードの変更について
ORAPWD
コマンドライン・ユーティリティで、SYS
ユーザー・パスワードが格納された新しいパスワード・ファイルを作成できます。
次のことに注意してください。
-
SYS
ユーザー・アカウントは、ほとんどの内部再帰的SQLが使用します。そのため、ALTER USER
文を使用してこのパスワードを変更しようとするときにデータベースがオープンしていると、デッドロックが生じる可能性があります。この問題を回避するには、パスワード・ファイルを移行する際に、ORAPWD
のsys
オプションをy
に設定します。次の構文を使用します。orapwd input_file=input_file_name file=file_name sys=y force=y Enter password for SYS: new_password
- インスタンス初期化パラメータ
REMOTE_LOGIN_PASSWORDFILE
がSHARED
またはnullに設定されている場合、SYS
パスワードは変更できません。REMOTE_LOGIN_PASSWORDFILE
をSHARED
に設定した場合、パスワードを変更するALTER USER
文は、「ORA-28046: SYSのパスワードは変更できません」
エラーで失敗します。REMOTE_LOGIN_PASSWORDFILE
がnullの場合、またはNONE
に設定されている場合は、パスワードを変更しようとすると失敗し、「ORA-01994: パスワード・ファイルが欠落しているか、無効です」
というエラーが発生します。
-
新しいアカウントは、
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ディスク・グループに格納してください。パスワード・ファイルが共有されておらず、パスワードが変更されている場合は、Oracle RACクラスタのすべてのノードにパスワード・ファイルをコピーする必要があります。
関連項目:
-
orapwd
コマンド構文と引数の詳細は、『Oracle Database管理者ガイド』を参照してください。
親トピック: SYSユーザー・パスワードの変更
2.3.4.2 SYSユーザーのパスワードを変更するためのORAPWDユーティリティ
ORAPWD
ユーティリティでは、SYS
ユーザーのパスワードを変更できます。
ORAPWD
ユーティリティでINPUT_FILE
パラメータを使用して、SYS
ユーザーのパスワードを変更できます。パスワード・ファイルを特定の形式に移行するには、FORMAT
オプションを指定します。デフォルトでは、FORMAT
オプションが指定されていない場合の形式は12.2
です。
データベースがオープンしているときにALTER USER
文を使用してSYS
パスワードを変更すると、デッドロックが発生することがあります。かわりに、ORAPWD
ユーティリティを使用して、SYS
ユーザー・パスワードを変更します。ORAPWD
ユーティリティを使用してSYS
ユーザーの新しいパスワードを設定するには、SYS
オプションをY
(はい)に設定し、INPUT_FILE
パラメータを使用して現在のパスワード・ファイル名を指定し、FILE
パラメータを使用して元のパスワード・ファイルの移行先のパスワード・ファイルを作成します。たとえば:
ORAPWD INPUT_FILE='orapworcl' FILE='orapwd' SYS=Y
Enter password for SYS: new_password
パスワード・ファイルを別の形式に移行しない場合、input_file
と同じ形式を指定できます。たとえば、入力ファイルorapworcl
の形式が12
で、SYS
ユーザー・パスワードを変更する場合、次のようになります。
ORAPWD INPUT_FILE='orapworcl' FILE='orapwd' FORMAT=12 SYS=Y
Enter password for SYS: new_password
関連項目:
ORAPWD
ユーティリティの詳細は、『Oracle Database管理者ガイド』を参照してください。
親トピック: SYSユーザー・パスワードの変更
2.4 ユーザー・リソース制限の構成
リソースの制限により、ユーザーに利用可能なシステム・リソースの量が決まります。
- ユーザー・リソース制限について
ユーザーのセキュリティ・ドメインの一部として、各ユーザーが使用できるシステム・リソースの容量に制限を設定できます。 - システム・リソースのタイプと制限
CPU時間や論理読取りなど、各種のシステム・リソースについて、セッション・レベル、コール・レベルまたはその両方のレベルで制限を課すことができます。 - プロファイルのリソース制限の値
プロファイルを作成しリソース制限を設定する前に、各リソース制限について適切な値を決定する必要があります。 - プロファイルによるリソースの管理
プロファイルとは、ユーザーのデータベース使用とインスタンス・リソースを制限する一連のリソース制限およびパスワード・パラメータに名前を付けたものです。
2.4.1 ユーザー・リソース制限について
ユーザーのセキュリティ・ドメインの一部として、各ユーザーが使用できるシステム・リソースの容量に制限を設定できます。
そうすることで、CPUタイムなど貴重なシステム・リソースが無制限に消費されることを防ぐことができます。
このリソース制限機能は、システム・リソースに多額の費用がかかる大規模なマルチ・ユーザー・システムでは非常に有効です。1人以上のユーザーが過度にリソースを使用すると、データベースの他のユーザーに有害な影響を与える可能性があります。シングル・ユーザー・データベースや小規模なマルチ・ユーザー・データベースの場合は、ユーザーがシステム・リソースを消費しても影響は少ないため、システム・リソース機能はそれほど重要ではありません。
ユーザーのリソース制限は、データベース・リソース・マネージャを使用して管理します。パスワード管理の作業環境は、ユーザーごとに個別にプロファイルを使用して設定するか、または多数のユーザー用のデフォルト・プロファイルを使用して設定できます。それぞれのOracleデータベースに指定できるプロファイルの数に、制限はありません。Oracle Databaseでは、セキュリティ管理者が、プロファイルによるリソース制限の規定を全体的に使用可能または使用禁止に設定できます。
リソース制限を設定すると、ユーザーによるセッション作成時に、パフォーマンスがわずかに低下します。これは、各ユーザーがデータベースに接続した時点で、そのユーザーのすべてのリソース制限データがロードされるためです。
関連項目:
リソース制限の設定の詳細は、『Oracle Database管理者ガイド』を参照してください。
親トピック: ユーザー・リソース制限の構成
2.4.2 システム・リソースのタイプと制限
CPU時間や論理読取りなど、各種のシステム・リソースについて、セッション・レベル、コール・レベルまたはその両方のレベルで制限を課すことができます。
- ユーザー・セッション・レベルの制限
ユーザーがデータベースに接続すると、セッションが作成されます。セッションではCPU時間とメモリーが使用されますが、これらに制限を設定できます。 - データベース・コール・レベルの制限
ユーザーがSQL文を実行するたびに、Oracle Databaseでは、いくつかのステップが実行され文が処理されます。 - CPU時間の制限
SQL文やその他のコールがOracle Databaseに発行されると、そのコールを処理するためにCPU時間が必要になります。 - 論理読取りの制限
入出力(I/O)は、データベース・システムで最もリソースの使用量が多い操作の1つです。 - その他のリソースの制限
ユーザーの同時セッション数やアイドル時間に制限を設定できます。
親トピック: ユーザー・リソース制限の構成
2.4.2.1 ユーザー・セッション・レベルの制限
ユーザーがデータベースに接続すると、セッションが作成されます。セッションではCPU時間とメモリーが使用されますが、これらに制限を設定できます。
複数のリソース制限をセッション・レベルで設定できます。ユーザーがセッション・レベルのリソース限度を超えると、Oracle Databaseは現在の文を終了(ロールバック)して、セッション限度に達したことを示すメッセージを返します。この時点で、カレント・トランザクションのそれ以前の文のすべてがそのまま残り、ユーザーが実行できる操作のみがCOMMIT
、ROLLBACK
、または切断になります(この場合、カレント・トランザクションはコミットされます)。他のすべての操作はエラーになります。トランザクションがコミットまたはロールバックされた後も、ユーザーはこれ以上の作業をカレント・セッション中は完了できません。
親トピック: システム・リソースのタイプと制限
2.4.2.2 データベース・コール・レベルの制限
ユーザーがSQL文を実行するたびに、Oracle Databaseでは、いくつかのステップが実行され文が処理されます。
SQL文の処理では、データベースに対して複数のコールが異なる実行フェーズの一部として発行されます。1回のコールで過度にシステムが使用されないように、Oracle Databaseでは、複数のリソース制限をコール・レベルで設定できます。
ユーザーがコール・レベルのリソース制限を超えると、Oracle Databaseは文の処理を停止してその文をロールバックし、エラーを戻します。ただし、カレント・トランザクションのそれ以前の文の結果はそのまま残り、そのユーザー・セッションは接続されたままになります。
親トピック: システム・リソースのタイプと制限
2.4.2.3 CPU時間の制限
SQL文やその他のコールがOracle Databaseに発行されると、そのコールを処理するためにCPU時間が必要になります。
平均的なコールであれば、わずかなCPUタイムですみます。ただし、大量のデータや冗長な問合せを伴うSQL文はCPUタイムを大量に使用することがあるため、他の処理に使用できるCPUタイムが少なくなります。
CPUタイムが無制限に消費されないようにするため、1回のコール当たりのCPUタイムと、1つのセッション中にOracle Databaseコールに使用されるCPUタイムの合計に対して、固定した制限または動的な制限を設定できます。これらの制限は、コールやセッションに使用される1/100秒(0.01秒)単位のCPUタイムで設定し、測定されます。
親トピック: システム・リソースのタイプと制限
2.4.2.4 論理読取りの制限
入出力(I/O)は、データベース・システムで最もリソースの使用量が多い操作の1つです。
I/Oを集中的に実行するSQL文は、メモリーとディスクの使用を独占することがあるため、他のデータベース操作がこれらのリソースをめぐって競合する原因になる可能性があります。
単一の原因による過度のI/Oが発生しないようにするために、1コール当たりおよび1セッション当たりの論理データ・ブロック読取り数を制限できます。論理データ・ブロック読取りには、メモリーとディスクの両方からの論理データ・ブロック読取りが含まれます。これらの制限は、1コールまたは1セッション中に実行されるブロック読取りの数として設定し、測定されます。
親トピック: システム・リソースのタイプと制限
2.4.2.5 その他のリソースの制限
ユーザーの同時セッション数やアイドル時間に制限を設定できます。
その他のリソースの制限を次に示します。
-
ユーザー当たりの同時実行セッション数の制限。各ユーザーは、事前に定義された数まで同時実行セッションを作成できます。
-
セッションのアイドル時間の制限。1つのセッションでのコール間の時間がアイドル制限時間に達すると、カレント・トランザクションがロールバックされてセッションは終了し、そのセッションのリソースはシステムに戻されます。次のコールは、ユーザーがインスタンスから切断されたことを示すエラーを受け取ります。この制限は、分単位の経過時間として設定します。
ノート:
セッションがアイドル時間の制限を超えたために終了すると、その少し後に、終了したセッションの後処理としてプロセス・モニター(PMON)・バックグラウンド・プロセスがクリーン・アップを実行します。PMONがこのプロセスを完了するまでは、終了したセッションも、セッションまたはユーザー・レベルのリソース制限に加算されます。
-
セッション当たりの経過接続時間の制限。セッションの持続時間が経過制限時間を超えると、カレント・トランザクションがロールバックされてセッションが削除され、そのセッションのリソースがシステムに戻されます。この制限は、分単位の経過時間として設定します。
ノート:
Oracle Databaseは、経過アイドル時間や経過接続時間を絶えず監視しているわけではありません。絶えず監視した場合、システム・パフォーマンスが低下します。そのかわり数分ごとにチェックします。このため、Oracle Databaseがこの制限を規定してからセッションを終了させるまでの間に、セッションはこの制限をわずかに(5分など)超える可能性があります。
-
セッションのプライベート・システム・グローバル領域(SGA)(プライベートSQL領域に使用)の容量の制限。この制限が重要になるのは、共有サーバーの構成を使用するシステムの場合のみです。それ以外のシステムの場合、プライベートSQL領域はプログラム・グローバル領域(PGA)内にあります。この制限は、インスタンスのSGAに使用するメモリーのバイト数として設定します。KBまたはMBで指定するには、KまたはMの文字を使用します。
関連項目:
リソース管理の詳細は、『Oracle Database管理者ガイド』を参照してください
親トピック: システム・リソースのタイプと制限
2.4.3 プロファイルのリソース制限の値
プロファイルを作成しリソース制限を設定する前に、各リソース制限について適切な値を決定する必要があります。
リソース制限の値は、典型的なユーザーが実行する操作のタイプを基準として決定できます。たとえば、あるクラスのユーザーが通常は大量の論理データ・ブロック読取りを実行しない場合は、ALTER RESOURCE COST
SQL文を使用して、LOGICAL_READS_PER_SESSION
設定を控えめに設定します。
通常、ユーザー・プロファイルの適切なリソース制限値を決定するには、それぞれのタイプのリソースの使用状況について履歴情報を収集するのが最善です。たとえば、データベース管理者やセキュリティ管理者は、AUDIT
SESSION
句を使用して、CONNECT_TIME
およびLOGICAL_READS_PER_SESSION
の制限値についての情報を収集できます。
その他の制限値の統計情報は、Oracle Enterprise Manager(またはSQL*Plus)のモニター機能、特に統計モニターを使用して収集できます。
親トピック: ユーザー・リソース制限の構成
2.4.4 プロファイルによるリソースの管理
プロファイルとは、ユーザーのデータベース使用とインスタンス・リソースを制限する一連のリソース制限およびパスワード・パラメータに名前を付けたものです。
- プロファイルについて
プロファイルとは、ユーザーに適用される属性の集合です。 - ora_stig_profileユーザー・プロファイル
ora_stig_profile
ユーザー・プロファイルは、セキュリティ技術導入ガイドに準拠するように設計されています。 - プロファイルの作成
プロファイルには、パスワードの制限やリソースの制限など、特定のカテゴリに対する制限が含まれます。 - CDBプロファイルまたはアプリケーション・プロファイルの作成
CREATE PROFILE
またはALTER PROFILE
文のCONTAINER=ALL
句で、CDBまたはアプリケーション・ルート内にプロファイルを作成できます。 - ユーザーへのプロファイルの割当て
プロファイルの作成後、ユーザーにプロファイルを割り当てることができます。 - プロファイルの削除
プロファイルは、現在ユーザーに割り当てられている場合でも削除できます。
親トピック: ユーザー・リソース制限の構成
2.4.4.1 プロファイルについて
プロファイルとは、ユーザーに適用される属性の集合です。
プロファイルは、これらの属性を複数のユーザーで共有する場合に参照される単一ポイントです。
profileを各ユーザーに割り当てる必要があります。各ユーザーに割り当てることができるプロファイルは1つのみで、新しいプロファイルを作成すると、以前の割当てと置き換えられます。
ユーザー・プロファイルを作成および管理できるのは、リソース制限がデータベースのセキュリティ・ポリシーの要件である場合のみです。プロファイルを使用するには、最初にデータベース内のユーザーの関連タイプを分類します。ロールを使用して関連ユーザーの権限を管理するのと同様に、プロファイルを使用して関連ユーザーのリソース制限を管理します。データベース内のすべてのカテゴリのユーザーを含めるために必要なプロファイル数を決定してから、プロファイルごとに適切なリソース制限を決定します。
Oracle Internet Directoryのユーザー・プロファイルには、各ユーザーのディレクトリ使用と認証に関連した属性が含まれています。同様に、Oracle Label Securityのプロファイルには、Oracle Label Securityのユーザー管理や操作管理に役立つ属性が含まれています。プロファイル属性にはシステム・リソースに関する制限を含めることができます。データベース・リソース・マネージャを使用すると、これらのタイプのリソース制限を設定できます。
マルチテナント環境では、プロファイルは、コンテナ・データベース(CDB)およびアプリケーション・コンテナのほか、それらが関連付けられたプラガブル・データベース(PDB)で行われる管理および操作に役立ちます。CDBとアプリケーション・コンテナのいずれの場合でも、共通プロファイルを定義すると、そのプロファイルはコンテナ全体に適用され、コンテナ外には適用されません。ローカル・プロファイルを作成した場合、プロファイルはそのPDBにのみ適用されます。
プロファイルのリソース制限が適用されるのは、対応するデータベースのリソース制限が使用可能な場合のみです。このリソース制限が使用可能になるのは、データベースの起動前(RESOURCE_LIMIT
初期化パラメータを使用)またはオープン中(ALTER SYSTEM
文を使用)のいずれかです。
パスワード・パラメータはプロファイル内にありますが、RESOURCE_LIMIT
またはALTER SYSTEM
の影響は受けず、パスワード管理は常に使用可能です。Oracle Databaseでは、主にデータベース・リソース・マネージャによって、リソースの割当てと制限が処理されます。
認可されたデータベース・ユーザーは、プロファイルの作成、ユーザーへの割当て、変更および削除を(CREATE USER
またはALTER USER
文を使用して)随時実行できます。プロファイルは、ロールや他のプロファイルではなく、ユーザーにのみ割り当てることができます。プロファイルの割当ては現行のセッションには影響を与えず、それより後のセッションにのみ有効です。
現行のプロファイルに関する情報を検索するには、DBA_PROFILES
ビューを問い合せます。
関連項目:
リソース管理の詳細は、『Oracle Database管理者ガイド』を参照してください親トピック: プロファイルによるリソースの管理
2.4.4.2 ora_stig_profileユーザー・プロファイル
ora_stig_profile
ユーザー・プロファイルは、セキュリティ技術導入ガイドに準拠するように設計されています。
ora_stig_profile
ユーザー・プロファイルは、パスワード複雑度ファンクション、ログインの最大失敗回数、最大再利用回数などの要件を求めるSTIG要件に対応します。このプロファイルの定義は次のとおりです。 CREATE PROFILE ora_stig_profile password_life_time 60 password_grace_time 5 password_reuse_time 365 password_reuse_max 10 failed_login_attempts 3 password_lock_time unlimited inactive_account_time 35 idle_time 15 password_verify_function ora12c_stig_verify_function;
親トピック: プロファイルによるリソースの管理
2.4.4.3 プロファイルの作成
プロファイルには、パスワードの制限やリソースの制限など、特定のカテゴリに対する制限が含まれます。
プロファイルを作成する場合、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;
このプロファイルはPDBでローカルに作成できます。共通プロファイルを作成する場合は、プロファイル名にc##
という接頭辞を指定する必要があります(たとえば、c##password_prof
)。
次の例は、リソース制限プロファイルの作成方法を示しています。
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;
関連トピック
親トピック: プロファイルによるリソースの管理
2.4.4.4 CDBプロファイルまたはアプリケーション・プロファイルの作成
CREATE PROFILE
またはALTER PROFILE
文のCONTAINER=ALL
句で、CDBまたはアプリケーション・ルート内にプロファイルを作成できます。
たとえば:
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 CONTAINER=ALL;
親トピック: プロファイルによるリソースの管理
2.4.4.5 ユーザーへのプロファイルの割当て
プロファイルの作成後、ユーザーにプロファイルを割り当てることができます。
すでにプロファイルを割り当てられているユーザーにプロファイルを割り当てることはできますが、直近に割り当てられたプロファイルが優先されます。外部ユーザーまたはグローバル・ユーザーにプロファイルを割り当てる場合、パスワードのパラメータは、そのユーザーに対して有効ではありません。
ユーザーに現在割り当てられているプロファイルを検索するには、DBA_USERS
ビューを問い合せます。
-
ALTER USER
文を使用して、ユーザーにプロファイルを割り当てます。
たとえば:
ALTER USER psmith PROFILE app_user;
親トピック: プロファイルによるリソースの管理
2.4.4.6 プロファイルの削除
プロファイルは、現在ユーザーに割り当てられている場合でも削除できます。
プロファイルを削除しても、現在アクティブなセッションに影響はありません。プロファイルの削除後に作成されたセッションのみが、変更されたプロファイル割当てを使用します。プロファイルを削除するには、DROP PROFILE
システム権限が必要です。デフォルトのプロファイルは削除できません。
-
プロファイルを削除するには、SQL文の
DROP PROFILE
を使用します。ユーザーに現在割り当てられているプロファイルを削除するには、CASCADE
オプションを使用します。
たとえば:
DROP PROFILE clerk CASCADE;
削除するプロファイルに現在割り当てられているユーザーは、自動的にDEFAULT
プロファイルに割り当てられます。DEFAULT
プロファイルは削除できません。
関連項目:
DROP PROFILE
SQL文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
親トピック: プロファイルによるリソースの管理
2.5 ユーザー・アカウントの削除
ユーザーのスキーマにオブジェクトがある場合、そのユーザーがセッション中でなければユーザー・アカウントを削除できます。
- ユーザー・アカウントの削除について
ユーザー・アカウントを削除する前に、削除に適した権限があることを確認する必要があります。 - ユーザー・セッションの終了
データベースに接続されているユーザーは削除できません。 - ユーザーがデータベースから切断した後のユーザーの削除について
ユーザーがデータベースから切断した後に、DROP USER
文を使用してユーザーを削除できます。 - スキーマにオブジェクトが含まれるユーザーの削除
スキーマ内にオブジェクトを格納しているユーザーを削除する前に、スキーマ・オブジェクトを削除した場合の影響を徹底的に調べます。
2.5.1 ユーザー・アカウントの削除について
ユーザー・アカウントを削除する前に、削除に適した権限があることを確認する必要があります。
いずれの環境でユーザー・アカウントを削除する場合でも、DROP USER
システム権限が必要です。マルチテナント環境で共通ユーザー・アカウントを削除するには、共通に付与されるDROP USER
システム権限が必要です。ローカル・ユーザー・アカウントを削除するには、ローカル・ユーザー・アカウントが存在するPDB内で、共通に付与されるDROP USER
権限またはローカルに付与されるDROP USER
権限が必要です。
ユーザー・アカウントを削除すると、Oracle Databaseではこのユーザー・アカウントおよび対応するスキーマがデータ・ディクショナリから削除されます。さらに、ユーザー・スキーマに含まれているすべてのスキーマ・オブジェクトも(存在する場合)削除されます。
ノート:
-
ユーザーのスキーマとそれに対応するオブジェクトは残したままで、データベースへのアクセスを拒否する場合は、そのユーザーから
CREATE SESSION
権限を取り消してください。 -
SYS
ユーザーまたはSYSTEM
ユーザーは削除しないでください。これらのユーザーを削除すると、データベースが破損します。
親トピック: ユーザー・アカウントの削除
2.5.2 ユーザー・セッションの終了
データベースに接続されているユーザーは削除できません。
関連項目:
セッションの終了の詳細は、『Oracle Database管理者ガイド』を参照してください。
親トピック: ユーザー・アカウントの削除
2.5.3 ユーザーがデータベースから切断した後のユーザーの削除について
ユーザーがデータベースから切断した後に、DROP USER
文を使用してユーザーを削除できます。
ユーザーとそのユーザーのスキーマ・オブジェクト(ある場合)をすべて削除するには、DROP USER
システム権限が必要です。DROP USER
システム権限は強力な権限であるため、通常はセキュリティ管理者のみがこの権限を持ちます。
ユーザーのスキーマに依存型のスキーマ・オブジェクトが含まれている場合に、ユーザーと対応付けられているすべてのオブジェクト、およびそのユーザーの表に依存している外部キーをすべて削除するには、CASCADE
オプションを使用します。CASCADE
を指定していない場合は、ユーザーのスキーマに依存型のオブジェクトが含まれていると、エラー・メッセージが戻され、ユーザーは削除されません。
親トピック: ユーザー・アカウントの削除
2.5.4 スキーマにオブジェクトが含まれるユーザーの削除
スキーマ内にオブジェクトを格納しているユーザーを削除する前に、スキーマ・オブジェクトを削除した場合の影響を徹底的に調べます。
親トピック: ユーザー・アカウントの削除
2.6 データベース・ユーザーおよびプロファイルのデータ・ディクショナリ・ビュー
Oracle Databaseには、ユーザーとプロファイルの作成に使用した設定の情報を提供する、一連のデータ・ディクショナリ・ビューがあります。
- ユーザーとプロファイルに関する情報を表示するデータ・ディクショナリ・ビュー
Oracle Databaseには、データベース・ユーザーおよびプロファイルに関する情報を含むデータ・ディクショナリ・ビュー一式が用意されています。 - すべてのユーザーと関連情報を検索する問合せ
DBA_USERS
データ・ディクショナリ・ビューには、データベースで定義されているすべてのユーザーとその関連情報が表示されます。 - すべての表領域の割当て制限を表示する問合せ
DBA_TS_QUOTAS
データ・ディクショナリ・ビューには、各ユーザーに割り当てられているすべての表領域割当てが表示されます。 - すべてのプロファイルと割り当てられている制限を表示する問合せ
DBA_PROFILE
ビューには、データベース内のすべてのプロファイル、および各プロファイルの制限ごとの関連設定がリストされます。 - 各ユーザー・セッションのメモリー使用量を表示する問合せ
V$SESSION
動的ビューには、各ユーザー・セッションのメモリー使用量が表示されます。
2.6.1 ユーザーとプロファイルに関する情報を表示するデータ・ディクショナリ・ビュー
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;
2.6.2 すべてのユーザーと関連情報を検索する問合せ
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
2.6.3 すべての表領域の割当て制限を表示する問合せ
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
が表示されます。
2.6.4 すべてのプロファイルと割り当てられている制限を表示する問合せ
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.
2.6.5 各ユーザー・セッションのメモリー使用量を表示する問合せ
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'
に置き換えてください。