システム権限
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インスタンス管理者のみがグリッドの作成、データベース定義と接続可能オブジェクトの作成、既存データベースの分散マップの変更、リポジトリの作成、バックアップ、リストア、エクスポートおよびインポートの実行を行うことができます。
関連情報については、次を参照してください。
-
『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』のインスタンス管理者、TimesTenユーザー・グループの理解およびTimesTenインスタンス
-
『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のTimesTen Scaleoutのアーキテクチャおよびオペレーティング・システム・ユーザー
ノート:
-
インスタンス管理者は、ルート・ユーザーにすることはできません。
-
別のインスタンス管理者に変更することはできません。
-
TimesTen Scaleoutでは、インスタンス管理者のユーザー名、ユーザーID、グループ名およびグループIDがすべて、グリッドのすべてのホストで同じである必要があります。
データベースおよびログ・ディレクトリのインスタンス管理者の所有権および権限
インスタンス管理者は、チェックポイント・ファイルへの書込み先であるデータベース・ディレクトリ(DataStore
接続属性によって示される)、およびログ・ディレクトリ(LogDir
接続属性によって示される)を所有します。
これらのディレクトリに対して適切な所有権および権限を設定する必要があります。所有者がインスタンス管理者であることに加えて、グループはTimesTenユーザー・グループである必要があり、他のユーザーはアクセスできないように所有者およびグループに対してディレクトリ権限の読取り/書込み/実行権限を設定する必要があります。
管理権限
ADMIN
権限は、すべてのデータベース・オブジェクトに対するシステム権限および権限を付与し、これにより、これらのユーザーは、管理タスクおよび任意の有効なデータベース操作を実行できます。ADMIN
権限を付与できるのは、インスタンス管理者またはADMIN
権限を持つ別のユーザーのみです。
ADMIN
権限を持つユーザーは、次のことができます。
-
すべてのデータベース・オブジェクトに対する作成、変更、破棄、選択、更新、挿入または削除操作の実行。
-
すべての権限の付与または取消し。
-
チェックポイント操作の実行。
-
ユーザーの作成および削除。
-
システム表、ビューおよびパッケージの表示。
-
レプリケーション・スキーマまたはアクティブ・スタンバイ・ペアの作成、変更または破棄。
ノート:
システム表またはビューでユーザーの権限を確認する方法の詳細は、「ユーザー権限ビュー」を参照してください。
ADMIN
権限をユーザーterry
に付与するには、インスタンス管理者またはADMIN
権限を持つ他のユーザーが次の文を実行します。
GRANT ADMIN TO terry;
pat
が所有するdepartments
表でterry
にSELECT
権限を付与するには、次のようにします。
GRANT SELECT ON pat.departments TO terry;
ノート:
pat
はdepartmentsの所有者であるため、pat
もterry
にSELECT
オブジェクト権限を付与できます。
データベースに接続する権限
ユーザーがデータベースに接続するには、インスタンス管理者またはADMIN
権限を持つユーザーによってCREATE SESSION
システム権限が付与されている必要があります。
次の例では、CREATE SESSION
権限をpat
に付与します。
Command> GRANT CREATE SESSION TO pat;
ノート:
TimesTenデータベースへのアクセスには、データソース名(DSN)を使用します。ユーザーが、権限のない接続属性(初期接続属性など)を持つDSNを使用しようとすると、エラーが表示されます。
ANYキーワード
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
があります。
ANY TABLE
には、ビューおよびマテリアライズド・ビューも含まれます。
ALL PRIVILEGES
ALL PRIVILEGES
は、インスタンス管理者またはADMIN
権限を持つユーザーが付与でき、システム権限をユーザーに付与します。
付与する権限を制限する場合は、ALL PRIVILEGES
を付与してから、ユーザーに付与しないシステム権限を取り消すことができます。
付与後、ALL PRIVILEGES
を取り消すことができます。
権限の階層
権限の階層があります。上位レベルの権限では、関連する下位レベルの権限が付与されます。たとえば、ADMIN
権限ではシステム権限が付与されます。SELECT ANY TABLE
権限では、任意の表に対するSELECT
権限が付与されます。
ユーザーに操作の権限が必要な場合、最初にユーザーがすでに上位レベルの権限によって権限を持っているかどうかを確認します。たとえば、ユーザーpat
がterry.table2
に対するSELECT
権限を必要としている場合、次の事項を確認します。
-
pat
にSELECT ANY TABLE
権限が付与されているかどうか。この権限がある場合、pat
は任意の表、ビューおよびマテリアライズド・ビューに対してSELECT
を実行できます。 -
pat
にADMIN
権限が付与されているかどうか。これがある場合、pat
は有効なSQL操作を実行できます。
上位レベルに含まれる権限を付与しても、エラーは発生しません。ただし、権限を取り消す場合は、付与した単位(ANY
レベルまたはオブジェクト・レベル)で取り消す必要があります。
次の一連の文は許可されますが、pat
はUPDATE 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'
次の例では、ユーザーpat
にSELECT ANY TABLE
権限が、PUBLIC
にSELECT 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.