0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DB(ORACLE)についてのtips

Last updated at Posted at 2020-03-28

#DB(ORACLE)についての権限の参照など

##対象の人
・未経験でSE、PGになって1~2年目のかた
・現場でDMLしか書いたことがない方
・ORACLE以外のDBしか触ったことのないかた
 
##権限について
DBにはユーザーごとに権限が設定されている。
権限が付与されていることしか実行できない。
すべての権限が付与されている「SYS」ユーザーを乱用してしまうと、
様々な人が参照できてしまうため、情報漏洩につながってしまう可能性がある。
そのため、ユーザーをそれぞれ機能やシステムごとに作成し、必要な権限のみ付与するようにする。

##権限の種類

###主要なシステム権限

システム権限名 権限により許可される操作
 ALTER DATABASE  データベースの変更
CREATE TABLE 自分のスキーマ内でのテーブルの作成
CREATE ANY TABLE 任意のスキーマ内でのテーブルの作成
ALTER ANY TABLE 任意のスキーマ内のテーブルまたはビューの変更
DROP ANY TABLE 任意のスキーマ内ののテーブルまたは表パーティションの削除または切り捨て
SELECT ANY TABLE 任意のスキーマ内のテーブル、ビューまたはマテリアライズド・ビューの問い合わせ
CREATE ANY INDEX 任意のスキーマ内のテーブルに対する索引の作成
ALTER ANY INDEX 任意のスキーマの索引の変更
DROP ANY INDEX 任意のスキーマの索引の削除
CREATE USER ユーザーの作成
ALTER USER ユーザーの変更
DROP USER ユーザーの削除
CREATE SESSION データベースへの接続

主要なオブジェクト権限

オブジェクト オブジェクト権限名 権限により許可される操作
テーブル SELECT 該当テーブルへ問い合わせ(SELECT文)
テーブル UPDATE 該当テーブルのデータ変更(UPDATE文)
テーブル INSERT 該当テーブルへの新しい行の追加(INSERT文)
テーブル DELETE 該当テーブルの行の削除
テーブル ALTER 該当テーブルの定義の変更
ビュー SELECT 該当テーブルへ問い合わせ(SELECT文)
ビュー UPDATE 該当テーブルのデータ変更(UPDATE文)
ビュー INSERT 該当テーブルへの新しい行の追加(INSERT文)
ビュー DELETE 該当テーブルの行の削除

###権限を付与する/取り消す GRANT文/REVOKE文

GRANT <権限> TO <USER名>;
REVOKE <権限> FROM <USER名>;

###他ユーザーのテーブルついて
ユーザーごとに作成したテーブルにアクセスできるのは、基本的にそのユーザーだけである。
ほかのユーザーから参照する場合は、そのユーザーに対しての権限の付与が必要である。
権限がある場合、は対象のスキーマ≒スキーマ(厳密には違う)をDMLのテーブル名の前につけることにより参照することができる。

SELECT * FROM <スキーマ名>.<テーブル名>

##ビューとマテリアライズドビューについて

###ビュー
ビューとはあらかじめ複雑なSELECT文をビューとして定義しておき、
参照を簡単にするもの。
たとえば、
・サブクエリが何重にも必要になってしまう
・参照するテーブルが多い
などの場合に用いる。

CREATE VIEW <ビュー名> AS <実表へのSELECT文>

###マテリアライズドビューについて
ビューの内容を一回一回検索するのではなく、保存しておくことにより
複雑なものでも高速で検索することができる。
データに変更が出た場合は更新(リフレッシュ)が必要になるが、
その場合もデータに変更がでている個所のみを更新できるため、高速での処理が可能。
下記のは一例なので、詳細は以下のページを参照
CREATE MATERIALIZED VIEW

CREATE MATERIALIZED VIEW <マテビューの名前>
REFRESH <リフレッシュ方法> 
AS <SELECT文>

####リフレッシュ方法について
リフレッシュ方法には何種類かある。

更新方法 別名 説明
complete 完全リフレッシュ 保持していたデータを全削除し、再検索したSQLの結果を保持する
fast 高速リフレッシュ 前回リフレッシュ時点から更新のあった箇所のみを再検索する
force デフォルト 高速リフレッシュが実行できるSQLであれば高速リフレッシュを実行し、不可能であれば完全リフレッシュを実行する

fastにするためには、マテリアライズドビューログの作成が必要

CREATE MATERIALIZED VIEW LOG ON <マテビューの名前>
WITH SEQUENCE, ROWID
(<集計テーブルのPK>, <集計テーブルのPK>・・・)
INCLUDING NEW VALUES;

###ビューおよびマテビューの参照
テーブルと同様にSELECTすれば参照可能

SELECT * FROM <ビューの名前>
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?