用途
GRANT文を使用すると、次の権限またはロールを付与できます。
ユーザーおよびロールに対するシステム権限。表18-1に、システム権限のリストを、操作対象のデータベース・オブジェクト別に示します。
ユーザー、ロール、およびプログラム・ユニットに対するロール。付与されたロールは、ユーザー定義(ローカルまたは外部)または事前定義済のいずれかです。事前定義されているロールのリストは、『Oracle Databaseセキュリティ・ガイド』を参照してください。
ユーザーおよびロールに対する、特定のオブジェクトに対するオブジェクト権限。表18-2に、オブジェクト権限のリストを、操作対象のデータベース・オブジェクト別に示します。
|
注意: グローバル・ロール(IDENTIFIED GLOBALLYで作成)は、エンタープライズ・ロールを介して付与します。GRANT文を使用して付与することはできません。 |
データベース・ユーザーの認可の注意事項: データベース・ユーザーを認可する方法は、データベースやGRANT文を介して行う以外にもあります。
多くのOracle Database権限は、提供されるPL/SQLパッケージおよびJavaパッケージを介して付与されます。これらの権限の詳細は、該当するパッケージのドキュメントを参照してください。
オペレーティング・システムによっては、Oracle Databaseユーザーに対して、初期化パラメータOS_ROLESでロールを付与できます。オペレーティング・システム機能を使用してユーザーにロールを付与する場合、GRANT文でユーザーにロールを付与することはできなくなります。ただし、GRANT文を使用して、ユーザーにシステム権限を付与したり、その他のロールにシステム権限およびロールを付与することはできます。
Oracle Automatic Storage Managementの注意事項: AS SYSASMと認証されたユーザーは、この文を使用すると、システム権限SYSASM、SYSOPERおよびSYSDBAを現行ノードのOracle ASMパスワード・ファイルのユーザーに付与できます。
エディション化可能なオブジェクトの注意事項 エディション化可能なオブジェクトにオブジェクト権限を付与するGRANT操作を実行すると、オブジェクトが現行のエディションで実体化されます。エディションおよびエディション化可能なオブジェクトの詳細は、『Oracle Database開発ガイド』を参照してください。
|
関連項目:
|
前提条件
システム権限を付与にするには、次のいずれかの条件が満たされている必要があります。
GRANT ANY PRIVILEGEシステム権限が付与されている必要があります。この場合、ロールがユーザーのセッションで有効になっていないかぎり、システム権限をロールに付与しても、ロールが付与されているユーザーに権限は付与されません。
ADMIN OPTION付きのシステム権限が付与されている必要があります。この場合、ロールがユーザーのセッションで有効になっているかどうかに関係なく、システム権限をロールに付与すると、ロールが付与されているユーザーに権限が付与されます。
ユーザーに対するロールまたは別のロールを付与する場合は、ADMIN OPTION付きのロールが直接付与されているか、GRANT ANY ROLEシステム権限が付与されているか、または付与するロールが自分で作成したロールである必要があります。
自分のスキーマ内のプログラム・ユニットへのロールを付与するには:
Oracle Database 12cリリース1(12.1.0.1)の場合、ロールが直接付与されているか、または付与するロールが自分で作成したロールである必要があります。
Oracle Database 12cリリース1(12.1.0.2)以降、ADMIN OPTIONまたはDELEGATE OPTION付きのロールが直接付与されているか、GRANT ANY ROLEシステム権限が付与されているか、または付与するロールが自分で作成したロールである必要があります。
別のユーザーのスキーマ内のプログラム・ユニットに対するロールを付与するには、ユーザーSYSである必要があり、ロールがスキーマ所有者によって作成されているか、直接スキーマ所有者に付与されている必要があります。
on_object_clauseのON USER句を指定して、オブジェクト権限をユーザーに付与する場合は、その権限が付与されたユーザーであるか、そのユーザーに対するオブジェクト権限がWITH GRANT OPTION付きで付与されているか、GRANT ANY OBJECT PRIVILEGEシステム権限が付与されている必要があります。GRANT ANY OBJECT PRIVILEGEを所持しているという理由だけで、あるユーザーに対するオブジェクト権限を付与できる場合は、*_TAB_PRIVSビューのGRANTOR列には、GRANT文を発行したユーザーではなく、権限が付与されたユーザーが表示されます。
その他のオブジェクトのタイプすべてにオブジェクト権限を付与する場合は、オブジェクトの所有者であるか、オブジェクトの所有者からWITH GRANT OPTION付きのオブジェクト権限が付与されている必要があります。または、GRANT ANY OBJECT PRIVILEGEシステム権限が付与されている必要があります。GRANT ANY OBJECT PRIVILEGEを持っている場合は、オブジェクトの所有者が付与可能なオブジェクト権限と同じオブジェクト権限のみを付与できます。その場合、*_TAB_PRIVSビューのGRANTOR列には、GRANT文を発行したユーザーではなく、オブジェクトの所有者が表示されます。
CONTAINER句を指定する場合は、マルチテナント・コンテナ・データベース(CDB)に接続している必要があります。CONTAINER = ALLを指定する場合は、現在のコンテナがルートである必要があります。
構文
grant::=

(grant_system_privileges::=, grant_object_privileges::=, grant_roles_to_programs::=)

(grantee_clause::=、grantee_identified_by::=を参照)



(on_object_clause ::=、grantee_clause ::=を参照)
on_object_clause ::=


program_unit::=

セマンティクス
grant_system_privileges
システム権限を付与するには、次の句を使用します。
system_privilege
付与するシステム権限を指定します。表18-1に、システム権限のリストを、操作対象のデータベース・オブジェクト別に示します。
ユーザーに権限を付与する場合、ユーザーの権限ドメインに権限が登録されます。このユーザーはその権限をすぐに使用できます。ANY権限は、信頼できるユーザーにのみ付与することをお薦めします。
ロールに権限を付与する場合、ロールの権限ドメインに権限が登録されます。ロールが付与されているまたは使用可能となっているユーザーは、その権限をすぐに使用できます。なお、ロールが付与されている他のユーザーも、そのロールを使用可能にしてその権限を使用できます。
PUBLICに権限を付与する場合、各ユーザーの権限ドメインに権限が登録されます。すべてのユーザーは、その権限によって許可される操作をすぐに実行できます。システム権限をPUBLICに付与しないことをお薦めします。
付与するロールを指定します。Oracle Databaseの事前定義ロールまたはユーザー定義ロールを付与できます。
ユーザーにロールを付与する場合、そのユーザーが、付与されたロールを使用できます。ユーザーはそのロールをすぐに使用可能にし、ロールの権限ドメインに登録されている権限を使用できます。
保護アプリケーション・ロールは、ユーザーに直接付与する必要はありません。ユーザーが適切なセキュリティ・ポリシーを渡すことを前提として、関連付けられたPL/SQLパッケージでこの処理を行うことができます。詳細は、「USING package」の「CREATE ROLEセマンティクス」および『Oracle Databaseセキュリティ・ガイド』を参照してください。
他のロールにロールを付与する場合、権限受領者のロールの権限ドメインに、権限付与者のロールの権限ドメインが登録されます。権限受領者のロールを付与されているユーザーは、それを使用可能にした場合、付与されたロールの権限ドメイン内の権限を使用できます。
PUBLICにロールを付与する場合、すべてのユーザーがロールを使用できます。すべてのユーザーはそのロールをすぐに使用可能にし、ロールの権限ドメインに登録されている権限を使用できます。
ALL PRIVILEGES
ALL PRIVILEGESを指定すると、SELECT ANY DICTIONARY、ALTER DATABASE LINKおよびALTER PUBLIC DATABASE LINK権限を除く、表18-1に示すすべてのシステム権限を付与できます。
|
関連項目:
|
grantee_clause
grantee_clauseを使用すると、システム権限、ロールまたはオブジェクト権限が付与されるユーザーまたはロールを指定できます。
PUBLIC PUBLICを指定すると、すべてのユーザーに権限を付与できます。システム権限をPUBLICに付与しないことをお薦めします。
権限受領者の制限事項: 各ユーザー、ロールまたはPUBLICはそれぞれ、grantee_clauseに1回のみ指定可能です。
grantee_identified_by
grantee_identified_by句を使用すると、ユーザーにシステム権限とロールを付与するときにユーザーにパスワードを割り当てることができます。ユーザーとパスワードを同じ数だけ指定する必要があります。最初のパスワードは最初のユーザーに、2番目のパスワードは2番目のユーザーに、というように割り当てられます。指定したユーザーが存在する場合、データベースはそのユーザーのパスワードをリセットします。指定したユーザーが存在しない場合、データベースはパスワードとともにユーザーを作成します。
WITH ADMIN OPTIONを指定すると、権限受領者は次のことができます。
ロールがGLOBALロールでない場合、権限またはロールを他のユーザーまたはロールに付与できます。
権限またはロールを他のユーザーまたは他のロールから取り消すことができます。
権限またはロールへのアクセスに必要な認可を変更するため、その権限またはロールを変更できます。
権限またはロールを削除します。
権限を付与したスキーマ内のプログラム・ユニットに、ロールを付与します。
権限を付与したスキーマ内のプログラム・ユニットからロールを取り消します。
たとえば、WITH ADMIN OPTIONを指定せずにユーザーにロールまたはシステム権限を付与し、後でWITH ADMIN OPTIONを指定してその権限およびロールを付与した場合、そのユーザーはその権限またはロールに関してADMIN OPTIONを持つことになります。
システム権限またはロールのADMIN OPTIONをユーザーから取り消す場合、そのユーザーの権限またはロールを完全に取り消し、その次にADMIN OPTIONを指定せずに権限またはロールをユーザーに付与します。
WITH DELEGATE OPTION
|
注意: WITH DELEGATE OPTION句は、Oracle Database 12cリリース1(12.1.0.2)から使用可能です。 |
ロールをユーザーに付与する場合のみ、この句を指定できます。
WITH DELEGATE OPTIONを指定すると、権限受領者は次のことができます。
権限を付与したスキーマ内のプログラム・ユニットに、ロールを付与します。
権限を付与したスキーマ内のプログラム・ユニットからロールを取り消します。
たとえば、WITH DELEGATE OPTIONを指定せずにユーザーにロールを付与し、後でWITH DELEGATE OPTIONを指定してそのロールを付与した場合、そのユーザーはそのロールに関してDELEGATE OPTIONを持つことになります。
ロールのDELEGATE OPTIONをユーザーから取り消す場合、そのユーザーのロールを完全に取り消し、その次にDELEGATE OPTIONを指定せずにロールをユーザーに付与する必要があります。
システム権限およびロールの付与の制限事項: 権限およびロールには、次の制限事項があります。
付与する権限およびロールのリストに、権限またはロールを指定できるのは1回のみです。
ロールに対してそのロールと同じロールは付与できません。
ロールIDENTIFIED GLOBALLYは、どのようなユーザーまたはロールに対しても付与できません。
ロールIDENTIFIED EXTERNALLYは、グローバル・ユーザーまたはグローバル・ロールに対して付与できません。
ロールは交互に付与できません。たとえば、ロールbankerをロールtellerに付与した場合、逆にtellerをbankerに付与することはできません。
IDENTIFIED BYロール、IDENTIFIED USINGロールおよびIDENTIFIED EXTERNALLYロールの別のロールへの付与はできません。
grant_object_privileges
オブジェクト権限を付与するには、次の句を使用します。
object_privilege
付与するオブジェクト権限を指定します。表18-2に、オブジェクト権限のリストを、付与されるオブジェクトのタイプ別に示します。ユーザーまたはロールのいずれかのオブジェクト権限をエディション化可能なオブジェクトに付与すると、オブジェクトは付与したエディションで実体化されます。エディション化可能なオブジェクト型およびエディションの詳細は、「CREATE EDITION」を参照してください。
オブジェクト権限の制限事項: 付与する権限のリストに権限を指定できるのは1回のみです。
ALLを指定すると、GRANT OPTION付きで付与されているオブジェクト権限に対するすべての権限を付与できます。オブジェクトが定義されているスキーマを所有しているユーザーは、自動的にGRANT OPTION付きのオブジェクトに対するすべての権限を持っています。キーワードPRIVILEGESはセマンティクスを明確にするためのものであり、指定は任意です。
権限を付与する表またはビューの列を指定します。INSERT、REFERENCESまたはUPDATEの各権限を付与する場合にのみ、列を指定できます。列を指定しない場合、権限受領者には表またはビューのすべての列に対して指定した権限が付与されます。
既存の列オブジェクトに対して付与された権限については、データ・ディクショナリ・ビューUSER_COL_PRIVS、ALL_COL_PRIVSまたはDBA_COL_PRIVSを問い合せます。
on_object_clause
on_object_clauseを指定すると、権限が付与されているオブジェクトを識別できます。ユーザー、ディレクトリ・スキーマ・オブジェクト、エディション、データ・マイニング・モデル、Javaソースおよびリソース・スキーマ・オブジェクト、およびSQL翻訳プロファイルは、異なるネームスペースに格納されるため、別々に識別されます。
object 権限を付与するスキーマ・オブジェクトを指定します。objectをschemaで修飾しなかった場合、そのオブジェクトは自分のスキーマ内にあるとみなされます。オブジェクトには次のタイプがあります。
表、ビューまたはマテリアライズド・ビュー
順序
プロシージャ、ファンクションまたはパッケージ
ユーザー定義型
これらの項目のシノニム
ディレクトリ、ライブラリ、演算子または索引タイプ
Javaソース、クラスまたはリソース
パーティション表の単一パーティションに直接権限を付与することはできません。
ON USER 権限を付与するデータベース・ユーザーを1人以上指定します。
権限付与の注意事項 ユーザーPUBLICに対しては権限を付与できません。
ON DIRECTORY 権限を付与するディレクトリ・スキーマ・オブジェクトの名前を指定します。directory_nameはスキーマ名で修飾できません。
ON EDITION USEオブジェクト権限を付与するエディションの名前を指定します。edition_nameはスキーマ名で修飾できません。
ON MINING MODEL 権限を付与するマイニング・モデルの名前を指定します。mining_model_nameをschemaで修飾しなかった場合、そのマイニング・モデルは自分のスキーマ内にあるとみなされます。
ON JAVA SOURCE | RESOURCE 権限を付与するJavaソースまたはリソース・スキーマ・オブジェクトの名前を指定します。objectをschemaで修飾しなかった場合、そのオブジェクトは自分のスキーマ内にあるとみなされます。
ON SQL TRANSLATION PROFILE 権限を付与するSQL翻訳プロファイルの名前を指定します。profileをschemaで修飾しなかった場合、そのプロファイルは自分のスキーマ内にあるとみなされます。
WITH HIERARCHY OPTIONを指定すると、この文の後に作成されるサブオブジェクトも含め、objectのすべてのサブオブジェクト(ビューを基に作成したサブビューなど)に対する指定したオブジェクト権限を付与できます。
この句は、READまたはSELECTオブジェクト権限とあわせて指定する場合のみ意味があります。
WITH GRANT OPTIONを指定すると、権限受領者による、他のユーザーまたはロールに対するオブジェクト権限の付与を許可できます。
たとえば、WITH GRANT OPTIONを指定せずにユーザーにオブジェクト権限を付与し、後でWITH GRANT OPTIONを指定してその権限を付与した場合、そのユーザーはその権限に関してGRANT OPTIONを持つことになります。
オブジェクト権限のGRANT OPTIONをユーザーから取り消す場合、そのユーザーの権限を完全に取り消し、その次にGRANT OPTIONを指定せずに権限をユーザーに付与する必要があります。
With Grant Optionの付与の制限事項: WITH GRANT OPTIONは、ユーザーまたはPUBLICに権限を付与する場合にのみ指定できます。ロールに付与する場合は指定できません。
grant_roles_to_programs
この句を使用して、ロールをプログラム・ユニットに付与します。そのようなロールは、コード・ベースのアクセス制御(CBAC)ロールと呼ばれます。
role
付与するロールを指定します。Oracle Databaseの事前定義ロールまたはユーザー定義ロールを付与できます。ロールはプログラム・ユニットのスキーマ所有者によって作成されているか、直接付与する必要があります。
program_unit
ロールを付与するプログラム・ユニットを指定します。PL/SQLファンクション、プロシージャ、またはパッケージを指定できます。schemaを指定しない場合、ファンクション、プロシージャ、またはパッケージは独自のスキーマにあると見なされます。
|
関連項目: プログラム・ユニットへのコードに基づくアクセス制御ロールの割当ての詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
CONTAINER句
現在のコンテナがプラガブル・データベース(PDB)である場合:
CONTAINER = CURRENTを指定すると、システム権限、オブジェクト権限またはロールをユーザーまたはロールにローカルに付与できます。現在のPDBでのみ、その権限またはロールがユーザーまたはロールに付与されます。
現在のコンテナがルートである場合:
CONTAINER = CURRENTを指定すると、システム権限、オブジェクト権限またはロールを共通ユーザーまたは共通ロールにローカルに付与できます。ルートでのみ、ユーザーまたはロールにその権限が付与されます。
CONTAINER = ALLを指定すると、システム権限、共通オブジェクトに対するオブジェクト権限またはロールを共通ユーザーまたは共通ロールに共通に付与できます。
この句を省略すると、CONTAINER = CURRENTがデフォルトになります。
|
注意: 権限またはロールを付与するときにCONTAINER句を指定する場合は、現在のコンテナが同じコンテナである必要があります。また、その権限またはロールを取り消すときには、同じCONTAINER句を指定する必要があります。詳細は、REVOKE文の「CONTAINER句」を参照してください。 |
システム権限およびオブジェクト権限
表18-1 システム権限(操作対象のデータベース・オブジェクト別)
表18-2 オブジェクト権限(操作対象のデータベース・オブジェクト別)
| オブジェクト権限名 | 許可される操作 |
|---|---|
|
DIRECTORY PRIVILEGES |
次のディレクトリ権限では、ディレクトリ・オブジェクトをポインタとして使用することにより、オペレーティング・システムのディレクトリに格納されている各ファイルにデータベースから安全にアクセスできるようになります。このディレクトリ・オブジェクトには、ファイルが格納されているオペレーティング・システムのディレクトリへのフルパス名が定義されています。これらのファイルは実際にはデータベース外に格納されているため、Oracle Databaseサーバーの各プロセスは、ファイル・システム・サーバーに対して適切なファイル・アクセス権も持っている必要があります。オペレーティング・システムに対するオブジェクト権限ではなく、ディレクトリ・データベース・オブジェクトに対するオブジェクト権限を個々のデータベース・ユーザーに付与することによって、データベースでファイル運用時のセキュリティが確保されます。 |
|
ディレクトリ内のファイルの読取り。 |
|
|
ディレクトリ内へのファイルの書込み。この権限は、外部表に接続する場合のみに役立ちます。これによって、権限受領者は、外部表のエージェントがディレクトリに書き込めるのがログ・ファイルなのか不良ファイルなのかを判断できます。 制限事項: この権限を持っていても、 |
|
|
ディレクトリ内に存在するプリプロセッサ・プログラムの実行。プリプロセッサ・プログラムは、 |
|
|
エディション権限 |
次のエディション権限は、エディションの使用を許可します。 |
|
|
エディションの使用。 |
|
索引タイプ権限 |
次の索引タイプ権限は、索引タイプの操作を許可します。 |
|
|
索引タイプの参照。 |
|
フラッシュバック・データ・アーカイブ権限 |
次のフラッシュバック・データ・アーカイブ権限では、フラッシュバック・データ・アーカイブに対する操作を許可します。 |
|
表の履歴追跡を使用可能または使用禁止にします。 |
|
|
ライブラリ権限 |
次のライブラリ権限は、ライブラリの操作を許可します。 |
|
特定のオブジェクトの使用と参照、およびそのメソッドの起動。 注意: この権限は非常に強力であるため、信頼できるユーザーにのみ付与してください。この権限を付与する前に、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
|
|
マテリアライズド・ビュー権限 |
次のマテリアライズド・ビュー権限は、マテリアライズド・ビューについての操作を許可します。 |
|
指定した表に対するREFRESH ON COMMITモードのマテリアライズド・ビューの作成。 |
|
|
指定した表で使用するクエリー・リライトに対するマテリアライズド・ビューの作成。 |
|
|
マテリアライズド・ビューを問い合せます。 注意: この権限は、Oracle Database 12cリリース1(12.1.0.2)以上で使用できます。 |
|
|
マテリアライズド・ビューを問い合せます。 |
|
|
マイニング・モデル権限 |
次のマイニング・モデル権限では、マイニング・モデルに対する操作を許可します。これらの権限は、ユーザー自身のスキーマ内にあるモデルに対しては必要ありません。 |
|
該当する |
|
|
マイニング・モデルのスコアリングまたは表示。スコアリングの実行には、SQLファンクションの |
|
|
オブジェクト型権限 |
次のオブジェクト型権限は、データベース・オブジェクト型の操作を許可します。 |
|
オブジェクト型に定義されたすべてのパブリック変数、非パブリック変数、メソッドおよび型へのデバッガを介したアクセス。 型本体内の行または指示境界へのブレークポイントの設定、またはこれらの場所のいずれかでの停止。 |
|
|
特定のオブジェクトの使用と参照、およびそのメソッドの起動。 オブジェクト型に定義されたパブリック変数、型およびメソッドへのデバッガを介したアクセス。 |
|
|
型のサブタイプの作成。この型の直属のスーパータイプに |
|
|
OLAP権限 |
Oracle DatabaseをOLAPオプションで使用している場合は、次のオブジェクト権限が有効になります。 |
|
メンバーをOLAPキューブ・ディメンションに挿入するか、またはメジャーをメジャー・フォルダに挿入します。 |
|
|
OLAPキューブ・ディメンションまたはキューブの定義を変更します。 |
|
|
メンバーをOLAPキューブ・ディメンションから削除するか、またはメジャーをメジャー・フォルダから削除します。 |
|
|
OLAPキューブまたはキューブ・ディメンションを表示または問い合せます。 |
|
|
OLAPキューブのメジャー値またはキューブ・ディメンションの属性値を更新します。 |
|
|
演算子権限 |
次の演算子権限は、ユーザー定義演算子の操作を許可します。 |
|
演算子の参照。 |
|
|
プロシージャ、ファンクション、パッケージ権限 |
次のプロシージャ、ファンクションおよびパッケージ権限は、プロシージャ、ファンクションおよびパッケージの操作を許可します。これらの権限は、Javaソース、クラスおよびリソースにも適用されます。Oracle Databaseでは、これらはオブジェクト権限の付与のために生成されたプロシージャとして扱われます。 |
|
オブジェクトに定義されたすべてのパブリック変数、非パブリック変数、メソッドおよび型へのデバッガを介したアクセス。 プロシージャ、ファンクションまたはパッケージ内の行または指示境界へのブレークポイントの設定、またはこれらの場所のいずれかでの停止。この権限は、メソッドまたはパッケージの仕様部および本体の宣言にアクセスする権限を付与します。 |
|
|
|
プロシージャかファンクションの直接実行、パッケージの仕様部に宣言された任意のプログラム・オブジェクトへのアクセス、または現在無効であるかコンパイルされていないファンクションかプロシージャへのコール中の暗黙的なオブジェクトのコンパイル。この権限を持っていても、 プロシージャ、ファンクションまたはパッケージに定義されたパブリック変数、型およびメソッドへのデバッガを介したアクセス。この権限は、メソッドまたはパッケージの仕様部のみの宣言にアクセスする権限を付与します。 ジョブ・スケジューラ・オブジェクトは、 注意: プロシージャ、ファンクションまたはパッケージを間接的に実行する場合、ユーザーはこの権限を持つ必要はありません。 |
|
スケジューラ権限 |
ジョブ・スケジューラ・オブジェクトは、 |
|
|
ジョブ・クラス、プログラム、チェーンおよび資格証明に対する操作。 |
|
|
ジョブ、プログラム、チェーン、資格証明およびスケジュールに対する変更。 |
|
順序権限 |
次の順序権限は、順序の操作を許可します。 |
|
|
|
|
権限受領者がアプリケーションを実行している場合、順序疑似列 この権限が要求の実行時およびフェイルオーバーの間に付与または取消しされると、その要求に対するアプリケーション・コンティニュイティのための再実行中に、 注意: この権限は、 注意: この権限はDBAロールの一部です。 |
|
|
|
|
|
次のSQL翻訳プロファイルの権限は、SQL翻訳プロファイルに対する操作を許可します。 |
|
|
SQL翻訳プロファイルのトランスレータ、カスタムSQL文の翻訳、またはカスタム・エラーの翻訳の変更。 |
|
|
SQL翻訳プロファイルの使用。 |
|
|
シノニム権限 |
シノニム権限は、対象となるオブジェクトに対して付与される権限と同じです。シノニムに権限を付与することは、基本オブジェクトに権限を付与することと同じです。同様に、基本オブジェクトに対して権限を付与することは、オブジェクトのすべてのシノニムに権限を付与することと同じです。あるユーザーにシノニムの権限を付与した場合、そのユーザーは、シノニム名または基本オブジェクト名をSQL文に指定して、その権限を使用できます。 |
|
表権限 |
次の表権限は、表の操作を許可します。 注意: 外部表に有効なオブジェクト権限は、 |
|
|
|
|
デバッガを介した次のものへのアクセス。
|
|
|
注意: 表がリモート・データベースにある場合は、 |
|
|
|
|
|
注意: 表がリモート・データベースにある場合は、 |
|
|
注意: この権限は、Oracle Database 12cリリース1(12.1.0.2)以上で使用できます。 |
|
|
表参照制約の作成。この権限はロールには付与できません。 |
|
|
|
|
|
注意: 表がリモート・データベースにある場合は、 |
|
|
ユーザー権限 |
次の権限はユーザーの操作を許可します。 |
|
実行者がこの権限を付与されたユーザーの場合、実行者の権限を持つ権限受領者が所有する実行者権限プロシージャの実行。 |
|
|
権限受領者のSQL翻訳プロファイルを使用して、この権限が付与されたユーザー用にSQLを変換。 |
|
|
ビュー権限 |
次のビュー権限は、ビューの操作を許可します。 ビューの権限を付与する場合、そのビューのすべての実表に関して |
|
デバッガを介した次のものへのアクセス。
|
|
|
|
|
|
|
|
|
このオブジェクト権限の動作は、権限がON |
|
|
注意: この権限は、Oracle Database 12cリリース1(12.1.0.2)以上で使用できます。 |
|
|
ビューへの外部キー制約の定義。 |
|
|
参照: ビューに対するこのオブジェクト権限の付与の詳細は、「object_privilege」を参照してください。 |
|
|
ビューのサブビューの作成。このビューの直属のスーパービューに |
|
|
|
例
ユーザーに対してシステム権限を付与する例: 次の文は、サンプル・ユーザーhrにCREATE SESSIONシステム権限を付与し、hrがOracle Databaseにログインできるようにします。
GRANT CREATE SESSION TO hr;
システム権限の付与時にユーザー・パスワードを割り当てる例: ユーザーhrは存在し、ユーザーnewuserは存在しないものとします。次の文は、ユーザーhrのパスワードをpassword1にリセットし、ユーザーnewuserをpassword2とともに作成し、両ユーザーにCREATE SESSIONシステム権限を付与します。
GRANT CREATE SESSION TO hr, newuser IDENTIFIED BY password1, password2;
ロールに対してシステム権限を付与する例: 次の文は、データ・ウェアハウス管理者ロール(「ロールの作成例:」で作成)に、適切なシステム権限を付与します。
GRANT
CREATE ANY MATERIALIZED VIEW
, ALTER ANY MATERIALIZED VIEW
, DROP ANY MATERIALIZED VIEW
, QUERY REWRITE
, GLOBAL QUERY REWRITE
TO dw_manager
WITH ADMIN OPTION;
dw_managerの権限ドメインには、マテリアライズド・ビューに関連するシステム権限が含まれます。
ADMIN OPTION付きロールを付与する例: 次の文は、サンプル・ユーザーshにADMIN OPTION付きのdw_managerロールを付与します。
GRANT dw_manager TO sh WITH ADMIN OPTION;
dw_managerロールによって、shは次の操作を実行できます。
ロールを使用可能にして、CREATE MATERIALIZED VIEWシステム権限を含むそのロールの権限ドメインに登録されている権限の使用
他のユーザーに対するそのロールの付与および取消し
ロールの削除
shスキーマ内のプログラム・ユニットのdw_managerロールを付与および取り消します。
DELEGATE OPTION付きロールを付与する例: 次の文は、サンプル・ユーザーshにDELEGATE OPTION付きのdw_managerロールを付与します。
GRANT dw_manager TO sh WITH DELEGATE OPTION;
ユーザーshは、shスキーマ内のプログラム・ユニットのdw_managerロールを付与および取り消すことができます。
ロールに対してオブジェクト権限を付与する例: 次の文は、データ・ウェアハウス・ユーザー・ロール(「ロールの作成例:」で作成)に、SELECTオブジェクト権限を付与します。
GRANT SELECT ON sh.sales TO warehouse_user;
ロールに対してロールを付与する例 次の文は、dw_managerロールにwarehouse_userロールを付与します。どちらのロールも、「ロールの作成例」で作成されたものです。
GRANT warehouse_user TO dw_manager;
dw_managerロールには、warehouse_userロールのドメインにあるすべての権限が含まれます。
ユーザーに対するオブジェクト権限の付与例: ユーザーshに対するINHERIT PRIVILEGESオブジェクト権限を、ユーザーhrに付与するには、次の文を発行します。
GRANT INHERIT PRIVILEGES ON USER sh TO hr;
ディレクトリへのオブジェクト権限を付与する例: 次の文は、ユーザーhrにディレクトリbfile_dirに対するREAD権限をGRANT OPTION付きで付与します。
GRANT READ ON DIRECTORY bfile_dir TO hr WITH GRANT OPTION;
ユーザーに対して表へのオブジェクト権限を付与する例: 次の文は、ユーザーhrに対して、oe.bonuses表(「表へのマージ例:」で作成)についてのすべての権限をGRANT OPTION付きで付与します。
GRANT ALL ON bonuses TO hr WITH GRANT OPTION;
この結果、hrユーザーは次の操作を実行できます。
bonuses表に対するすべての権限の使用
他のユーザーまたはロールに対する、bonuses表についての権限の付与
ビューへのオブジェクト権限を付与する例: 次の文は、ビューemp_view(「ビューの作成例:」で作成)についてのSELECT権限およびUPDATE権限をすべてのユーザーに付与します。
GRANT SELECT, UPDATE ON emp_view TO PUBLIC;
この結果、すべてのユーザーが、従業員の詳細についてのビューを問合せおよび更新できるようになります。
別のスキーマの順序に対してオブジェクト権限を付与する例: 次の文は、ユーザーhrに対して、スキーマoe内のcustomers_seq順序のSELECT権限を付与します。
GRANT SELECT ON oe.customers_seq TO hr;
ユーザーhrは、次の文を指定して、順序の次の値を作成できるようになります。
SELECT oe.customers_seq.NEXTVAL FROM DUAL;
別々の列に複数のオブジェクト権限を付与する例: 次の文は、ユーザーoeに、スキーマhrにあるemployees表のemployee_id列に対するREFERENCES権限、およびemployee_id、salary、commission_pct列に対するUPDATE権限を付与します。
GRANT REFERENCES (employee_id),
UPDATE (employee_id, salary, commission_pct)
ON hr.employees
TO oe;
この結果、ユーザーoeは、employee_id列、salary列およびcommission_pct列の値を更新できるようになります。ユーザーoeは、employee_id列を参照する参照整合性制約を定義することもできます。ただし、GRANT文にはこれらの列のみが指定されているため、ユーザーoeはemployees表の他の列を操作できません。
たとえば、oeは制約付きの表を作成できます。
CREATE TABLE dependent
(dependno NUMBER,
dependname VARCHAR2(10),
employee NUMBER
CONSTRAINT in_emp REFERENCES hr.employees(employee_id) );
スキーマhr内のemployees表の従業員に対応するdependent表の依存性が、制約in_empによって保証されます。