この章の内容は、次のとおりです。
各Oracleデータベースには、有効なデータベース・ユーザーのリストがあります。データベースにアクセスするには、ユーザーは、データベース・アプリケーションを実行し、データベースに定義されている有効なユーザー名を使用して、データベース・インスタンスに接続する必要があります。Oracle Databaseでは、ユーザーのセキュリティを様々な方法で設定できます。ユーザー・アカウントの作成時に、ユーザー・アカウントに対して制限を指定できます。ユーザーのセキュリティ・ドメインの一部として、各ユーザーが使用できる各種のシステム・リソースの容量に制限を設定することもできます。Oracle Databaseには、リソースやセッションなどの情報を検索する際に問い合せることができる一連のデータベース・ビューが用意されています。この章では、プロファイルについても説明します。プロファイルは、ユーザーに適用される属性の集合で、それらの属性を共有する複数ユーザーの中の任意のユーザーに関する単一の参照になります。
ユーザー・セキュリティの別の管理方法は、ユーザー権限とロールを割り当てることです。詳細は、第4章「権限とロール認可の構成」を参照してください。
この項の内容は、次のとおりです。
ユーザー・アカウントおよびパスワードの作成と管理のガイドラインは、次の各項を参照してください。
データベース・ユーザーを作成するには、CREATE USER
文を使用します。ユーザーを作成するには、CREATE USER
システム権限が必要です。CREATE USER
は強力なシステム権限であるため、通常、この権限を持つユーザーはデータベース管理者またはセキュリティ管理者のみです。
例2-1では、ユーザーを作成し、ユーザー・パスワード、デフォルト表領域、一時セグメントが作成される一時表領域、表領域割当て制限およびプロファイルを指定しています。また、データベース・セッションにログインするための最低限の権限であるCONNECT
およびCREATE SESSION
をユーザーに付与しています。
例2-1 CONNECTおよびCREATE SESSION権限を付与したユーザー・アカウントの作成
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;
GRANT CREATE SESSION TO jward;
password
を安全なパスワードに置き換えます。詳細は、「パスワードの最低要件」を参照してください。
新しく作成したユーザーは、CREATE SESSION
システム権限が付与されるまで、データベースに接続できません。そのため、ユーザー・アカウントの作成直後に、GRANT
SQL文を使用して、この権限をユーザーに付与します。Oracle Enterprise Managerへのアクセスが必要なユーザーには、SELECT ANY DICTIONARY
権限も付与する必要があります。
注意: セキュリティ管理者は、独自のロールを作成し、必要な権限のみを割り当てる必要があります。たとえば、それまで CONNECT 権限を付与されていた多くのユーザーは、CONNECT で提供されていた追加権限を必要とはしていませんでした。そのかわり、実際にはCREATE SESSION のみが必要であったため、事実、CONNECT が今も保持しているのはこの権限のみです。
組織固有のロールを作成することによって、組織で割り当てる権限を詳細に制御でき、Oracle Databaseが定義するロールが将来のリリースで変更された場合に組織を保護できます。たとえば、 |
各データベース内のユーザー名は、他のユーザー名およびロールと比較して一意であることが必要です。ユーザーとロールに同じ名前を付けることはできません。また、各ユーザーには対応するスキーマがあります。スキーマ内の各スキーマ・オブジェクトには、必ず一意の名前を指定する必要があります。次の例で、太字のテキストはユーザー名の作成方法を示しています。
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;
例2-1では、データベースを使用して新規ユーザーを認証しています。この場合、接続に成功するために、接続ユーザーはデータベースに対して正しいパスワードを指定する必要があります。ユーザーのパスワードを指定するには、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;
関連項目:
|
各ユーザーには、デフォルト表領域が必要です。ユーザーがスキーマ・オブジェクトを作成したときに格納する表領域を指定しない場合、Oracle Databaseはそのオブジェクトをデフォルトのユーザー表領域に格納します。
すべてのユーザーのデフォルト表領域に対するデフォルト設定は、SYSTEM
表領域です。ユーザーがオブジェクトを作成せず、オブジェクトを作成するための権限も持っていない場合は、デフォルト設定のままで問題ありません。ただし、任意のタイプのオブジェクトを作成する可能性があるユーザーには、デフォルト表領域(USERS
表領域など)を明示的に割り当てる必要があります。SYSTEM
以外の表領域を使用すると、同じデータ・ファイルに対するデータ・ディクショナリ・オブジェクトとユーザー・オブジェクト間の競合が解消されます。通常、ユーザー・データはSYSTEM
表領域に格納しないでください。
CREATE TABLESPACE
SQL文を使用すると、データベースの作成時に、SYSTEM
以外の永続的なデフォルト表領域を作成できます。この表領域は、永続オブジェクトに対するデータベースのデフォルトとして使用されます。ユーザー・データとシステム・データを分離すると、SYSTEM
表領域に関する問題が発生する可能性が低くなります。この表領域で問題が発生すると、状況によってはデータベース全体が機能しなくなる場合があります。このデフォルト永続表領域は、システム・ユーザーであるSYS
、SYSTEM
およびOUTLN
には使用されません。システム・ユーザーのデフォルト永続表領域はSYSTEM
です。デフォルト永続表領域に指定された表領域は削除できません。削除するには、その前に別の表領域をデフォルト永続表領域として指定する必要があります。ALTER TABLESPACE
SQL文を使用すると、デフォルト永続表領域を別の表領域に変更できます。これによって、ALTER
DDL文のコミット後に作成されたすべてのユーザーまたはオブジェクトが影響を受けることに注意してください。
ユーザー作成時に、そのユーザーのデフォルト表領域を設定しておき、作成後にALTER USER
文を使用して変更することもできます。ユーザーのデフォルト表領域を変更すると、設定の変更後に作成されたオブジェクトのみがこの変更の影響を受けます。
ユーザーのデフォルト表領域を指定するときは、その表領域に対する割当て制限もあわせて指定してください。
次のCREATE USER
文では、ユーザーjward
のデフォルト表領域はdata_ts
であり、その表領域でのjwardの割当て制限は500KB
です。
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;
各ユーザーには、任意の表領域(一時表領域を除く)に対する表領域割当て制限を設定できます。割当て制限による影響は、次のとおりです。
特定タイプのオブジェクトを作成する権限があるユーザーは、指定した表領域内にオブジェクトを作成できます。
Oracle Databaseでは、指定した表領域内にあるユーザーのオブジェクトの記憶域に対して割当て可能な領域は、割当て制限以内に制限されます。
デフォルトでは、ユーザーにはデータベース内の表領域に関する割当て制限はありません。ユーザーにスキーマ・オブジェクトを作成する権限がある場合は、必ず割当て制限を設定して、ユーザーがオブジェクトを作成できるようにします。少なくとも、デフォルト表領域に対する割当て制限をユーザーに割り当てます。さらに、オブジェクトの作成が可能な他の表領域に対して追加の割当て制限を割り当てます。
次のCREATE USER
文では、test_ts
および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;
ユーザーの割当て制限では、各表領域の一定量のディスク領域を個別に割り当てるか、またはすべての表領域のディスク領域を無制限に割り当てるかのどちらかを選択できます。一定量の割当て制限を設定すると、ユーザーのオブジェクトによってデータベースの領域が大量に使用されるのを防止できます。
ユーザー表領域の割当て制限は、ユーザーの作成時に設定しますが、作成後に追加または変更できます(USER_TS_QUOTAS
ビューを問い合せることで、既存のユーザーの割当て制限を検索できます)。新しい割当て制限が古い制限値よりも少ない場合は、次の条件が成立します。
ユーザーがすでに新しい表領域割当て制限を超過している場合は、これらのオブジェクトをあわせた領域が新しい割当て制限より少なくならないかぎり、その表領域のユーザー・オブジェクトに追加の領域を割り当てることはできません。
ユーザーが新しい表領域割当て制限を超過していない場合、つまり表領域内でユーザーのオブジェクトが使用している領域が新しい表領域割当て制限よりも少ない場合は、そのユーザーのオブジェクトに新しい割当て制限までの領域を割り当てることができます。
表領域内にオブジェクトを作成するための許可をユーザーから取り消すには、ALTER USER
SQL文を使用してそのユーザーの現行の割当て制限を0(ゼロ)に変更します。割当て制限を0(ゼロ)に変更すると、表領域内のユーザーのオブジェクトはそのまま残りますが、新しいオブジェクトを作成したり、既存のオブジェクトに新たな領域を割り当てることはできません。
データベース内の表領域を無制限に使用することをユーザーに許可するには、そのユーザーにUNLIMITED TABLESPACE
システム権限を付与します。これによって、ユーザーに対して明示的に指定されている表領域割当て制限がすべて置き換えられます。この権限を後で取り消すと、明示的に指定された割当て制限が再び有効になります。この権限は、ロールに対してではなく、ユーザーに対してのみ付与できます。
UNLIMITED TABLESPACE
システム権限を付与する前に、この方法のメリットとデメリットを考慮する必要があります。
メリット
データベースのすべての表領域に無制限にアクセスできる権限を1つの文でユーザーに付与できます。
デメリット
各ユーザーには、一時表領域を割り当てる必要があります。ユーザーが一時セグメントを必要とするSQL文を実行すると、このセグメントはそのユーザーの一時表領域に格納されます。これらの一時セグメントは、ソート操作または結合操作の実行時にシステムによって作成されます。一時セグメントは、すべての表領域のリソースに関する権限を持つSYS
が所有します。
次の例では、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;
一時表領域を作成するには、CREATE TEMPORARY TABLESPACE
SQL文を使用します。
ユーザーの一時表領域を明示的に割り当てない場合、そのユーザーには、データベース作成時に指定された、または作成後にALTER DATABASE
文によって指定されたデフォルト一時表領域が割り当てられます。デフォルトの一時表領域が明示的に割り当てられていない場合、デフォルトはSYSTEM
表領域またはシステム管理者が設定した別のデフォルト永続表領域になります。ユーザー・データはSYSTEM
表領域に格納しないでください。一時表領域として使用する表領域を明示的に割り当てることによって、一時セグメントとそれ以外のタイプのセグメントとの間で発生するファイルの競合が解消されます。
注意: SYSTEM 表領域がローカル管理の場合、ユーザーには特定のデフォルト(ローカル管理)一時表領域を割り当てる必要があります。永続的なローカル管理表領域には、一時オブジェクトを格納できないため、SYSTEM 表領域の使用はデフォルトで禁止されます。 |
ユーザー作成時に、そのユーザーの一時表領域を設定しておき、作成後にALTER USER
文を使用して変更できます。 ユーザーSYS
としてログインした場合は、一時表領域の割当て制限および他の領域の割当てを設定できます。(この操作を実行できるのは、ユーザーSYS
のみです。これは、一時表領域のすべての領域がユーザーSYS
に属しているためです。)個々の一時表領域を割り当てるかわりに、表領域グループを設定することもできます。
ユーザーの作成時に、プロファイルを指定できます。プロファイルとは、データベース・リソースとそのデータベースへのパスワード・アクセスに関する一連の制限です。プロファイルを指定しない場合、ユーザーにはデフォルト・プロファイルが割り当てられます。
次の例は、ユーザーにプロファイルを割り当てる方法を示しています。
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;
ロールは、関連する権限のグループに名前を付けたもので、ユーザーや他のロールに付与します。デフォルト・ロールは、ユーザーがセッションを作成したときに、自動的にそのユーザーに対して使用可能になります。ユーザーには複数のデフォルト・ロールを割り当てることができますが、割り当てなくてもかまいません。
ユーザーのデフォルト・ロールは、CREATE USER
文では設定できません。最初にユーザーを作成したときに、そのユーザーのデフォルト・ロールはALL
に設定されます。これによって、その後ユーザーに付与されるロールはすべてデフォルト・ロールになります。ユーザーのデフォルト・ロールを変更するには、ALTER USER
文を使用します。次に例を示します。
GRANT USER jward clerk_role; ALTER USER jward DEFAULT ROLE clerk_role;
ロールをユーザーのデフォルト・ロールにするには、そのロールがユーザーに付与されている必要があります。
ユーザーは自分のパスワードを変更できます。ただし、ユーザーのセキュリティ・ドメインの他のオプションを変更するには、ALTER USER
システム権限が必要です。通常は、セキュリティ管理者のみがこのシステム権限を持ちます。これは、この権限によってすべてのユーザーのセキュリティ・ドメインを変更できるためです。この権限には、データベースの任意の表領域に対するユーザーの表領域割当て制限を設定する許可が含まれています。これは、変更を実行するユーザーが、指定した表領域に対する割当て制限を持っていない場合も同じです。
ユーザーのセキュリティ設定を変更するには、ALTER USER
SQL文を使用します。ユーザーのセキュリティ設定の変更は、現行セッションではなく、それより後のユーザー・セッションから反映されます。
例2-2に、ALTER USER
文を使用してユーザーavyrros
のセキュリティ設定を変更する方法を示します。
例2-2 ユーザー・アカウントの変更
ALTER USER avyrros IDENTIFIED EXTERNALLY DEFAULT TABLESPACE data_ts TEMPORARY TABLESPACE temp_ts QUOTA 100M ON data_ts QUOTA 0 ON test_ts PROFILE clerk;
このALTER USER
文によって、ユーザーavyrros
のセキュリティ設定は次のように変更されます。
認証方式は、ユーザーavyrros
のオペレーティング・システム・アカウントが使用されます。
ユーザーAVYRROS
のデフォルト表領域と一時表領域が明示的に設定されます。
ユーザーavyrros
のDATA_TS
表領域に対する割当て制限が100MBになります。
ユーザーavyrros
のtest_ts
に対する割当て制限が取り消されます。
ユーザーavyrros
がclerk
プロファイルに割り当てられます。
ほとんどのユーザーが、次のようにPASSWORD
文を使用して自分のパスワードを変更できます。
PASSWORD andy Changing password for andy New password: password Retype new password: password
ユーザーが自分のパスワードを変更するには、特別な権限(データベースへの接続およびセッションの作成権限以外)は不要です。ユーザーには、自分のパスワードを頻繁に変更することを薦めてください。パスワードを保護する最適な方法に関するガイドラインは、「パスワードの保護に関するガイドライン」を参照してください。ALL_USERS
ビューを問い合せることで、現行データベース・インスタンスの既存のユーザーを検索できます。
ユーザーは、ALTER USER
SQL文を使用して自分のパスワードを変更することもできます。次に例を示します。
ALTER USER andy
IDENTIFIED BY password
ただし、セキュリティを強化するには、PASSWORD
文を使用してアカウントのパスワードを変更します。ALTER USER
文では、新規パスワードが画面に表示されるため、他者に見られる可能性があります。PASSWORD
コマンドでは新規パスワードが表示されないため、自分のみが把握し、他者に知られることはありません。どちらの場合も、パスワードはネットワーク上で暗号化されます。
ユーザーが認証方式を切り替えるには、PASSWORD
とALTER USER
権限が必要です。通常、この権限を持つのは管理者のみです。
関連項目:
|
この項の内容は、次のとおりです。
ユーザーのセキュリティ・ドメインの一部として、各ユーザーが使用できる各種のシステム・リソースの容量に制限を設定できます。これにより、CPUタイムなどの貴重なシステム・リソースが無制限に浪費されるのを防止できます。リソース制限を設定するには、データベース・リソース・マネージャを使用します。データベース・リソース・マネージャについては、『Oracle Database管理者ガイド』を参照してください。
このリソース制限機能は、システム・リソースに多額の費用がかかる大規模なマルチ・ユーザー・システムでは非常に有効です。1人以上のユーザーが過度にリソースを使用すると、データベースの他のユーザーに有害な影響を与える可能性があります。シングル・ユーザー・データベースや小規模なマルチ・ユーザー・データベースの場合は、ユーザーがシステム・リソースを消費しても影響は少ないため、システム・リソース機能はそれほど重要ではありません。
ユーザーのリソース制限は、データベース・リソース・マネージャを使用して管理します。パスワード管理の作業環境は、ユーザーごとに個別にプロファイルを使用して設定するか、または多数のユーザー用のデフォルト・プロファイルを使用して設定できます。それぞれのOracleデータベースに指定できるプロファイルの数に、制限はありません。Oracle Databaseでは、セキュリティ管理者が、プロファイルによるリソース制限の規定を全体的に使用可能または使用禁止に設定できます。
リソース制限を設定すると、ユーザーによるセッション作成時に、パフォーマンスがわずかに低下します。これは、各ユーザーがデータベースに接続した時点で、そのユーザーのすべてのリソース制限データがロードされるためです。
Oracle Databaseでは、CPUタイムと論理読取りを含め、いくつかのタイプのシステム・リソースの使用を制限できます。一般に、それぞれのリソースは、セッション・レベル、コール・レベル、またはその両方で制御できます。次の各項で詳細を説明します。
ユーザーがデータベースに接続するたびに、セッションが作成されます。それぞれのセッションは、Oracle Databaseを実行するコンピュータのCPUタイムとメモリーを使用します。複数のリソース制限をセッション・レベルで設定できます。
ユーザーがセッション・レベルのリソース制限を超えると、現行の文は終了(ロールバック)し、セッションの制限に達したことを示すメッセージが戻されます。この時点では、カレント・トランザクション内のそれ以前のすべての文の結果はそのまま残っています。ユーザーが実行できる操作は、COMMIT
、ROLLBACK
または接続の切断(この場合、カレント・トランザクションはコミットされます)のみです。それ以外の操作を実行すると、エラーが発生します。トランザクションがコミットまたはロールバックされた後も、カレント・セッションではユーザーはどんな作業も完了できません。
ユーザーがSQL文を実行するたびに、Oracle Databaseでは、いくつかのステップが実行され文が処理されます。この処理では、データベースに対して複数のコールが異なる実行フェーズの一部として発行されます。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セッション中に実行されるブロック読取りの数として設定し、測定されます。
Oracle Databaseでは、いくつかのその他のセッション・レベルのリソース制限が提供されています。
セッションのアイドル時間の制限。 1つのセッションでのコール間の時間がアイドル制限時間に達すると、カレント・トランザクションがロールバックされてセッションは終了し、そのセッションのリソースはシステムに戻されます。次のコールは、ユーザーがインスタンスから切断されたことを示すエラーを受け取ります。この制限は、分単位の経過時間として設定します。
セッション当たりの経過接続時間の制限。 セッションの持続時間が経過制限時間を超えると、カレント・トランザクションがロールバックされてセッションが削除され、そのセッションのリソースがシステムに戻されます。この制限は、分単位の経過時間として設定します。
注意: Oracle Databaseは、経過アイドル時間や経過接続時間を絶えず監視しているわけではありません。絶えず監視した場合、システム・パフォーマンスが低下します。そのかわり数分ごとにチェックします。このため、Oracle Databaseがこの制限を規定してからセッションを終了させるまでの間に、セッションはこの制限をわずかに(5分など)超える可能性があります。 |
セッションのプライベート・システム・グローバル領域(SGA)(プライベートSQL領域に使用)の容量の制限。 この制限が重要になるのは、共有サーバーの構成を使用するシステムの場合のみです。それ以外のシステムの場合、プライベートSQL領域はプログラム・グローバル領域(PGA)内にあります。この制限は、インスタンスのSGAに使用するメモリーのバイト数として設定します。KBまたはMBで指定するには、KまたはMの文字を使用します。
関連項目: リソース制限を使用可能および使用禁止にする手順は、次を参照してください。 |
プロファイルを作成し、そのプロファイルに含めるリソース制限を決定する前に、各リソース制限について適切な値を決定する必要があります。これらの値は、典型的なユーザーが実行する操作のタイプを基準として決定できます。たとえば、あるクラスのユーザーが通常は大量の論理データ・ブロック読取りを実行しない場合は、ALTER RESOURCE COST
SQL文を使用して、LOGICAL_READS_PER_SESSION
設定を控えめに設定します。
通常、ユーザー・プロファイルの適切なリソース制限値を決定するには、それぞれのタイプのリソースの使用状況について履歴情報を収集するのが最善です。たとえば、データベース管理者やセキュリティ管理者は、AUDIT
SESSION
句を使用して、CONNECT_TIME
およびLOGICAL_READS_PER_SESSION
の制限値についての情報を収集できます。
その他の制限値の統計情報は、Oracle Enterprise Manager(またはSQL*Plus)のモニター機能、特に統計モニターを使用して収集できます。
プロファイルとは、ユーザーのデータベース使用とインスタンス・リソースを制限する一連のリソース制限およびパスワード・パラメータに名前を付けたものです。ユーザーごとのプロファイルの割当て、およびすべてのユーザーに対するデフォルト・プロファイルの割当てが可能です。各ユーザーに割り当てることができるプロファイルは1つのみで、新しいプロファイルを作成すると、旧バージョンと置き換えられます。
ユーザー・プロファイルを作成して管理する必要があるのは、リソース制限がデータベースのセキュリティ・ポリシーの要件である場合のみです。プロファイルを使用するには、最初にデータベース内のユーザーの関連タイプを分類します。ロールを使用して関連ユーザーの権限を管理するのと同様に、プロファイルを使用して関連ユーザーのリソース制限を管理します。データベース内のすべてのタイプのユーザーを含めるために必要なプロファイル数を決定してから、プロファイルごとに適切なリソース制限を決定します。
一般的に、プロファイルとはユーザーに適用される属性の集合で、それらの属性を共有する複数ユーザーの中の任意のユーザーに関する単一の参照になります。Oracle Internet Directoryのユーザー・プロファイルには、各ユーザーのディレクトリ使用と認証に関連した属性が含まれています。同様に、Oracle Label Securityのプロファイルには、Oracle Label Securityのユーザー管理や操作管理に役立つ属性が含まれています。プロファイル属性にはシステム・リソースに関する制限を含めることができます。データベース・リソース・マネージャを使用すると、これらのタイプのリソース制限を設定できます。
プロファイルのリソース制限が適用されるのは、対応するデータベースのリソース制限が使用可能な場合のみです。このリソース制限が使用可能になるのは、データベースの起動前(RESOURCE_LIMIT
初期化パラメータを使用)またはオープン中(ALTER SYSTEM
文を使用)のいずれかです。
パスワード・パラメータはプロファイル内にありますが、RESOURCE_LIMIT
またはALTER SYSTEM
の影響は受けず、パスワード管理は常に使用可能です。Oracle Databaseでは、主にデータベース・リソース・マネージャによって、リソースの割当てと制限が処理されます。
関連項目:
|
認可されたデータベース・ユーザーは、プロファイルの作成、ユーザーへの割当て、変更および削除を(CREATE USER
またはALTER USER
文を使用して)随時実行できます。プロファイルは、ロールや他のプロファイルではなく、ユーザーにのみ割り当てることができます。プロファイルの割当ては現行のセッションには影響を与えず、それより後のセッションにのみ有効です。現行のプロファイルに関する情報を検索するには、DBA_PROFILES
ビューを問い合せます。
プロファイルを削除するには、DROP PROFILE
システム権限が必要です。プロファイル(デフォルト・プロファイル以外)を削除するには、SQL文DROP PROFILE
を使用します。現在ユーザーに割り当てられているプロファイルを正常に削除するには、CASCADE
オプションを使用します。
次の文は、プロファイルclerk
を削除します。このプロファイルがユーザーに割り当てられていても削除されます。
DROP PROFILE clerk CASCADE;
削除するプロファイルに現在割り当てられているユーザーは、自動的にDEFAULT
プロファイルに割り当てられます。DEFAULT
プロファイルは削除できません。プロファイルを削除しても、現在アクティブなセッションには影響を与えません。プロファイルの削除後に作成されたセッションのみが、変更されたプロファイル割当てを使用します。
ユーザー・アカウントを削除すると、そのユーザー・アカウントおよび対応するスキーマがデータ・ディクショナリから削除されます。また、ユーザーのスキーマ内にスキーマ・オブジェクトがある場合は、そのすべてのオブジェクトがただちに削除されます。
注意:
|
現在データベースに接続されているユーザーは削除できません。接続中のユーザーを削除するには、最初にKILL SESSION
句を指定したSQL文ALTER SYSTEM
を使用して、そのユーザーのセッションを停止する必要があります。V$SESSION
ビューを問い合せることで、セッションID(SID)を検索できます。
例2-3に、V$SESSION
を問い合せる方法を示し、ユーザーANDY
のセッションID、シリアル番号およびユーザー名を表示します。
例2-3 ユーザーのセッションIDに関するV$SESSIONの問合せ
SELECT SID, SERIAL#, USERNAME FROM V$SESSION; SID SERIAL# USERNAME ------- --------------- ---------------------- 127 55234 ANDY ...
例2-4に、ユーザーandy
のセッションを停止する方法を示します。
データベースからユーザーを削除するには、DROP USER
文を使用します。ユーザーとそのユーザーのスキーマ・オブジェクト(ある場合)をすべて削除するには、DROP USER
システム権限が必要です。DROP USER
システム権限は強力な権限であるため、通常はセキュリティ管理者のみがこの権限を持ちます。
ユーザーのスキーマに依存型のスキーマ・オブジェクトが含まれている場合に、ユーザーと対応付けられているすべてのオブジェクト、およびそのユーザーの表に依存している外部キーをすべて削除するには、CASCADE
オプションを使用します。CASCADE
を指定していない場合は、ユーザーのスキーマに依存型のオブジェクトが含まれていると、エラー・メッセージが戻され、ユーザーは削除されません。
スキーマにオブジェクトが含まれているユーザーを削除する場合は、事前にどのオブジェクトがスキーマに含まれているかを十分に調査し、削除による影響を確認しておく必要があります(DBA_OBJECTS
ビューを問い合せることで、特定のユーザーが所有するオブジェクトを検索できます)。
例2-5に、ユーザーandy
が所有するオブジェクトを検索する方法を示します。
(ユーザー名を大文字で入力します。)事前に認識できない連鎖的な影響に注意してください。たとえば、表を所有するユーザーを削除する場合は、ビューまたはプロシージャがその表に依存していないかどうかを確認してください。
例2-6では、ユーザーandy
とそれに対応付けられたすべてのオブジェクト、およびandy
が所有する表に依存するすべての外部キーを削除します。
表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 users TEMPORARY TABLESPACE temp_ts QUOTA 500K ON users PROFILE clerk; CREATE USER dcranney IDENTIFIED BY password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp_ts QUOTA unlimited ON users; CREATE USER userscott IDENTIFIED BY password;
データベースに定義されているすべてのユーザーとそのユーザーに関連する情報を検索するには、DBA_USERS
ビューを問い合せます。DBA_USERS
ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
次に例を示します。
SELECT USERNAME, PROFILE, ACCOUNT_STATUS FROM DBA_USERS; USERNAME PROFILE ACCOUNT_STATUS --------------- --------------- --------------- SYS DEFAULT OPEN SYSTEM DEFAULT OPEN USERSCOTT DEFAULT OPEN JFEE CLERK OPEN DCRANNEY DEFAULT OPEN
DBA_TS_QUOTAS
ビューを使用すると、各ユーザーに明示的に割り当てられている表領域割当て制限がすべてリストされます。(このビューの詳細は、『Oracle Databaseリファレンス』を参照してください)。次に例を示します。
SELECT * FROM DBA_TS_QUOTAS; TABLESPACE USERNAME BYTES MAX_BYTES BLOCKS MAX_BLOCKS ---------- --------- -------- ---------- ------- ---------- USERS JFEE 0 512000 0 250 USERS DCRANNEY 0 -1 0 -1
固有の割当て制限が割り当てられている場合は、正確な数値がMAX_BYTES
列に示されます。この数値は常にデータベース・ブロック・サイズの倍数となるため、倍数でない表領域割当て制限を指定すると、適切な値に切り上げられます。無制限割当ての場合は、-1
が表示されます。
DBA_PROFILES
ビューには、データベース内のすべてのプロファイルと各プロファイル内の各制限に対応する設定がリストされます。(このビューの詳細は、『Oracle Databaseリファレンス』を参照してください)。次に例を示します。
SELECT * FROM DBA_PROFILES ORDER BY PROFILE; PROFILE RESOURCE_NAME RESOURCE 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.
各ユーザー・セッションのメモリー使用を検索するには、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'
に置き換えてください。