Oracleの表領域と権限を徹底解説
テーブルスペース
表領域はデータベースの論理的な区分であり、1つの表領域は1つのデータベースのみに所属することができます。すべてのデータベースオブジェクトは、指定された表領域に格納されます。しかし、主に格納されるのはテーブルなので、テーブルスペースと呼ばれる。
Oracle の多くの最適化は表領域設計の概念に基づいており、データベースは複数の表領域を含むことができ、表領域は 1 つのデータベースのみに所属することができます。表領域は複数のデータファイルを含み、データファイルは1つの表領域にのみ属することができます。
Oracle データベースは、SYSTEM 表領域という 1 つの表領域を保持しています。
テーブルスペースの代表的な用途
-
ユーザーが占有するテーブルスペースのクォータを制御する
- 別の表領域を作成し、その最大記憶容量を設定し、その表領域にユーザーを割り当てる。この方法では、ユーザーの記憶容量はその表領域のサイズによって制限されます。
- データベースが占有するディスクスペースの制御
-
テーブルスペースを柔軟に配置し、データベースの入出力性能を向上させることができます。
- 湖南省に関連するデータファイルは湖南省のこの表領域に配置するなど、異なる種類のデータを異なる表領域に配置することが可能です。例えば、湖南省に関連するデータファイルは湖南省のこのテーブルスペースに配置され、北京に関連するデータファイルは北京のこのテーブルスペースに配置されます。
-
大きなテーブルのソート操作
-
このように容量の大きなテーブルオブジェクトについては、データベースのパフォーマンスを向上させるために、別のテーブルスペースに配置されることが多い。
-
このように容量の大きなテーブルオブジェクトについては、データベースのパフォーマンスを向上させるために、別のテーブルスペースに配置されることが多い。
デフォルトのテーブルスペース
システムでデフォルトで作成されるいくつかのテーブルスペース
-
システム
- すべてのディクショナリ・オブジェクトはSYSTEM表空間の内部に存在し、そこにはSYSユーザーの表、ビュー、およびストアド・プロシージャ・オブジェクトが存在します。
-
SYSAUX
- SYSTEM表空間のセカンダリ表空間として動作し、SYSTEM表空間の負荷を軽減します。
-
ユーザー
- ユーザーが作成したデータベースオブジェクトを格納する
-
UNDOTBS
- アンドゥ情報が格納されるアンドゥ表領域。
-
例
- データベースの例で使用するテーブルスペース
-
テンポ
-
テンポラリーテーブルスペースは、データベース内のソート、インデックス管理、ビューへのアクセスなどの操作を行うための一時的なスペースです。
-
テンポラリーテーブルスペースは、データベース内のソート、インデックス管理、ビューへのアクセスなどの操作を行うための一時的なスペースです。
テーブルスペースクエリーコマンド
すべてのテーブルスペースを問い合わせる
select * from V$tablespace
テーブルスペースのデータファイルの表示
select file_name,tablespace_name from dba_data_files
ユーザーのデフォルト・テーブルスペースの表示
select default_tablespace,temporary_tablespace from dba_users where username='username';
指定されたテーブルスペースにどのようなテーブルがあるのかを確認する
select table_name,tablespace_name from dba_tables where tablespace_name='tablespace_name'
テーブルスペースの作成
create tablespace test_data datafile 'test_data.dbf' size 32M autoextend on next 32M maxsize 2048M extent management local
一時的なテーブルスペースの作成
create temporary tablespcae test_temp tempfile 'test_temp.dbf' size 32M autoextend on next 32M maxsize 2048M extent management local
テーブルスペースの削除
drop tablespace tablespace name including contents and datafiles
ユーザにテーブルスペースを与える
create user username identified by password default tablespace default tablespace temporary tablespace temporary tablespace
ユーザーとテーブルスペースの関係
1人のユーザーが1つ以上の表領域を使用することができ、1つの表領域を複数のユーザーが使用することができます。
表領域は物理的なデータファイルとの関係のみであり、表領域は複数のデータファイルを含むことができ、データファイルは1つの表領域にのみ属することができます。
ユーザーのデフォルトの表領域を表示する
select username,deafult_tablespace from dba_users where username='username'
現在のユーザーが所有するテーブルを表示する
select table_name from user_tables
パーミッションカテゴリ
1. システムパーミッション
ユーザーがデータベースを利用するための権限をシステムで指定します。(システムの権限はユーザーに対するものです)。システム権限は、DBAユーザーによってのみ付与されます
この2つのユーザー(sys、system)から始まります。
2. オブジェクトのパーミッション
テーブルまたはビューのアクセス権の他のユーザーへの何らかの許可ユーザー。(これはテーブルまたはビューのためのものです)
システムパーミッション
テーブルの作成、インデックスの作成、インスタンスへの接続など、ユーザーが特定のデータベース操作を実行できるようにします。
- dba ロール:すべての権限を持ち、システム上で最も高い権限を持ちます。
- リソースロール。リソース権限を持つユーザーは、データベース・オブジェクトにのみアクセスすることができます。
- 接続する役割。接続権限を持つユーザーはOracleへのログインのみ可能で、データベースオブジェクトにはアクセスできない
注:上記はすべてロールであり、個別の権限ではなく、権限の集合体です。
すべてのシステムパーミッションを表示する
SELECT * FROM SYSTEM_PRIVILEGE_MAP
システムパーミッション
ビューの読み込み、特定のカラムの更新、ストアドプロシージャの実行など、特定のオブジェクトを操作することを許可する。
select, update, insert, alter, index, delete, all ...... //all includes all permissions
execute //execute procedure privilege
ユーザーを認証する
システムパーミッション
grant system privileges to username [WITH ADMIN OPTION]
grant connect, resource to username;
オブジェクトのアクセス権
grant object privileges on object to user [WITH GRANT OPTION]
grant select, update, insert on product to user;
grant all on product to user name; // all means all object permissions
grant all on product to user name; // public means all users
ユーザー権限の取り消し
システム権限の取り消し
revoke system privileges from user;
revoke resource from username;
オブジェクトのパーミッションの取り消し
revoke object permissions on object from user
revoke select, update on product from user
役割
ロールとは、パーミッションの管理を容易にするための権限のセットで、各ロールは、ある特定の管理タスクを実行するために使用されます。
- ロールの作成/ロールの削除
create role role name / drop role role name
- ロールに権限を与える
システム権限:ロールにシステム権限を付与する
オブジェクトの権限:オブジェクトの権限をロールに付与する
- ロールパーミッションの取り消し
ロールからシステムパーミッションを剥奪する
ロールからオブジェクトのパーミッションを取り消す
表示権限
現在のユーザーに対するすべてのシステムパーミッションを表示する
select * from user_sys_privs
現在のユーザが所属するロールを表示します。
select * from user_role_privs
ロールはどのようなシステム権限を持っていますか
select * from role_sys_privs
ロールが持っているオブジェクトの権限(sysユーザーの下)
select * from role_tab_privs
ユーザーが持っているオブジェクトのパーミッションについて
select * from user_tab_privs
概要
Oracleの表領域と権限に関する記事はこちらです。Oracleの表領域と権限に関する詳しい情報は、スクリプトハウスの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
-
OracleインストールTNS_ADMIN環境変数設定リファレンス
-
Oracle Sqlplusコマンドログイン複数方法ケーススタディ
-
Oracle11gアンインストール完全版グラフィックチュートリアル
-
LogMinerによるOracle Databaseの同期マイグレーション
-
ORACLE 当座預金に関する情報を見る
-
plsqlを使用してリモートOracleデータベースに接続する複数の方法
-
Oracleトレースファイルの詳細な使用方法
-
[解決済み] ORA-01109: データベースが開きません」エラーを解決するにはどうすればよいですか?
-
[解決済み] このPL/SQLは何が問題なのでしょうか?バインド変数 * が DECLARED ではありません。
-
[解決済み] ORA-01747:user.table.column, table.column, または column の指定が無効です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Oracle19c テーブルスペースの作成における落とし穴
-
Navicat PremiumツールでOracleデータベースをMySQLに移行する
-
オラクル・ラックのケーススタディ
-
[解決済み] エラー ORA-01804 のテキストを取得しようとしているときにエラーが発生しました。
-
[解決済み] エラー: ORA-01704: 文字列リテラルが長すぎる
-
[解決済み] libclntsh.so.11.1: 共有オブジェクト・ファイルを開くことができません。
-
[解決済み] ORA-04063: パッケージ本体 "WB_PROD.PLOG" にエラーがあります。
-
[解決済み] BATCHEDのインデックスによるテーブルアクセスとROWIDのインデックスによるテーブルアクセスの違い
-
[解決済み] 外部キーの追加エラー。ORA-02298: 検証できません - 親キーが見つかりませんでした
-
[解決済み] ORA-01460: 未実装または不当な変換が要求されました。