Oracleシステム権限の一覧と確認
システム権限とは、Oracleデータベースを操作するために必要な権限のことです。この記事では、システム権限の一覧と付与や確認の方法をご紹介します。
データベースリンク
データベース・リンクを操作するために必要なシステム権限の一覧を次に示す。
- ALTER DATABASE LINK
- SQL の ALTER DATABASE LINK 文でプライベート・データベース・リンクを変更できる。
- ALTER PUBLIC DATABASE LINK
- SQL の ALTER DATABASE LINK 文でパブリック・データベース・リンクを変更できる。
- CREATE DATABASE LINK
- SQL の CREATE DATABASE LINK 文でプライベート・データベース・リンクを作成できる。また、DROP DATABASE LINK 文でプライベート・データベース・リンクを削除できる。
- CREATE PUBLIC DATABASE LINK
- SQL の CREATE DATABASE LINK 文でパブリック・データベース・リンクを作成できる。
- DROP PUBLIC DATABASE LINK
- SQL の DROP DATABASE LINK 文でパブリック・データベース・リンクを削除できる。
データディクショナリ
データ・ディクショナリ・ビューを操作するために必要なシステム権限の一覧を次に示す。
- SELECT ANY DICTIONARY
- 名前が「DBA_」で始まるデータ・ディクショナリ・ビューを SQL の SELECT 文で問い合わせることができる。
ディレクトリ
ディレクトリを操作するために必要なシステム権限の一覧を次に示す。
- CREATE ANY DIRECTORY
- SQL の CREATE DIRECTORY 文でディレクトリ・データベース・オブジェクトを作成できる。
- DROP ANY DIRECTORY
- SQL の DROP DIRECTORY 文でディレクトリ・データベース・オブジェクトを削除できる。
索引
索引(インデックス)を操作するために必要なシステム権限の一覧を次に示す。
- ALTER ANY INDEX
- SQL の ALTER INDEX 文で任意のスキーマにある索引を変更できる。
- CREATE ANY INDEX
- SQL の CREATE INDEX 文で索引を任意のスキーマに作成できる。
- DROP ANY INDEX
- SQL の DROP INDEX 文で任意のスキーマから索引を削除できる。
マテリアライズドビュー
マテリアライズド・ビューを操作するために必要なシステム権限の一覧を次に示す。
- ALTER ANY MATERIALIZED VIEW
- SQL の ALTER MATERIALIZED VIEW で任意のスキーマにあるマテリアライズド・ビューを変更できる。
- CREATE ANY MATERIALIZED VIEW
- SQL の CREATE MATERIALIZED VIEW 文でマテリアライズド・ビューを任意のスキーマに作成できる。
- CREATE MATERIALIZED VIEW
- SQL の CREATE MATERIALIZED VIEW 文でマテリアライズド・ビューを自分のスキーマに作成できる。また、DROP MATERIALIZED VIEW 文で自分のスキーマからマテリアライズド・ビューを削除できる。
- DROP ANY MATERIALIZED VIEW
- SQL の DROP MATERIALIZED VIEW 文で任意のスキーマからマテリアライズド・ビューを削除できる。
プロシージャ等
ストアド・プロシージャ、ストアド・ファンクション及びストアド・パッケージを操作するために必要なシステム権限の一覧を次に示す。
- ALTER ANY PRODECURE
- 任意のスキーマのプロシージャ、ファンクションおよびパッケージを変更できる。
- CREATE ANY PRODECURE
- 任意のスキーマにプロシージャ、ファンクションおよびパッケージを作成できる。
- CREATE PRODECURE
- 自分のスキーマにプロシージャ、ファンクションおよびパッケージを作成できる。
- DROP ANY PRODECURE
- 任意のスキーマのプロシージャ、ファンクションおよびパッケージを削除できる。
ロール
ロールを操作するために必要なシステム権限の一覧を次に示す。
- ALTER ANY ROLE
- SQL の ALTER ROLE 文でロールを変更できる。
- CREATE ROLE
- SQL の CREATE ROLE 文でロールを作成できる。
- DROP ANY ROLE
- SQL の DROP ROLE 文でロールを削除できる。
- GRANT ANY ROLE
- SQL の GRANT 文で任意のロールを付与できる。
順序
順序(シーケンス)を操作するために必要なシステム権限の一覧を次に示す。
- ALTER ANY SEQUENCE
- SQL の ALTER SEQUENCE 文で任意のスキーマにある順序を変更できる。
- CREATE ANY SEQUENCE
- SQL の CREATE SEQUENCE 文で順序を任意のスキーマに作成できる。
- CREATE SEQUENCE
- SQL の CREATE SEQUENCE 文で順序を自分のスキーマに作成できる。また、DROP SEQUENCE 文で自分のスキーマから順序を削除できる。
- DROP ANY SEQUENCE
- SQL の DROP SEQUENCE 文で任意のスキーマから順序を削除できる。
- SELECT ANY SEQUENCE
- SQL の SELECT 文で任意のスキーマにある順序を問い合わせることができる。
セッション
セッションを操作するために必要なシステム権限の一覧を次に示す。
- ALTER SESSION
- SQL の ALTER SESSION 文でセッションを変更できる。
- CREATE SESSION
- SQL*Plus や SQL Developer でデータベースに接続できる。
表
表(テーブル)を操作するために必要なシステム権限の一覧を次に示す。
- ALTER ANY TABLE
- SQL の ALTER TABLE文で任意のスキーマにある表を変更できる。
- CREATE ANY TABLE
- SQL の CREATE TABLE 文で任意のスキーマに表を作成できる。
- CREATE TABLE
- SQL の CREATE TABLE 文で自分のスキーマに表を作成できる。また、DROP TABLE 文で自分のスキーマにある表を削除できる。
- DROP ANY TABLE
- SQL の DROP TABLE 文で任意のスキーマにある表を削除できる。
- UPDATE ANY TABLE
- SQL の UPDATE 文で任意のスキーマにある表を更新できる。
表領域
表領域を操作するために必要なシステム権限の一覧を次に示す。
- ALTER TABLESPACE
- SQL の ALTER TABLESPACE 文で表領域を変更できる。
- CREATE TABLESPACE
- SQL の CREATE TABLESPACE 文で表領域を作成できる。自分が作成したオブジェクトは、削除することもできる。
- DROP TABLESPACE
- SQL の DROP TABLESPACE 文で表領域を削除できる。
- UNLIMITED TABLESPACE
- 表領域を無制限に使用できる。ユーザに付与できるが、ロールには付与できない。
トリガー
トリガーを操作するために必要なシステム権限の一覧を次に示す。
- ALTER TRIGGER
- トリガーを変更できる。
- CREATE TRIGGER
- トリガーを作成できる。自分が作成したオブジェクトは、削除することもできる。
- DROP TRIGGER
- トリガーを削除できる。
ユーザー
ユーザーを操作するために必要なシステム権限の一覧を次に示す。
- ALTER USER
- ユーザーを変更できる。
- CREATE USER
- ユーザーを作成できる。自分が作成したオブジェクトは、削除することもできる。
- DROP USER
- ユーザーを削除できる。
ビュー
ビューを操作するために必要なシステム権限の一覧を次に示す。
- CREATE ANY VIEW
- SQL の CREATE VIEW 文で任意のスキーマにビューを作成できる。
- CREATE VIEW
- SQL の CREATE VIEW 文で自分のスキーマにビューを作成できる。また、DROP VIEW 文で自分のスキーマにあるビューを削除できる。
- DROP ANY VIEW
- SQL の DROP VIEW 文で任意のスキーマにあるビューを削除できる。
廃止されたシステム権限
オラクルの過去リリースにおいて存在したシステム権限で、現在では廃止されたものもある。これらについては、互換性を確保するために、同名のロールが用意されている。
これらのロールに付与されたシステム権限は、DBA_SYS_PRIVSデータディクショナリビューを問い合わせることによって調べることができる。
システム権限に関するSQL
システム権限に関するSQL文の一覧を次に示す。
- GRANT
- ユーザやロールにシステム権限を付与する。
- REVOKE
- ユーザやロールからシステム権限を剥奪する。
システム権限に関するデータディクショナリビュー
システム権限に関するデータ・ディクショナリ・ビューの一覧を次に示す。
- DBA_SYS_PRIVS
- ユーザおよびロールに付与されたシステム権限
- USER_SYS_PRIVS
- ユーザに付与されたシステム権限
DBA_SYS_PRIVS
DBA_SYS_PRIVS はユーザ及びロールに付与されたシステム権限を示すデータ・ディクショナリ・ビューである。
DBA_SYS_PRIVS
列 |
データ型 |
NULL |
説明 |
GRANTEE |
VARCHAR2(30) |
NOT NULL |
権限を付与されたユーザー又はロール |
PRIVILEGE |
VARCHAR2(40) |
NOT NULL |
システム権限 |
ADMIN_OPTION |
VARCHAR2(3) |
|
ADMIN OPTION付きで付与されたかどうか |
ADMIN_OPTION
システム権限が ADMIN OPTION 付きで付与されたかどうかを示す。ADMIN OPTION 付きで与えられたシステム権限は、他のユーザへ付与することができる。
- YES
- システム権限が ADMIN OPTION 付きで付与された。
- NO
- システム権限が ADMIN OPTION 無しで付与された。
ADMIN OPTION 付きで付与されたシステム権限を確認する。
SQL> SELECT * FROM DBA_SYS_PRIVS WHERE ADMIN_OPTION = 'YES';
USER_SYS_PRIVS
USER_SYS_PRIVS は現在のユーザに付与されたシステム権限を示すデータ・ディクショナリ・ビューである。
USER_SYS_PRIVS
列 |
データ型 |
NULL |
説明 |
USERNAME |
VARCHAR2(128) |
|
ユーザー名または PUBLIC |
PRIVILEGE |
VARCHAR2(40) |
|
システム権限 |
ADMIN_OPTION |
VARCHAR2(3) |
|
ADMIN OPTION付きで付与されたかどうか |
COMMON |
VARCHAR2(3) |
|
権限がどのように付与されたか |
現在のユーザに付与されたシステム権限を確認する。
SQL> SELECT * FROM USER_SYS_PRIVS;
個別のユーザに付与されたシステム権限を確認する。
SQL> SELECT * FROM USER_SYS_PRIVS WHERE USERNAME = 'TSUKA';
PUBLIC に付与されたシステム権限を確認する。
SQL> SELECT * FROM USER_SYS_PRIVS WHERE USERNAME = 'PUBLIC';
ADMIN_OPTION
システム権限が ADMIN OPTION 付きで付与されたかどうかを示す。ADMIN OPTION 付きで与えられたシステム権限は、他のユーザへ付与することができる。
- YES
- システム権限が ADMIN OPTION 付きで付与された。
- NO
- システム権限が ADMIN OPTION 無しで付与された。
ADMIN OPTION 付きで付与されたシステム権限を確認する。
SQL> SELECT * FROM USER_SYS_PRIVS WHERE ADMIN_OPTION = 'YES';
COMMON
権限がどのように付与されたかを示す。
- YES
- 権限が共通して付与された。
- NO
- 権限がローカルで付与された。