Oracleシステム権限の一覧と確認

システム権限とは、Oracleデータベースを操作するために必要な権限のことです。この記事では、システム権限の一覧と付与や確認の方法をご紹介します。

データベースリンク

データベース・リンクを操作するために必要なシステム権限の一覧を次に示す。

ALTER DATABASE LINK
SQLALTER 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_」で始まるデータ・ディクショナリ・ビューを SQLSELECT 文で問い合わせることができる。

ディレクトリ

ディレクトリを操作するために必要なシステム権限の一覧を次に示す。

CREATE ANY DIRECTORY
SQLCREATE 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
SQLALTER 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
SQLALTER SESSION 文でセッションを変更できる。
CREATE SESSION
SQL*PlusSQL Developer でデータベースに接続できる。

表(テーブル)を操作するために必要なシステム権限の一覧を次に示す。

ALTER ANY TABLE
SQLALTER 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
SQLALTER 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
SQLCREATE 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
権限がローカルで付与された。