TimesTenアクセス制御では、各ユーザーの認証およびデータベース内のすべてのオブジェクトの認可が行われます。認証は、正しいユーザー・パスワードによって行われます。データベース内のすべてのオブジェクトの認可は、特定のユーザーに適切な権限を付与することで管理します。
次の項では、TimesTenの認証および認可について説明します。
ユーザーがデータベース内のデータにアクセスしたり操作できるようにするには、ユーザーを作成し、適切なパスワードを付与する必要があります。ユーザーを作成する際には、データベースに接続するための適切な権限またはデータベース内のオブジェクトにアクセスするための適切な権限を付与する必要もあります。権限の付与の詳細は、「権限によるオブジェクトへの認可の付与」を参照してください。
次の項では、ユーザーの作成および管理方法について説明します。
TimesTenデータベースのユーザーには、次の3つのタイプがあります。
インスタンス管理者: インスタンス管理者は、TimesTenインスタンスをインストールしたユーザーです。このユーザーには、そのTimesTenインスタンス内のすべてに対する完全な権限があります。このユーザーの作成の詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のTimesTen のインストールに関する説明を参照してください。
注意: TimesTenのインストール時には、インスタンス管理者のみでなく、4つのシステム・ユーザーが作成されます。TimesTenによって内部的に使用されるこれらのシステム・ユーザーは、内部的に使用するSYSTEM 、システム・オブジェクト用のSYS 、キャッシュ・グリッド・オブジェクト用のGRID およびレプリケーション・オブジェクト用のTTREP です。 |
内部ユーザー: 内部ユーザーは、TimesTenデータベース内で使用するためにTimesTen内に作成されます。内部ユーザーの認証には、このユーザーが定義されている特定のデータベース用のパスワードが使用されます。
TimesTenユーザー名はTT_CHAR
型であり、大文字と小文字が区別され、30文字に制限されています。ユーザーのネーミング規則の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の名前とパラメータに関する説明を参照してください。
内部ユーザーはCREATE USER
文を使用して作成できます。この文の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のCREATE USERに関する項を参照してください。
外部ユーザー: 外部ユーザーは、オペレーティング・システム内で作成されたユーザーです。外部ユーザーは、オペレーティング・システムへのログイン時に認証されていることが前提であるため、データベースに格納されたパスワードはありません。TimesTenデータベースがインストールされているホストとは異なるホストから外部ユーザーとして接続することはできません。同じホストの場合、クライアントのオペレーティング・システム資格証明を使用して、クライアントが特定の外部ユーザーとして接続できるようにします。たとえば、外部ユーザーがUNIXシステムにログインした場合は、TimesTenデータベースにパスワード指定なしで接続できます。これは、外部ユーザーがパスワードをログイン時にすでに提示しているためです。ただし、その外部ユーザーに適切な権限が付与されていることが条件となります。また、外部ユーザーはTimesTenユーザー・グループに属していること、およびそのグループに適切な権限が付与されていることが必要です。詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』を参照してください。
あるホスト上で定義されている外部ユーザーは、リモート・ホスト上のTimesTenデータソースに接続できません。外部ユーザーは、ローカル・オペレーティング・システムによって認証されるため、ローカルTimesTenデータソースへの接続にのみ使用できます。クライアント/サーバー接続を介して接続する場合、外部ユーザーは、クライアントおよびサーバーの存在する同一ホスト上で定義する必要があります。したがって、外部ユーザーの使用時には、クライアントとサーバーの両方が同一のホスト上に存在する必要があります。これは、オペレーティング・システムで外部ユーザーの認証が行われるためです。
外部ユーザーの作成はオペレーティング・システム内で行われますが、CREATE USER
文のIDENTIFIED EXTERNALLY
句を使用して、データベースでそのユーザーが外部ユーザーとして識別されるようにする必要があります。このSQL文の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のCREATE USERに関する説明を参照してください。
UNIX外部ユーザー名では、大文字と小文字が区別されます。Windows外部ユーザー名では、大文字と小文字は区別されません。UNIXプラットフォームから接続する場合、TimesTenによって自動的に外部ユーザー名が大文字に変換され、大文字と小文字が区別されずに表示されます。
TimesTenへのログインにクリアテキストのパスワードを使用しない場合は、PWDCrypt
属性を使用してパスワードのハッシュを作成します。この属性を使用するかどうかの唯一の判断材料は、そのパスワードがOracle Databaseなどの他のエンティティへのログインに使用されるかどうかです。PWDCrypt
バージョンのパスワードはTimesTenへの接続に常に使用されますが、Oracleに接続するために元のパスワードに復元することはできません。
注意: インスタンス管理者およびすべての外部ユーザーは両方とも、インストール時に指定されたTimesTenユーザー・グループに属している必要があります。詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のTimesTenのインストール関する説明を参照してください。 |
内部ユーザーを作成したり、CREATE USER
文を使用して外部ユーザーを識別できるのは、インスタンス管理者またはADMIN
権限を持つユーザーのみです。セキュリティ上の理由から、CREATE USER
文またはALTER USER
文で内部ユーザーを作成または変更するには、TimesTenデータベースへの直接接続のみを使用できます。したがって、CREATE USER
またはALTER USER
をクライアント/サーバー・アプリケーションから実行したり、パススルー実行によって実行することはできません。ALTER USER
文を使用して、内部ユーザーを外部ユーザーに変更したり、外部ユーザーを内部ユーザーに変更できます。CREATE USER
文の構文の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の「SQL文」の章を参照してください。
内部ユーザーを作成するには、CREATE USER
文でユーザー名とパスワードを指定します。次の例では、内部ユーザーTERRY
にパスワードsecret
を指定します。
CREATE USER TERRY IDENTIFIED BY "secret"; User created.
外部ユーザーを識別するには、CREATE USER IDENTIFIED EXTERNALLY
文でユーザー名を指定します。次の例では、外部ユーザーPAT
をTimesTenデータベースで識別できるようにします。
CREATE USER PAT IDENTIFIED EXTERNALLY; User created.
外部ユーザーPAT
を内部ユーザーに変更するには、次のALTER USER
文を実行します。
ALTER USER PAT IDENTIFIED BY "secret";
内部ユーザーPAT
を外部ユーザーに変更するには、次のALTER USER
文を実行します。
ALTER USER PAT IDENTIFIED EXTERNALLY;
次のシステム・ビューでSELECT
文を実行すると、作成したユーザーを確認できます。
SYS.USER_USERS
では、データベースの現在のユーザーが示されます。
SYS.DBA_USERS
では、データベースのすべてのユーザーが示されます。このビューでSELECT文を実行するには、適切な権限が付与されている必要があります。
たとえば、現在のユーザーを表示するには、次の文を実行します。
SELECT * FROM sys.user_users; < PAT, 4, OPEN, <NULL>, <NULL>, USERS, TEMP, 2009-02-25 12:00:17.027100, <NULL>, <NULL> >1 row found.
これらのビューの詳細は、Oracle TimesTen In-Memory Databaseのシステム表および制限についてのマニュアルのシステム表に関する説明を参照してください。
内部ユーザーのパスワードのみが、データベース内で変更可能です。ユーザーは、自分のパスワードを変更できます。ADMIN
権限を持つユーザーは、すべてのユーザーのパスワードを変更できます。このようなユーザーは、ALTER USER
文のIDENTIFIED BY
句を使用してパスワードを変更できます。
たとえば、内部ユーザーTERRY
のパスワードを現在の設定から12345
に変更するには、次の文を実行します。
ALTER USER TERRY IDENTIFIED BY "12345"; User altered.
適切な権限が付与されていれば、データベースで作成されたユーザーをDROP USER
文を使用して破棄できます。次のようなユーザーは破棄できません。
インスタンス管理者は削除できません。
ユーザーが所有するすべてのオブジェクトを削除してからでないと、そのユーザーを削除することはできません。
現在データベースに接続しているユーザーを削除することはできません。
次のDROP USER
文によって、データベースからユーザーTERRY
が破棄されます。
Command> drop user terry; User dropped.
インスタンス管理者を破棄しようとすると、次のエラーが表示されます。
Command> drop user instadmin; 15103: System-defined users and roles cannot be dropped The command failed.
必要なADMIN
権限を持たないユーザーPatが、ユーザーTerryを破棄しようとすると、次のエラーが表示されます。
Command> drop user terry; 15100: User PAT lacks privilege ADMIN The command failed.
注意: 現時点では、DROP USER CASCADE はサポートされていません。 |
複数のユーザーがデータベース・オブジェクトにアクセス可能な場合、これらのオブジェクトへの認可は権限を使用して制御できます。オブジェクトには必ず所有者が存在します。あるユーザーが他のユーザーによって所有されているオブジェクトを変更できるかどうかは、権限によって制御されます。権限の付与または取消しを実行できるのはインスタンス管理者、ADMIN
権限を持つユーザー、または特定のオブジェクトに対する権限の場合は、そのオブジェクトの所有者です。
次の項では、権限の使用によるオブジェクトへの認可について説明します。
TimesTenでは、データベース内のオブジェクトへの認可を、権限によってユーザーに付与します。ユーザーには、データベースのリソースやオブジェクトにアクセスするための権限が付与されている必要があります。これらの権限によって、各オブジェクトに対してユーザーが実行できる処理が制限されます。ユーザーは自分のスキーマに含まれるすべてのオブジェクトに対する権限をすべて持っており、これらを取り消すことはできません。他のユーザーのスキーマに含まれるオブジェクトの権限をユーザーに付与できます。
TimesTenでは、SQL文の実行時に各ユーザーの権限が評価されます。各SQL文は、任意のユーザーが実行できます。次に例を示します。
SELECT * from PAT.TABLE1;
この文をPatが実行する場合、Patはこのオブジェクトの所有者であるため、他に必要な権限はありません。一方、Terryなどの他のユーザーがこの文を実行する場合、TerryにはPAT.TABLE1
に対するSELECT
権限が必要です。
権限を使用すると次のことが可能になります。
ユーザー、アプリケーションまたは関数がアクセスできるデータまたはそれらが実行できる処理を定義できます。
ユーザーがシステム・パフォーマンスを低下させたり、システム・リソースを大量に消費することを防ぎます。たとえば、認可上の懸念からではなく、DMLパフォーマンスを低下させたり、ディスク領域を占有する可能性があるという理由から、索引作成を制限する権限を指定できます。
権限の一部の例には、次の処理を実行する権限が含まれます。
データベースへの接続およびセッションの作成
表の作成
他のユーザーが所有する表からの行の選択
キャッシュ・グループ処理の実行
また、次の処理を実行するには、ユーザーに特定の権限が必要になる場合があります。
一部のTimesTen組込みプロシージャの実行。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』を参照してください。
一部のTimesTenコマンドライン・ユーティリティの実行。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』を参照してください。
初期接続属性を使用した接続の開始。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』を参照してください。
各SQL文の実行に必要な権限の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の各文の説明を参照してください。
システム権限: この権限があると、すべてのオブジェクトへのアクセスなど、システム全体の機能を有効にできます。システム権限を付与されたユーザーは、標準的な管理者タスクを実行したり、他のユーザーのスキーマ内のオブジェクトにアクセスできます。この権限の適用範囲は、1つのオブジェクトに留まりません。この権限の付与は、信頼できるユーザーに制限してください。
オブジェクト権限: オブジェクトには、タイプに応じて関連付けられている権限があります。
このような権限のサブセットは、作成時に、PUBLICロールを介して各ユーザーに自動的に付与されます。権限階層のルールは、ユーザーに付与されているすべての権限に適用されます。
権限は、ユーザーがその業務に必要なタスクを完了できるように付与します。どのユーザーに権限を付与するかを計画し、必要な処理を実行するために必要な権限のみを付与してください。
権限のチェックは、準備時と各SQL文の初回実行時に行われます。それ以降にその文を実行したときにさらに権限のチェックが必要になるのは、データベースで取消し処理が行われる場合のみです。
システム権限があるユーザーは、データベース内の複数のオブジェクトに対してシステムレベルのアクティビティを実行できます。データベースで特定の処理を実行する権限、または特定のタイプのオブジェクトに対する処理を実行する権限が付与されます。たとえば、データベースの他のユーザーのスキーマに含まれるオブジェクトを作成または変更できるようにするには、ユーザーにシステム権限が付与されている必要があります。
ユーザーにシステム権限を付与できるのは、インスタンス管理者またはADMIN
権限を持つユーザーのみです。インスタンス管理者は常にすべてのシステム権限とオブジェクト権限を持っており、これらの権限は取り消すことができません。
注意: インスタンス管理者は、すべての処理を実行できます。そのため、インスタンス管理者は、ADMIN 権限を持つユーザーが実行できるすべての処理を実行できます。 |
システム権限には、ADMIN
、SELECT ANY TABLE
、CREATE SESSION
、CREATE ANY SEQUENCE
などがあります。システム権限の付与と取消しの詳細は、「システム権限の付与または取消し」を参照してください。
オブジェクト権限を持つユーザーは、定義されている処理を特定のオブジェクトに対して実行できます。オブジェクト・タイプごとに個別のオブジェクト権限を使用できます。
すべてのオブジェクト所有者は、自分のオブジェクトにアクセスできます。また、自分のオブジェクトに対するすべての権限を持っています。他のユーザーが所有するオブジェクトには、そのオブジェクトの所有者またはADMIN
権限を持つユーザーから明示的にアクセス権を付与されないかぎり、アクセスできません。 PUBLIC
ロールに特定のオブジェクトへのアクセス権が付与されている場合、すべてのデータベース・ユーザーがそのオブジェクトにアクセスできます。ADMIN
権限を持つユーザーであっても、所有者がそのオブジェクトに対して持っている権限を取り消すことはできません。
オブジェクトへのアクセスを制御するには、ユーザーがオブジェクトの所有者であるか、またはオブジェクトに対する処理を実行するための適切なオブジェクト権限をユーザーが持っていることが必要です。オブジェクト権限の付与または取消しを実行できるのは、インスタンス管理者、ADMIN
権限を持つユーザー、または該当するオブジェクトの所有者です。
オブジェクト権限の付与と取消しの詳細は、「オブジェクト権限の付与または取消し」を参照してください。
各TimesTenデータベースに、PUBLIC
という名前のロールが自動的に作成されます。このロールには、デフォルトで、特定の権限が付与されます。TimesTenデータベースで作成された各ユーザーには、PUBLIC
ロールに付与されている各権限が付与されます。つまり、インスタンス管理者またはADMIN
権限を持つユーザーがユーザーを作成した場合、PUBLIC
ロールに関連付けられている権限が各ユーザーに付与されます。PUBLIC
ロールに後で付与された権限は、同時にすべてのユーザーに自動的に付与されます。ADMIN
権限を持つユーザーは、PUBLIC
ロールに対する権限の付与または取消しによって、すべてのユーザーのデフォルト権限を追加または削除できます。ユーザーがPUBLIC
からある権限を取り消すと、その権限を明示的に付与されたユーザーを除いて、各ユーザーからその権限が取り消されます。
注意: この動作の唯一の例外は、SYS ユーザーによってPUBLIC に付与された権限は取り消せないことです。データベース作成の一環として付与された権限は、次のSQL文を実行して確認できます。
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTOR = 'SYS' |
次の例では、ユーザーPatにSELECT ANY TABLE
権限が、PUBLIC
にSELECT ANY TABLE
権限がそれぞれ付与されます。次に、SYS.DBA_SYS_PRIVS
ビューのすべてのシステム権限が表示されます。このビューの詳細は、「ユーザー権限の表示」を参照してください。PUBLIC
からSELECT ANY TABLE
を取り消しても、PatからはSELECT ANY TABLE
は削除されず、SYS.DBA_SYS_PRIVS
ビューによって再度表示されます。
Command> GRANT SELECT ANY TABLE TO PAT; Command> GRANT SELECT ANY TABLE TO PUBLIC; Command> SELECT * FROM SYS.DBA_SYS_PRIVS; < SYS, ADMIN, NO > < PUBLIC, SELECT ANY TABLE, NO > < SYSTEM, ADMIN, NO > < PAT, ADMIN, NO > < PAT, SELECT ANY TABLE, NO > 5 rows found. Command> REVOKE SELECT ANY TABLE FROM PUBLIC; Command> select * from sys.dba_sys_privs; < SYS, ADMIN, NO > < SYSTEM, ADMIN, NO > < PAT, ADMIN, NO > < PAT, SELECT ANY TABLE, NO > 4 rows found.
必要な場合は、PUBLIC
にADMIN
権限を付与するようなデータベースを作成することがあります。この場合、すべてのユーザーにADMIN
権限が付与されるため、ユーザーはすべてのデータベース・オブジェクトに制限なくアクセスでき、インスタンス管理者が実施する必要があるタスクを除くすべての管理タスクを実行できるようになります。このような状況ではデータベースのセキュリティを確保できないため、長期的に使用する方法としては推奨されません。この方法をいつどのような目的で採用するかの詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のデータベースのアップグレードに関する説明を参照してください。
注意: PUBLIC ロールにデフォルトで割り当てられる権限の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のSQL文に関する説明を参照してください。 |
PUBLIC
ロールでは、特定のオブジェクト、システム表およびビューへのアクセスも付与されます。デフォルトでは、新しく作成されたTimesTenデータベースでは、PUBLIC
に、各種システム表およびビューと、PL/SQL関数、プロシージャおよびパッケージに対するSELECT
権限とEXECUTE
権限があります。PUBLIC
、および後でユーザーに付与された権限のリストは、SYS.DBA_TAB_PRIVS
ビューに問い合せることで表示できます。次の問合せでは、PUBLIC
に付与されている権限が5列目に表示されます。
Command> DESC SYS.DBA_TAB_PRIVS; View SYS.DBA_TAB_PRIVS: Columns: GRANTEE VARCHAR2 (30) INLINE OWNER VARCHAR2 (30) INLINE TABLE_NAME VARCHAR2 (30) INLINE GRANTOR VARCHAR2 (30) INLINE PRIVILEGE VARCHAR2 (40) INLINE NOT NULL GRANTABLE VARCHAR2 (3) INLINE NOT NULL HIERARCHY VARCHAR2 (3) INLINE NOT NULL 1 view found. Command> SELECT * FROM SYS.DBA_TAB_PRIVS WHERE GRANTEE='PUBLIC'; < PUBLIC, SYS, TABLES, SYS, SELECT, NO, NO > < PUBLIC, SYS, COLUMNS, SYS, SELECT, NO, NO > < PUBLIC, SYS, INDEXES, SYS, SELECT, NO, NO > < PUBLIC, SYS, USER_COL_PRIVS, SYS, SELECT, NO, NO > < PUBLIC, SYS, PUBLIC_DEPENDENCY, SYS, SELECT, NO, NO > < PUBLIC, SYS, USER_OBJECT_SIZE, SYS, SELECT, NO, NO > < PUBLIC, SYS, STANDARD, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, UTL_IDENT, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, TT_DB_VERSION, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, PLITBLM, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, DBMS_OUTPUT, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, DBMS_SQL, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, DBMS_STANDARD, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, DBMS_PREPROCESSOR, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, UTL_RAW, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, DBMS_UTILITY, SYS, EXECUTE, NO, NO > < PUBLIC, SYS, DBMS_RANDOM, SYS, EXECUTE, NO, NO > ... 57 rows found.
すべての権限が1つの階層となっています。上位レベルの権限では、関連する下位レベルの権限が付与されます。たとえば、ADMIN
権限では、すべての権限が付与されます。SELECT ANY TABLE
権限では、任意の表に対するSELECT
権限が付与されます。
ある処理を行うための権限をユーザーが必要な場合は、常に、そのユーザーが対象オブジェクトの所有者であるかどうか、または処理に必要な権限を付与する上位レベルの権限を持っているかどうかを確認して、そのユーザーが必要な権限を持っているかどうかを判断できます。たとえば、ユーザーPatがTerry.Table2
に対するSELECT
権限を必要としている場合、次の事項を確認します。
Patがそのオブジェクトの所有者かどうか。所有者の場合は、自分のオブジェクトに対するすべてのオブジェクト権限があります。
PatにSELECT ANY TABLE
権限が付与されているかどうか。この権限を持っている場合、Patは任意の表、ビューおよびマテリアライズド・ビューに対してSELECT ON
を実行できます。
PatにADMIN
権限が付与されているかどうか。付与されている場合、Patは有効なSQL操作であればすべて実行できます。
上位レベルに含まれる権限を付与しても、エラーは発生しません。一方、権限を取り消す場合は、付与したときと同じ単位で取り消す必要があります。次に示す、ユーザーPAT
に対する付与文および取消し文では、任意の表を更新できる権限と特定の表を更新できる権限が付与されます。
GRANT UPDATE ANY TABLE TO PAT; GRANT UPDATE ON HR.employees TO PAT; REVOKE UPDATE ON HR.employees FROM PAT;
UPDATE ANY TABLE
権限では、データベースに含まれる任意の表を更新する権限が付与されます。2番目の文は、HR.employees
表に対するUPDATE
権限が明示的に付与されます。UPDATE ANY TABLE
によってemployeesを含むすべての表へのアクセス権限が付与されるため、この2番目の文は不要ですが、エラーにはなりません。2番目の付与を取り消すことは可能ですが、最初に実行されたUPDATE ANY TABLE
システム権限の付与には影響しません。そのため、PATは引き続きHR.employees
表を更新できます。
取消しは、付与したときと同じ単位で行う必要があります。次の例では、UPDATE ANY TABLE
システム権限をPATに付与します。あるユーザーが、自分のHR.employees
表の更新権限を取り消そうとします。UPDATE ANY TABLE
権限はシステム権限ですが、UPDATE
権限はオブジェクト権限です。付与されていない単位に対するREVOKE
文の実行は失敗し、エラーになります。
GRANT UPDATE ANY TABLE TO PAT; REVOKE UPDATE ON HR.employees FROM PAT; 15143: REVOKE failed: User PAT does not have object privilege UPDATE on HR.EMPLOYEES The command failed.
権限階層の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の権限についての説明を参照してください。
システム権限を付与するか取り消すには、GRANT
文またはREVOKE
文を使用します。システム権限を付与するか取り消すことができるのは、インスタンス管理者またはADMIN
権限を持つユーザーのみです。システム権限のGRANT
またはREVOKE
構文には、システム権限とその権限が付与されるユーザーが含まれます。GRANT
文およびREVOKE
文の構文と、各SQL文を実行するために必要な権限の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の「SQL文」の章を参照してください。
最も強力なシステム権限はADMIN
です。ユーザーにADMIN
権限を付与すると、このユーザーは、任意のデータベース・オブジェクトに対してすべての処理を実行できるようになります。
各ユーザーは自分のシステム権限をSYS.USER_SYS_PRIVS
システム・ビューで確認できます。ADMIN
権限を持つユーザーは、すべてのユーザーのすべてのシステム権限をSYS.DBA_SYS_PRIVS
システム表で確認できます。システム・ビューの詳細は、「ユーザー権限の表示」を参照してください。
次の項では、TimesTenで使用できるシステム権限の一部について説明します。
注意: システム権限の完全なリストは、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の権限に関する説明を参照してください。 |
ADMIN
権限にはシステム権限とオブジェクト権限がすべて含まれており、この権限が付与されたユーザーは、すべての管理タスクと有効なデータベース処理を実行できます。ADMIN
権限を持つユーザーは、すべてのオブジェクトに対して、作成、変更、破棄、選択、更新、挿入または削除処理を実行できます。また、ADMIN
権限を持つユーザーは、レプリケーション・タスク、チェックポイント処理、バックアップ、移行、ユーザーの作成と削除などを実行できます。すべての権限を付与するか取り消すことができるのは、ADMIN
権限を持つユーザーのみです。
すべてのシステム表およびビューをデフォルトで表示できるのは、ADMIN
権限を持つユーザーのみです。ADMIN
権限を持つユーザーのみが、レプリケーション・スキーマまたはアクティブ・スタンバイ・ペアを作成、変更または破棄できます。次のビューおよびパッケージにアクセスできるのは、ADMIN
権限を持つユーザーのみです。
ユーザーTERRY
にADMIN
権限を付与するには、次の文を実行します。
GRANT ADMIN TO TERRY;
ADMIN
権限を持っているユーザーは、他のユーザーに権限を付与できます。たとえば、ADMIN
権限を持つユーザーは、次の文を実行して、PATが所有するdepartments
表に対するSELECT
権限をTERRY
に付与できます。
GRANT SELECT ON PAT.departments TO TERRY;
注意: Patはdepartmentsの所有者であるため、PatもTerryにSELECT オブジェクト権限を付与できます。 |
ALL PRIVILEGES
では、ユーザーにすべてのシステム権限が付与されます。ユーザーにほとんどのシステム権限を付与する場合は、ALL PRIVILEGES
をユーザーに付与してから、付与しないシステム権限のみを取り消します。次の例では、すべてのシステム権限をユーザーPAT
に付与します。次に、ADMIN
権限とDROP ANY TABLE
権限を取り消して、Patが管理タスクのすべてと、表の削除を実行できないようにします。
GRANT ALL PRIVILEGES TO PAT; REVOKE ADMIN, DROP ANY TABLE FROM PAT;
ユーザーに付与されたすべての権限をREVOKE ALL PRIVILEGES
を使用して取り消すこともできます。これにより、PUBLIC
ロールから継承されたものを除いて、ユーザーに付与されたシステム権限がすべて取り消されます。次にユーザーPAT
の例を示します。
REVOKE ALL PRIVILEGES FROM PAT;
TimesTenデータベースへのアクセスには、データソース名(DSN)を使用します。ユーザーが、権限のない接続属性(初期接続属性など)を持つDSNを使用しようとすると、エラーが表示されます。
初期接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性に関する説明を参照してください。
データベースに接続するには、すべてのユーザーに、ADMIN
権限を持つユーザーからCREATE SESSION
システム権限が付与されている必要があります。CREATE SESSION
システム権限によって、データベースへの接続が認可されます。次の例では、CREATE SESSION
権限をPATに付与します。
GRANT CREATE SESSION TO PAT;
ADMIN権限を持つユーザーは、PUBLIC
ロールにこの権限を付与することによって、CREATE SESSION
権限をすべてのユーザーに付与できます。これにより、すべてのユーザーがデータベースに接続できるようになります。
GRANT CREATE SESSION TO PUBLIC;
ADMIN
権限の他にも、権限のスーパーセットを付与するシステム権限がいくつかあります。ここでは、そのような権限のいくつかを簡単に説明します。
XLA
: XLAリーダーは、システム全体に影響を与える可能性があります。追加のログ・ボリュームを作成しますが、そのブックマークを先に進めることができない場合にログが長期間保持されます。XLAリーダーとして接続するには、XLA
システム権限が必要です。
CACHE_MANAGER
: CACHE_MANAGER
権限は、キャッシュ・グループ管理者処理のために使用されます。詳細は、「キャッシュ・グループの権限の付与または取消し」を参照してください。
ユーザーに対する権限の付与または取消しを行う場合は、単一オブジェクトを対象として行うか、データベースに含まれる特定のタイプのオブジェクトすべてを対象にすることができます。
ANY
キーワードを含むシステム権限を持つユーザーは、データベースに含まれるタイプが同じすべてのオブジェクトに対して処理を実行できます。これらのシステム権限には、CREATE ANY
object_type、DROP ANY
object_type、ALTER ANY
object_type、SELECT ANY
object_type、UPDATE ANY TABLE
、INSERT ANY TABLE
、DELETE ANY TABLE
およびEXECUTE ANY PROCEDURE
があります。
注意: これらの権限の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の権限に関する説明を参照してください。ANY キーワードを含むキャッシュ・グループ・システム権限の詳細は、「キャッシュ・グループの権限の付与または取消し」を参照してください。 |
次の項では、CREATE ANY
object_type、DROP ANY
object_type、ALTER ANY
object_typeの各システム権限について詳しく説明します。
表、ビュー、マテリアライズド・ビュー、順序、PL/SQLプロシージャ、PL/SQL関数、PL/SQLパッケージまたはシノニムをユーザーまたは他のユーザーのネームスペース内に作成するには、適切なCREATE
object_typeシステム権限またはCREATE ANY
object_typeシステム権限を持つ必要があります。
ここでは、CREATE
システム権限およびCREATE ANY
システム権限について説明します。
CREATE
object_type権限を付与されたユーザーは、自分のスキーマ内でのみオブジェクトを作成できます。そのユーザーは作成したオブジェクトの所有者となり、自動的にそのオブジェクトに対するすべての権限が付与されます。
ユーザーがキャッシュ・グループを作成するには、他の権限が必要です。
CREATE ANY
object_type権限を付与されたユーザーは、他のユーザーのスキーマ内も含めて、該当するタイプの任意のオブジェクトをデータベースに作成できます。オブジェクト・タイプには、表、索引、ビュー、マテリアライズド・ビュー、順序、シノニムおよびプロシージャがあります。CREATE ANY
object_type権限には、CREATE ANY TABLE
、CREATE ANY INDEX
、CREATE ANY VIEW
、CREATE ANY MATERIALIZED VIEW
、CREATE ANY SEQUENCE
、CREATE ANY SYNONYM
およびCREATE ANY PROCEDURE
があります。
注意: CREATE ANY PROCEDURE 権限またはEXECUTE ANY PROCEDURE 権限を付与する場合には注意が必要です。特に、この2つの権限の両方が付与された場合は、誤用される可能性があります。 |
次の例では、他のユーザーのスキーマに任意の表を作成する権限をユーザーTERRY
に付与します。
GRANT CREATE ANY TABLE TO TERRY;
次の例では、自分のスキーマに表を作成する権限を付与します。
GRANT CREATE TABLE TO TERRY;
他のユーザーが所有するobject_typeのオブジェクトを破棄できるようにするには、DROP ANY
object_typeシステム権限を付与します。たとえば、この権限をPATに付与すると、PATはユーザーHR
が所有するemployees
表を破棄できるようになります。ユーザーには、自分が所有する表を破棄する権限が常にあります。DROP ANY
object_type権限を持つユーザーは、データベースに含まれる指定されたタイプの任意のオブジェクトを破棄できます。ただし、キャッシュ・グループを破棄するには他の権限が必要です。
ALTER
ANY PROCEDURE
を持つユーザーは、データベースに含まれる任意のプロシージャ、関数またはパッケージを変更できます。ALTER ANY
object_type権限は、自分が所有していないオブジェクトのプロパティを変更する場合に必要です。たとえば、プロシージャが、Proc1
という名前のHR
スキーマで作成され、PATにはALTER ANY PROCEDURE
特権を付与されている場合、PATは、プロシージャHR.Proc1
を正常に変更できます。
オブジェクト権限を付与するか取り消すには、GRANT
文またはREVOKE
文を使用します。オブジェクト・レベルのGRANT
文またはREVOKE
文の構文には、付与または取消しの対象となるオブジェクトの名前が必要です。GRANT
文およびREVOKE
文の構文の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の「SQL文」の章を参照してください。
次の項では、キャッシュ管理オブジェクトを除くすべてのオブジェクト・タイプのオブジェクト権限について説明し、例を示します。キャッシュ・オブジェクト権限の詳細は、「キャッシュ・グループの権限の付与または取消し」を参照してください。
注意:
|
ALL
キーワードを使用すると、オブジェクトに対するすべての権限をユーザーに付与できます。実質的に、オブジェクトに対する任意の処理を実行する権限がユーザーに付与されます。
DROP
またはALTER
に必要なオブジェクト権限は特にありません。これらの処理はオブジェクトごとに許可されるわけではなく、オブジェクトの所有者ではないユーザーに適切なシステム権限が付与されると、そのオブジェクトに対してDROP
またはALTER
を実行できるようになります。
たとえば、GRANT ALL ON employees TO PAT
によって、employees表に対するすべの権限がユーザーPAT
に付与されます。すべてのオブジェクト権限を付与した後に、権限を個別に取り消すことが可能です。たとえば、次の一連の処理は有効です。
GRANT ALL ON HR.employees TO PAT; REVOKE DELETE ON HR.employees FROM PAT;
また、REVOKE ALL
を使用すると、オブジェクトについてユーザーに付与されたオブジェクト権限をすべて取り消すことができます。これにより、ユーザーが該当オブジェクトに関して持っていたすべての権限が取り消されます。ユーザーPAT
の例を示します。
REVOKE ALL ON HR.employees FROM PAT;
GRANT ALL
文とREVOKE ALL
文は、オブジェクトの所有者とADMIN
権限を持つユーザーの両方が実行できます。
自分が所有していない表に対して処理を実行する場合、そのユーザーには、その表に関する適切なオブジェクト権限が付与されている必要があります。このような権限には、キャッシュ・グループに含まれる表に関する権限などがあります。表に関するオブジェクト権限には、SELECT
、UPDATE
、DELETE
、INSERT
、INDEX
およびREFERENCES
があります。
次のオブジェクト権限は、認可上の理由からのみでなく、パフォーマンス上の理由からも適切です。
INDEX
権限を持つユーザーは、表の索引を作成できます。索引の作成によって追加の領域が消費され、表に対するDMLのパフォーマンスが影響を受けます。INDEXは、索引を作成するユーザーに明示的に付与する必要があります。
REFERENCES
権限を持つユーザーは、表の外部キー依存性を作成できます。外部キー依存性は、親のDML操作のパフォーマンスに影響を与えます。REFERENCES
権限の詳細は、「REFERENCES句による外部キーの作成時に必要なオブジェクト権限」を参照してください。
次の例では、HR
スキーマ内のemployees表のSELECT
オブジェクト権限をユーザーPAT
に付与します。
GRANT SELECT ON HR.employees TO PAT;
次の例では、ユーザーHR
が所有するemployees
表のUPDATE
E権限をユーザーPAT
に付与します。
GRANT UPDATE ON HR.employees TO PAT;
ユーザーがビューを作成できるようにするには、CREATE VIEW
権限またはCREATE ANY VIEW
権限を付与する必要があります。自分が所有していないビューから選択する場合、ユーザーには、そのビューのSELECT
オブジェクト権限が付与されている必要があります。また、ビュー自体が有効である必要があります。具体的には、そのビューが参照しているすべてのオブジェクトに対するSELECT
オブジェクト権限がそのビューの所有者に付与されている必要があります。
ユーザーPAT
が自分が所有者であるビューを作成し、そのビューの参照先が自分が所有するオブジェクトのみである場合、PatはCREATE VIEW
権限があればこの処理を実行できます。PatがTerryが所有者であるビューを作成し、そのビューの参照先がTerryが所有するオブジェクトである場合、この処理を実行するためにPatが必要とする権限はCREATE ANY VIEW
権限です。次に例を示します。
CREATE VIEW PAT.VIEW1 as select * from PAT.TABLE1;
この例の場合、PatにCREATE VIEW
権限があればこの文を実行できます。
ユーザーPatがビューを作成し、そのビューでTerryが所有する表を参照する場合、PatにはCREATE VIEW
権限と、そのビューが参照するすべてのオブジェクトに対するCREATE VIEW
オブジェクト権限が必要となります。ビューの作成者にではなく、ビューの所有者に、ビューが参照するオブジェクトに対するSELECT
オブジェクト権限が付与されている必要があります。そのため、この例では、Terryが所有するTABLE2
に対するSELECT
オブジェクト権限がPatに付与されている必要があります。これらの権限が付与されると、Patは次の文を実行できます。
CREATE VIEW PAT.VIEW2 as select * from TERRY.TABLE2;
ここで、3人目のユーザーJoeがこの文を実行する場合、Joeにはビューを作成するためにCREATE ANY VIEW
権限が必要となります。この文を実行するのはJoeですが、この場合もビューの所有者であるPatに、Terryの表に対して選択処理を実行するためのSELECT
オブジェクト権限が付与されている必要があります。
TimesTenでは、参照されるすべてのビューが実行時に検証されます。該当する処理を実行するために必要な権限がない場合、その権限について通知が行われます。
次に例を示します。
CREATE VIEW PAT.VIEW2 as select * from TERRY.TABLE2; CREATE VIEW JOE.VIEW4 as select * from PAT.VIEW2, TERRY.TABLE4;
Patがこの文を実行する場合は、次の権限が付与されている必要があります。
CREATE ANY VIEW
権限。Patが自分のスキーマの他にJoeのスキーマにビューを作成するために必要です。
ユーザーJoeに、Terry.Table4
に対するSELECT
オブジェクト権限が付与されている必要があります。
ユーザーJoeに、Pat.View2
に対するSELECT
オブジェクト権限が付与されている必要があります。
ユーザーPatに、Terry.Table2
に対するSELECT
オブジェクト権限が付与されている必要があります。
すべての参照の検証時に、TERRY.TABLE2
に対するSELECT
オブジェクト権限がPatにあるかどうかが確認され、PAT.VIEW2
が引き続き有効かどうかが判断されます。ビューからの選択を実行すると、そのビュー自体とそのビューが参照している他のビューが有効かどうかが検証されます。
自分が所有していない順序に対して処理を実行する場合、ユーザーには、SELECT
オブジェクト権限が付与されている必要があります。順序に対するSELECT
権限を持つユーザーは、最終的にその順序を更新するNEXTVALのような処理も含めて、順序に対するすべての処理を実行できます。
たとえば、HR
スキーマのemployees_seq
順序に対するSELECT
権限をユーザーPAT
に付与するには、次の文を発行します。
GRANT SELECT ON HR.employees_seq TO PAT;
PATは、この後、次の文を使用してこの順序の次の値を生成できます。
SELECT HR.employees_seq.NEXTVAL FROM DUAL; < 207 > 1 row found.
マテリアライズド・ビュを作成するには、ユーザーにCREATE MATERIALIZED VIEW
権限が必要です。他のユーザーのスキーマでマテリアライズド・ビューを作成するユーザーには、CREATE ANY MATERIALIZED VIEW
権限が必要です。
マテリアライズド・ビューの所有者には、そのビュー内のすべてのディテール表に対してCREATE TABLE
権限およびSELECT
権限が必要です。ただし、SELECT
ANY TABLE
やADMIN
などの上位レベルのシステム権限がすでに付与されているマテリアライズド・ビューの所有者には、ディテール表に対するSELECT
権限が自動的に付与されます。
自分が所有していないマテリアライズド・ビューから選択する場合、ユーザーには、そのマテリアライズド・ビューに対するSELECT
、INDEX
やREFERENCES
などのオブジェクト権限が付与されている必要があります。これらの必要な権限の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の該当するSQL文を参照してください。
マテリアライズド・ビューは有効である必要があります。具体的には、そのビューが参照しているすべてのディテール表に対するSELECT
オブジェクト権限がそのビューの所有者に付与され、保持されている必要があります。既存のマテリアライズド・ビューの所有者が、そのビューのベースとなるディテール表に対するSELECT
権限を保持しなくなると、そのマテリアライズド・ビューは無効となります。
マテリアライズド・ビューのステータスは、SYS.DBA_OBJECTS
、SYS.ALL_OBJECTS
およびSYS.USER_OBJECTS
ビューのSTATUS
列に表示されます。マテリアライズド・ビューの所有者は、USER_OBJECTS
ビューでそのマテリアライズド・ビューのステータスを確認できます。または、マテリアライズド・ビューが無効になると、INVALID
をそのビューに付加するttIsql describe
コマンドを実行します。
注意: SELECT ANY TABLE やADMIN などの上位レベルのシステム権限が付与されていたマテリアライズド・ビューの所有者は、そのシステム権限が取り消されると、ディテール表に対する必要なSELECT 権限を失います。その時点で、マテリアライズド・ビューは無効となります。 |
その場合でも、ユーザーは無効な非同期マテリアライズド・ビューからエラーなしで選択することは可能です。ただし、無効な同期マテリアライズド・ビューから選択すると、エラーが表示されます。
該当する権限を持つユーザーは、マテリアライズド・ビューのディテール表も更新できます。ただし、無効なマテリアライズド・ビューにそれらの変更は反映されません。さらに、非同期マテリアライズド・ビューについては、有効なマテリアライズド・ビューが非同期マテリアライズド・ビューに依存しない場合、マテリアライズド・ビュー・ログも更新されません。
無効な同期マテリアライズド・ビューに対して実行されるREFRESH
は、エラーを伴って失敗します。
以前取り消された権限が再度付与されたマテリアライズド・ビューの所有者の場合、無効なCOMPLETE
非同期マテリアライズド・ビューに対するREFRESH
は正常に終了し、そのビューは有効になります。
無効なマテリアライズド・ビューを修正するには、適切な権限をそのビューの所有者に付与した後、ビューを破棄してから再作成する必要があります。
CREATE
文またはALTER TABLE
文のREFERENCES
句では、親表列(TABLE2.PK
)に新しい子表列(TABLE1.COL1
)からの外部キー依存性が作成されます。次に例を示します。
ALTER TABLE PAT.TABLE1 ADD CONSTRAINT FK1 FOREIGN KEY (COL1) REFERENCES PAT.TABLE2 (PK);
この例のSQLを実行するユーザーには、ALTER ANY TABLE
権限が必要です。Patは両方の表を所有しているため、他の権限は不要です。
ただし、実行ユーザーが所有していない表がREFERENCES
句によって参照されている場合、自分が所有していない表に対するREFERENCES
オブジェクト権限がないと実行可能になりません。次に例を示します。
ALTER TABLE PAT.TABLE1 ADD CONSTRAINT FK1 FOREIGN KEY (COL1) REFERENCES TERRY.TABLE2 (PK);
この例のSQLを実行するユーザーには、ALTER ANY TABLE
権限が必要です。前の例と同様に、このSQLの実行ユーザーがPatである場合、表の所有者は自分が所有する表を常に変更できるため、ALTER ANY TABLE
権限は不要です。また、Terryが所有する表に関連する外部キーをユーザーPatが作成できるようにするには、PatにTERRY.TABLE2
に対するREFERENCES
権限が付与されている必要があります。
子表を作成または変更できるユーザーが外部キー依存性を作成するには、親表に対するREFERENCES
オブジェクト権限が必要です。REFERENCES
権限は、親表の外部キーを作成するユーザーにSELECT
権限を暗黙的に付与します。ただし、この暗黙的な付与によって親表のSELECT
権限がユーザーに付与されるわけではないため、親表に対する権限がREFERENCES
権限のみのユーザーがどのような SELECT
文を実行しても失敗します。
自分が所有していないPL/SQL関数、PL/SQLプロシージャまたはPL/SQLパッケージに対する処理を実行する場合、ユーザーには、EXECUTE
オブジェクト権限が付与されている必要があります。ユーザーにパッケージに対するEXECUTE
権限を付与すると、そのコンポーネント・プロシージャおよび関数に対する EXECUTE
権限が自動的に付与されます。
この権限によって、次の処理を実行する権限が付与されます。
プロシージャまたは関数を実行します。
パッケージの仕様で宣言されている任意のプログラム・オブジェクトにアクセスします。
現時点で無効または未コンパイルの関数またはプロシージャのコール時にオブジェクトを暗黙的にコンパイルします。
EXECUTE
権限を持つユーザーは、プロシージャ、関数またはパッケージを作成、破棄または変更できません。これらの処理には、適切なシステム権限が必要です。たとえば、ALTER PROCEDURE
またはALTER FUNCTION
を使用して明示的にコンパイルするには、ユーザーにALTER ANY PROCEDURE
システム権限が付与されている必要があります。関数、プロシージャまたはパッケージに関するシステム権限の詳細は、「任意のデータベース・オブジェクト・タイプに対するユーザーによる処理の許可」を参照してください。
ユーザーが、プライベート・シノニムまたはパブリック・シノニムを作成または破棄するには、次の権限が必要です。
表4-1 シノニムの権限
アクション | 必要な権限 |
---|---|
ユーザー自身のスキーマでプライベート・シノニムを作成します。 |
|
他のユーザーのスキーマでプライベート・シノニムを作成します。 |
|
パブリック・シノニムを作成します。 |
|
ユーザー自身のスキーマでプライベート・シノニムを破棄します。 |
権限は不要です。 |
他のユーザーのスキーマでプライベート・シノニムを破棄します。 |
|
パブリック・シノニムを破棄します。 |
|
さらに、シノニムを使用するには、ユーザーには、シノニムが参照するオブジェクトに対する適切はアクセス権限が必要です。たとえば、ビューに対するシノニムを作成し、作成したシノニムを使用してビューから選択を行うには、ビューからの選択に必要なSELECT
権限が必要です。
1つのGRANT
またはREVOKE
文で、1人以上のユーザーに対し、同じデータベースを対象として複数のオブジェクト権限を付与できます。たとえば、次の例では、1つのSQL文で、HR.employees
表に対するSELECT
およびUPDATE
オブジェクト権限をTerryに付与します。
GRANT SELECT, UPDATE ON HR.employees TO TERRY;
また、1つのGRANT
またはREVOKE
文で、1人以上のユーザーに複数のシステム権限を付与できます。次の例では、複数のシステム権限をTerryとPatの両方に付与します。
GRANT CREATE ANY TABLE, CREATE SESSION TO TERRY, PAT;
1つのGRANT
文またはREVOKE
文にシステム権限とオブジェクト権限の両方を含めることはできません。
ユーザーが任意のキャッシュ・グループに関連するアクティビティを実行できるようにするには、そのユーザーに適切なキャッシュ・グループ権限が付与される必要があります。キャッシュ・グループに対するシステム権限とオブジェクト権限があり、システム権限にはオブジェクトを限定しない機能が含まれます。
注意: パススルーの場合、権限チェックはOracle Databaseによってユーザー資格証明を使用して実行されるため、権限の付与は必要ありません。パススルーの詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』を参照してください。 |
次の項では、キャッシュ・グループ権限の概要について説明します。
キャッシュ・グループ処理のためのシステム権限とオブジェクト権限の完全なリストは、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の権限に関する説明を参照してください。
キャッシュ・グループ・システム権限を持つユーザーは、データベースに含まれるキャッシュ・グループ・オブジェクトを操作できます。CACHE_MANAGER
システム権限は、キャッシュ・グループの管理者権限です。CACHE_MANAGER
権限が付与されたユーザーは、任意のキャッシュ・グループ処理を実行できます。この権限により、キャッシュ・グループ処理権限のすべてが付与されます。それらの権限については、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』の権限階層に関する説明の項に列挙されています。
読取り専用キャッシュ・グループの初期ロードを実行したり、読取り専用キャッシュ・グループの自動リフレッシュ状態を変更するには、CACHE_MANAGER
権限が必要です。初期ロードを実行すると、キャッシュ・グループの自動リフレッシュの状態が一時停止からオンに暗黙的に変更されます。
次の例では、CACHE_MANAGER
権限をPATに付与します。
GRANT CACHE_MANAGER TO PAT;
TimesTenユーザーが必要とする権限は、実行するキャッシュ・グループ処理のタイプによって決まります。
キャッシュ・グループを作成するには、CREATE CACHE GROUP
システム権限またはCREATE ANY CACHE GROUP
システム権限が必要です。さらに、基礎となるキャッシュ表を作成するには、その表を自分が所有するかどうかに応じて、CREATE ANY TABLE
権限またはCREATE TABLE
権限をいずれかが付与される必要があります。
自分が所有していないキャッシュ・グループを破棄または変更する場合、ユーザーには、必要に応じてDROP ANY CACHE GROUP
権限またはALTER ANY CACHE GROUP
権限が付与されている必要があります。さらに、ユーザーが、自分が所有していない基礎となるキャッシュ表を破棄するには、DROP ANY TABLE
権限を付与される必要があります。
注意: すべてのキャッシュ・グループ権限の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のキャッシュ・インフラストラクチャの設定に関する説明の章を参照してください。 |
たとえば、次の例では、データベースに含まれる任意のキャッシュ・グループを変更する権限をユーザーに付与します。
GRANT ALTER ANY CACHE GROUP TO PAT;
注意: Oracle表を所有したり、キャッシュ・グリッド情報を格納するには、Oracle Databaseに、特定の権限を持つユーザーを作成することも必要です。Oracleキャッシュ管理ユーザーおよび各キャッシュ処理を行うTimesTenキャッシュ・マネージャ・ユーザーに必要な権限については、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のキャッシュ・インフラストラクチャの設定に関する説明を参照してください。 |
キャッシュ・グループ処理のための他のシステム権限は、自分が所有してないオブジェクトに対して次の処理を実行するためのものです。
キャッシュ・グループ処理のためのオブジェクト権限は、ユーザーが単一の定義済オブジェクトに対する処理を実行できるようにするために付与します。キャッシュ・グループ・オブジェクトに対するオブジェクト権限は、次のとおりです。
たとえば、次の例では、Terryが所有するキャッシュ・グループCACHEGRP
に対してFLUSH
を実行するためのキャッシュ・グループ・オブジェクト権限をPATに付与します。
GRANT FLUSH ON TERRY.CACHEGRP TO PAT;
キャッシュ・グループ処理の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』を参照してください。
各ユーザーに付与された権限を表示するには、次のビューを使用します。
表4-2 システム権限ビュー
ビュー名 | 説明 |
---|---|
現在のユーザーに付与されているすべてのシステム権限を戻します。 |
|
すべてのユーザーに付与される、 |
|
現在のユーザーに付与されているすべてのオブジェクト権限を戻します。 |
|
ユーザーに対して |
|
すべてのユーザーに付与される、 |
たとえば、次の文を実行すると、すべてのユーザーに付与されるシステム権限がすべて表示されます。
Command> SELECT * FROM SYS.DBA_SYS_PRIVS; < SYS, ADMIN, YES > < SYSTEM, ADMIN, YES > < TERRY, ADMIN, YES > < TERRY, CREATE ANY TABLE, NO > < PAT, CACHE_MANAGER, NO > 5 rows found.
注意: これらのビューの詳細は、Oracle TimesTen In-Memory Databaseのシステム表および制限についてのマニュアルのシステム表に関する説明を参照してください。 |
ユーティリティおよび組込みプロシージャの多くは、その実行に特定の権限を必要とします。また、一部の初期接続属性では、変更または接続時に特定の権限を必要とします。初期接続属性は、データベースが最初にロードされたときに設定されます。初期接続属性設定でデータベースをロードできるのはインスタンス管理者のみです。それぞれに必要な権限の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のユーティリティ、組込みプロシージャまたは初期接続属性に関する説明を参照してください。
外部キー制約によって関連付けられている表がある場合は、次の事項が該当します。
子表の外部キー制約にON DELETE CASCADE
が指定されている場合は、子表に対する DELETE
権限が明示的に付与されていなくても、ユーザーは子表からの削除を伴う親表からの行の削除を実行できます。ただし、この動作が自動で行われるようにするには、ユーザーに親表に対するDELETE
権限が必要です。
子表に対する挿入または更新を実行すると、親表に対する外部キー制約違反が子表に対する変更に伴って発生していないかどうかが確認されます。違反が発生する場合、ユーザーには子表に対するINSERT
権限またはUPDATE
権限が必要になりますが、親表に対するSELECT
権限は不要です。
子表を作成するユーザーが外部キー依存性を作成するには、親表に対するREFERENCES
オブジェクト権限が必要です。詳細は、「REFERENCES句による外部キーの作成時に必要なオブジェクト権限」を参照してください。