システム権限

TimesTenで使用可能なシステム権限があります。

システム権限について

インスタンス管理者の他に、最も強力なシステム権限はADMINであり、これによってユーザーは任意のデータベース・オブジェクトに対するシステム操作または操作を実行できます。他のユーザーに対してシステム権限の付与または取消しを行うことができるのは、インスタンス管理者またはADMIN権限を持つユーザーのみです。

各ユーザーは自分のシステム権限をSYS.USER_SYS_PRIVSシステム・ビューで確認できます。ADMIN権限を持つユーザーは、すべてのユーザーのすべてのシステム権限をSYS.DBA_SYS_PRIVSシステム表で確認できます。「ユーザー権限ビュー」を参照してください。

インスタンス管理者

インスタンス管理者(TimesTenユーザー・グループのメンバー)は、TimesTenインストールとすべてのTimesTenインスタンスを作成するユーザーです。このユーザーには、他の管理ユーザーの権限以外にも多数の特別な権限および機能があります。

これらについては、次の項で説明します。

インスタンス管理者権限

インスタンス管理者のみが実行できる権限があります。

  • TimesTenインストールを削除します。

  • TimesTenインスタンスを作成、変更(アップグレードを含む)または破棄します。

  • データベースを作成または破棄します。

  • データベースを手動でロードまたはアンロードします(ttAdmin -ramLoadを使用してramPolicy manual)。

  • 最初の接続属性設定への変更が適用されるときにデータベースをロードします。

  • データベースのオープンまたはクローズ

  • データベースをリストアします。

  • TimesTenデーモンを起動および停止します。

  • TimesTenサーバーを再起動します。

また、TimesTen Scaleoutの場合は、インスタンス管理者のみがttGridAdminユーティリティの任意のコマンドを実行できます。前述の機能を含め、他の多くの機能のうち、TimesTen Scaleoutインスタンス管理者のみがグリッドの作成、データベース定義と接続可能オブジェクトの作成、既存データベースの分散マップの変更、リポジトリの作成、バックアップ、リストア、エクスポートおよびインポートの実行を行うことができます。

関連情報については、次を参照してください。

ノート:

  • インスタンス管理者は、ルート・ユーザーにすることはできません。

  • 別のインスタンス管理者に変更することはできません。

  • TimesTen Scaleoutでは、インスタンス管理者のユーザー名、ユーザーID、グループ名およびグループIDがすべて、グリッドのすべてのホストで同じである必要があります。

データベースおよびログ・ディレクトリのインスタンス管理者の所有権および権限

インスタンス管理者は、チェックポイント・ファイルへの書込み先であるデータベース・ディレクトリ(DataStore接続属性によって示される)、およびログ・ディレクトリ(LogDir接続属性によって示される)を所有します。

これらのディレクトリに対して適切な所有権および権限を設定する必要があります。所有者がインスタンス管理者であることに加えて、グループはTimesTenユーザー・グループである必要があり、他のユーザーはアクセスできないように所有者およびグループに対してディレクトリ権限の読取り/書込み/実行権限を設定する必要があります。

管理権限

ADMIN権限は、すべてのデータベース・オブジェクトに対するシステム権限および権限を付与し、これにより、これらのユーザーは、管理タスクおよび任意の有効なデータベース操作を実行できます。ADMIN権限を付与できるのは、インスタンス管理者またはADMIN権限を持つ別のユーザーのみです。

ADMIN権限を持つユーザーは、次のことができます。

  • すべてのデータベース・オブジェクトに対する作成、変更、破棄、選択、更新、挿入または削除操作の実行。

  • すべての権限の付与または取消し。

  • チェックポイント操作の実行。

  • ユーザーの作成および削除。

  • システム表、ビューおよびパッケージの表示。

  • レプリケーション・スキーマまたはアクティブ・スタンバイ・ペアの作成、変更または破棄。

ノート:

システム表またはビューでユーザーの権限を確認する方法の詳細は、「ユーザー権限ビュー」を参照してください。

ADMIN権限をユーザーterryに付与するには、インスタンス管理者またはADMIN権限を持つ他のユーザーが次の文を実行します。

GRANT ADMIN TO terry;

patが所有するdepartments表でterrySELECT権限を付与するには、次のようにします。

GRANT SELECT ON pat.departments TO terry;

ノート:

patはdepartmentsの所有者であるため、patterrySELECTオブジェクト権限を付与できます。

データベースに接続する権限

ユーザーがデータベースに接続するには、インスタンス管理者またはADMIN権限を持つユーザーによってCREATE SESSIONシステム権限が付与されている必要があります。

次の例では、CREATE SESSION権限をpatに付与します。

Command> GRANT CREATE SESSION TO pat;

ノート:

TimesTenデータベースへのアクセスには、データソース名(DSN)を使用します。ユーザーが、権限のない接続属性(初期接続属性など)を持つDSNを使用しようとすると、エラーが表示されます。

ANYキーワード

ANYキーワードとともに使用する権限により、ユーザーは、データベースの指定されたタイプのオブジェクトに対して操作を実行できます。

これらのシステム権限には、CREATE ANY object_typeDROP ANY object_typeALTER ANY object_typeSELECT ANY object_typeUPDATE ANY TABLEINSERT ANY TABLEDELETE ANY TABLEおよびEXECUTE ANY PROCEDUREがあります。

ANY TABLEには、ビューおよびマテリアライズド・ビューも含まれます。

ALL PRIVILEGES

ALL PRIVILEGESは、インスタンス管理者またはADMIN権限を持つユーザーが付与でき、システム権限をユーザーに付与します。

付与する権限を制限する場合は、ALL PRIVILEGESを付与してから、ユーザーに付与しないシステム権限を取り消すことができます。

付与後、ALL PRIVILEGESを取り消すことができます。

権限の階層

権限の階層があります。上位レベルの権限では、関連する下位レベルの権限が付与されます。たとえば、ADMIN権限ではシステム権限が付与されます。SELECT ANY TABLE権限では、任意の表に対するSELECT権限が付与されます。

ユーザーに操作の権限が必要な場合、最初にユーザーがすでに上位レベルの権限によって権限を持っているかどうかを確認します。たとえば、ユーザーpatterry.table2に対するSELECT権限を必要としている場合、次の事項を確認します。

  • patSELECT ANY TABLE権限が付与されているかどうか。この権限がある場合、patは任意の表、ビューおよびマテリアライズド・ビューに対してSELECTを実行できます。

  • patADMIN権限が付与されているかどうか。これがある場合、patは有効なSQL操作を実行できます。

上位レベルに含まれる権限を付与しても、エラーは発生しません。ただし、権限を取り消す場合は、付与した単位(ANYレベルまたはオブジェクト・レベル)で取り消す必要があります。

次の一連の文は許可されますが、patUPDATE ANY TABLE権限のためにhr.employees表を更新できます。(2番目の文は不要ですが、それがないと3番目の文が許可されません。)

Command> GRANT UPDATE ANY TABLE TO pat;
Commanc> GRANT UPDATE ON hr.employees TO pat;
Command> REVOKE UPDATE ON hr.employees FROM pat;

次の例でも、明示的に付与されたため、patは引き続きhr.employeesを更新できます。

Command> GRANT UPDATE ANY TABLE TO pat;
Commanc> GRANT UPDATE ON hr.employees TO pat;
Command> REVOKE UPDATE ANY TABLE FROM pat;

次の例では、ユーザーがhr.employees表を更新する機能を取り消そうとしていますが、その特定のオブジェクトに対するGRANT文がなかったため、許可されません。

Command> GRANT UPDATE ANY TABLE TO pat;
Command> 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リファレンス』権限の階層を参照してください。

追加のシステム権限

ADMIN権限に加えて、一部のシステム権限では、データベース機能の特定の領域にまたがる範囲の操作が認可されます。

  • XLA: システムにグローバルに影響を及ぼす可能性のあるXLAリーダーとして接続するには、XLAシステム権限が必要です。XLAリーダーは、追加のログ・ボリュームを作成できますが、そのブックマークを先に進めることができない場合にログが長期間保留される可能性があります。

  • CACHE_MANAGER: CACHE_MANAGER権限は、キャッシュ・グループ管理者処理に必要です。「キャッシュ・グループの権限」を参照してください。

PUBLICロールを介した権限

インスタンス管理者またはADMIN権限を持つユーザーは、PUBLICロールに対する権限の付与または取消しによって、すべてのユーザーのデフォルト権限の付与または取消しを実行できます。

ノート:

  • ユーザーに明示的に権限が付与されている場合、その権限がPUBLICから取り消される場合は取り消されません。

  • ユーザーSYSによってPUBLICに付与された権限は取り消すことができません。これらの権限は、データベース作成の一環として付与され、次のSQL文を実行して確認できます。

    Command> SELECT * FROM DBA_TAB_PRIVS WHERE GRANTOR = 'SYS'

次の例では、ユーザーpatSELECT ANY TABLE権限が、PUBLICSELECT ANY TABLE権限がそれぞれ付与されます。次に、SYS.DBA_SYS_PRIVSビューのすべてのシステム権限が表示されます。(「ユーザー権限ビュー」を参照してください。)示されているように、PUBLICからSELECT ANY TABLEを取り消しても、patからSELECT ANY TABLEは取り消されません。(2番目の列はユーザーが保持している権限を示します。この例の3番目の列NOは、ユーザーがその権限を他のユーザーに付与できるかどうかを示します。)

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.

デフォルトでは、新しく作成されたTimesTenデータベースでは、PUBLICに、各種システム表およびビューと、PL/SQLファンクション、プロシージャおよびパッケージに対するSELECT権限とEXECUTE権限があります。PUBLICに付与された権限のリストは、SYS.DBA_TAB_PRIVSビューに問い合せることで表示できます。次に示す問合せでは、PUBLICに付与されている権限は、問合せの前にあるDESCRIBE文で示されているように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.