オブジェクトを作成、変更または破棄する権限の概要
データベース・オブジェクトの作成、変更または破棄に必要な権限があります。
データベース・オブジェクトを作成する権限
表、ビュー、マテリアライズド・ビュー、順序、PL/SQLプロシージャ、PL/SQLファンクション、PL/SQLパッケージ、シノニムなどのデータベース・オブジェクトを作成するには、適切なCREATE object_typeまたはCREATE ANY object_type権限が必要です。
次に、CREATE権限およびCREATE ANY権限について説明します。
-
CREATEobject_type権限は、ユーザー自身のスキーマ内でのみ、指定したタイプ(TABLEなど)のオブジェクトを作成する機能を付与します。作成後、ユーザーはオブジェクトを所有し、そのオブジェクトに対するすべての権限を持ちます。 -
CREATE ANYobject_type権限は、データベースの任意のスキーマでそのタイプのオブジェクトを作成する機能をユーザーに付与します。CREATE ANYobject_type権限には、CREATE ANY TABLE、CREATE ANY INDEX、CREATE ANY VIEW、CREATE ANY MATERIALIZED VIEW、CREATE ANY SEQUENCE、CREATE ANY SYNONYMおよびCREATE ANY PROCEDUREがあります。
次の例のように、ユーザーが自分のスキーマに表を作成するにはCREATE TABLE権限を付与されている必要があります。
Command> GRANT CREATE TABLE TO terry;
次の例では、ユーザーterryに任意のスキーマで任意の表を作成する権限を付与します。
Command> GRANT CREATE ANY TABLE TO terry;
ノート:
-
「ビューのオブジェクト権限」および「マテリアライズド・ビューのオブジェクト権限」を参照してください。
-
CREATE OR REPLACEの結果としてオブジェクト(プロシージャ、ファンクション、パッケージ、シノニムなど)が置き換えられても、そのオブジェクトに対してユーザーに付与されていた権限には影響ありません。このこととは対照的に、明示的にDROPを実行してからCREATEを実行してオブジェクトを再作成した場合、そのオブジェクトに対するすべての権限が取り消されます。
データベース・オブジェクトを変更する権限
ALTER ANY object_type権限は、自分が所有していないオブジェクトのプロパティを変更する場合に必要です。
たとえば、プロシージャproc1がhrスキーマに作成され、patにALTER ANY PROCEDURE権限が付与されている場合、patはプロシージャhr.proc1を変更できます。
ALTER権限は、個々のオブジェクトに対しては付与できません。かわりに、必要なオブジェクト・タイプに対するALTER ANY権限を付与する必要があります。