| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Oracle Database10g 表領域の管理」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
==Oracle Database10g 表領域の管理==
+
==[[Oracle Database10g 表領域の管理]]==
 
[[Oracle]] | [[Oracle Database10g]] |  
 
[[Oracle]] | [[Oracle Database10g]] |  
  
11行目: 11行目:
  
 
====SYSAUX 表領域====
 
====SYSAUX 表領域====
SYSTEM 表領域の補助表領域として機能し、データベース作成時に常に作成されます。 この補助表領域には、様々なOracle 製品および機能で使用される情報とスキーマが格納される。
+
SYSTEM 表領域の補助表領域として機能し、データベース作成時に常に作成されます。 この補助表領域には、様々な[[Oracle]] 製品および機能で使用される情報とスキーマが格納される。
 
===表領域情報を確認===
 
===表領域情報を確認===
 
====DBA_TABLESPACE====
 
====DBA_TABLESPACE====
20行目: 20行目:
 
====表領域を作成する手順====
 
====表領域を作成する手順====
 
*オペレーティング・システムによって異なりますが、必ず最初に、オペレーティング・システムを使用して、データ・ファイルが割り当てられるディレクトリ構造を作成する必要があります。
 
*オペレーティング・システムによって異なりますが、必ず最初に、オペレーティング・システムを使用して、データ・ファイルが割り当てられるディレクトリ構造を作成する必要があります。
*新しい表領域を作成するには、SQL 文CREATE TABLESPACE またはCREATE TEMPORARY TABLESPACE を使用
+
*新しい表領域を作成するには、[[SQL]] 文CREATE TABLESPACE またはCREATE TEMPORARY TABLESPACE を使用
*表領域を作成するには、CREATE TABLESPACE システム権限が必要
+
*表領域を作成するには、C[[R]]EATE TABLESPACE システム権限が必要
*後で、ALTER TABLESPACE またはALTER DATABASE 文を使用して、この表領域を変更できます
+
*後で、ALTE[[R]] TABLESPACE またはALTE[[R]] DATABASE 文を使用して、この表領域を変更できます
*そのためには、ALTER TABLESPACE またはALTER DATABASE システム権限が必要
+
*そのためには、ALTE[[R]] TABLESPACE またはALTE[[R]] DATABASE システム権限が必要
  
 
====表領域の管理====
 
====表領域の管理====
49行目: 49行目:
  
 
====表領域を作成する====
 
====表領域を作成する====
=====CREATE TABLESPACE権限を持っているか確認=====
+
=====C[[R]]EATE TABLESPACE権限を持っているか確認=====
  
  SQL> select * from session_privs
+
  [[SQL]]> select * from session_privs
   2  where privilege = 'CREATE TABLESPACE'
+
   2  where pri[[vi]]lege = 'CREATE TABLESPACE'
 
   3  /
 
   3  /
 
   
 
   
  PRIVILEGE
+
  P[[R]]IVILEGE
 
  ---------------------------------------------
 
  ---------------------------------------------
  CREATE TABLESPACE
+
  C[[R]]EATE TABLESPACE
  
 
=====既存表領域のデータファイルの場所を確認しておく=====
 
=====既存表領域のデータファイルの場所を確認しておく=====
  SQL> select file_name from dba_data_files;
+
  [[SQL]]> select file_name from dba_data_files;
 
   
 
   
 
  FILE_NAME
 
  FILE_NAME
87行目: 87行目:
 
|-
 
|-
 
|EXTENT MANAGEMENT
 
|EXTENT MANAGEMENT
|LOCAL:ビットマップ用に表領域の一部を確保。永続表領域のデフォルト、DICTIONARY:ディクショナリ表を使用して表領域を管理
+
|LOCAL:ビットマップ用に表領域の一部を確保。永続表領域のデフォルト、DICTIONA[[R]]Y:ディクショナリ表を使用して表領域を管理
 
|-
 
|-
 
|SEGMENT SPACE MANAGEMENT
 
|SEGMENT SPACE MANAGEMENT
94行目: 94行目:
 
|}
 
|}
  
  SQL> create smallfile tablespace "EXAM_DAT"
+
  [[SQL]]> create smallfile tablespace "EXAM_DAT"
 
   2  datafile '/opt/oracle/app/oradata/oradb1/exam01.dbf'
 
   2  datafile '/opt/oracle/app/oradata/oradb1/exam01.dbf'
 
   3  size 20m autoextend  on
 
   3  size 20m autoextend  on
105行目: 105行目:
  
 
=====ユーザのデフォルトテーブルスペースを変更し、クオータを変更=====
 
=====ユーザのデフォルトテーブルスペースを変更し、クオータを変更=====
  SQL> alter user exam default tablespace exam_dat;
+
  [[SQL]]> alter user exam default tablespace exam_dat;
 
   
 
   
 
  ユーザーが変更されました。
 
  ユーザーが変更されました。
 
   
 
   
  SQL> alter user exam quota unlimited on exam_dat;
+
  [[SQL]]> alter user exam quota unlimited on exam_dat;
 
   
 
   
 
  ユーザーが変更されました。
 
  ユーザーが変更されました。
117行目: 117行目:
 
=====次のような場合にオフライン化=====
 
=====次のような場合にオフライン化=====
 
*データベースの一部のみを使用できないようにし、残りの部分には正常にアクセスできるようにする
 
*データベースの一部のみを使用できないようにし、残りの部分には正常にアクセスできるようにする
*オフライン表領域のバックアップを実行する(ただし、表領域はオンラインで使用中の場合でもバックアップは可能)
+
*オフライン表領域の[[バックアップ]]を実行する(ただし、表領域はオンラインで使用中の場合でも[[バックアップ]]は可能)
 
*アプリケーションの更新時またはメンテナンス時に、アプリケーションとその表のグループを一時的に使用できないようにする
 
*アプリケーションの更新時またはメンテナンス時に、アプリケーションとその表のグループを一時的に使用できないようにする
 
*表領域のデータ・ファイルを名前変更または再配置する
 
*表領域のデータ・ファイルを名前変更または再配置する
131行目: 131行目:
 
!内容
 
!内容
 
|-
 
|-
|NORMAL
+
|NO[[R]]MAL
 
|表領域のデータ・ファイルすべてのチェックポイントを取ってからオフライン化。デフォルト。  
 
|表領域のデータ・ファイルすべてのチェックポイントを取ってからオフライン化。デフォルト。  
 
|-
 
|-
|TEMPORARY
+
|TEMPO[[R]]A[[R]]Y
 
|データ・ファイルについてエラー条件が存在している場合でも、表領域を一時的にオフライン化できる。まだオフライン化されていないデータ・ファイルのチェックポイントを取ってから、オフライン化します。
 
|データ・ファイルについてエラー条件が存在している場合でも、表領域を一時的にオフライン化できる。まだオフライン化されていないデータ・ファイルのチェックポイントを取ってから、オフライン化します。
 
|-
 
|-
 
|IMMEDIATE
 
|IMMEDIATE
|即時にオフライン化。データ・ファイルのチェックポイントを取りません。表領域をオンライン化する前に表領域のメディア・リカバリが必要。NOARCHIVELOGモードで運用している場合は、表領域を即時にオフライン化することはできない。
+
|即時にオフライン化。データ・ファイルのチェックポイントを取りません。表領域をオンライン化する前に表領域のメディア・リカバリが必要。NOA[[R]]CHIVELOGモードで運用している場合は、表領域を即時にオフライン化することはできない。
 
|-
 
|-
 
|}
 
|}
  
  SQL> alter tablespace exam_dat offline normal;
+
  [[SQL]]> alter tablespace exam_dat offline normal;
 
   
 
   
 
  表領域が変更されました。
 
  表領域が変更されました。
  
 
=====オフラインの表にアクセス=====
 
=====オフラインの表にアクセス=====
  SQL> select * from test;
+
  [[SQL]]> select * from test;
 
  select * from test
 
  select * from test
 
               *  
 
               *  
 
  行1でエラーが発生しました。:
 
  行1でエラーが発生しました。:
  ORA-00376: file 6 cannot be read at this time
+
  O[[R]]A-00376: file 6 cannot be read at this time
  ORA-01110: data file 6: '/opt/oracle/app/oradata/oradb1/exam01.dbf'
+
  O[[R]]A-01110: data file 6: '/opt/oracle/app/oradata/oradb1/exam01.dbf'
  
 
=====オンラインに戻す=====
 
=====オンラインに戻す=====
  SQL> alter tablespace exam_dat online;
+
  [[SQL]]> alter tablespace exam_dat online;
 
   
 
   
 
  表領域が変更されました。
 
  表領域が変更されました。
164行目: 164行目:
  
 
=====読み取り専用にする=====
 
=====読み取り専用にする=====
  SQL> alter tablespace exam_dat read only;  
+
  [[SQL]]> alter tablespace exam_dat read only;  
 
   
 
   
 
  表領域が変更されました。
 
  表領域が変更されました。
170行目: 170行目:
 
=====更新してみる=====
 
=====更新してみる=====
 
*参照はできるが、更新はエラー
 
*参照はできるが、更新はエラー
  SQL> select * from test;
+
  [[SQL]]> select * from test;
 
   
 
   
 
         ID NAME
 
         ID NAME
176行目: 176行目:
 
           1 abc
 
           1 abc
 
   
 
   
  SQL> update test set name = 'def' where id = 1;
+
  [[SQL]]> update test set name = 'def' where id = 1;
 
  update test set name = 'def' where id = 1
 
  update test set name = 'def' where id = 1
 
         *
 
         *
 
  行1でエラーが発生しました。:
 
  行1でエラーが発生しました。:
  ORA-00372: file 6 cannot be modified at this time
+
  O[[R]]A-00372: file 6 cannot be modified at this time
  ORA-01110: data file 6: '/opt/oracle/app/oradata/oradb1/exam01.dbf'
+
  O[[R]]A-01110: data file 6: '/opt/oracle/app/oradata/oradb1/exam01.dbf'
  
 
=====元戻す=====
 
=====元戻す=====
  SQL> alter tablespace exam_dat read write;
+
  [[SQL]]> alter tablespace exam_dat read write;
 
   
 
   
 
  表領域が変更されました。
 
  表領域が変更されました。
 
----
 
----
{{include_html banner_html, "!Oracle"}}
+
{{include_html [[banner_html]], "!Oracle"}}

2020年2月16日 (日) 04:30時点における最新版

Oracle Database10g 表領域の管理

Oracle | Oracle Database10g |

http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19224-02/tspaces.htm#691776

表領域の作成

どのデータベースでも、重要な表領域はSYSTEM 表領域です。この表領域には、データ・ディクショナリやシステム・ロールバック・セグメントなど、データベース・サーバー機能の基本となる情報が格納されます。

SYSTEM 表領域

データベース作成時に最初に作成される表領域です。 他の表領域と同様に管理されますが、より高いレベルの権限が必要で、一部の機能は制限されます。 たとえば、SYSTEM 表領域の名前変更、削除、オフライン化は実行できません。

SYSAUX 表領域

SYSTEM 表領域の補助表領域として機能し、データベース作成時に常に作成されます。 この補助表領域には、様々なOracle 製品および機能で使用される情報とスキーマが格納される。

表領域情報を確認

DBA_TABLESPACE

select * from dba_tablespaces

0941 dba tblspcs.jpg

表領域を作成する手順

  • オペレーティング・システムによって異なりますが、必ず最初に、オペレーティング・システムを使用して、データ・ファイルが割り当てられるディレクトリ構造を作成する必要があります。
  • 新しい表領域を作成するには、SQL 文CREATE TABLESPACE またはCREATE TEMPORARY TABLESPACE を使用
  • 表領域を作成するには、CREATE TABLESPACE システム権限が必要
  • 後で、ALTER TABLESPACE またはALTER DATABASE 文を使用して、この表領域を変更できます
  • そのためには、ALTER TABLESPACE またはALTER DATABASE システム権限が必要

表領域の管理

種類 内容
ローカル管理表領域 表領域内のすべてのエクステント情報がビットマップを使用して追跡される。
大型ファイル表領域 単一で非常に大きい(最大40 億ブロック)データ・ファイルを持つ表領域
ディクショナリ管理表領域 ディクショナリ管理表領域では、エクステントが割り当てられるか、再利用できるように解放されるたびに、データベースによってデータ・ディクショナリ内の適切な表が更新
一時表領域 一時表領域には、セッションの間のみ存続する一時データが格納されます
複数の一時表領域: 表領域グループの使用 ユーザーは、一時表領域グループを使用して複数の表領域から一時領域を消費できます

表領域を作成する

CREATE TABLESPACE権限を持っているか確認
SQL> select * from session_privs
  2  where privilege = 'CREATE TABLESPACE'
  3  /

PRIVILEGE
---------------------------------------------
CREATE TABLESPACE
既存表領域のデータファイルの場所を確認しておく
SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------
/opt/oracle/app/oradata/oradb1/users01.dbf
/opt/oracle/app/oradata/oradb1/sysaux01.dbf
/opt/oracle/app/oradata/oradb1/undotbs01.dbf
/opt/oracle/app/oradata/oradb1/system01.dbf
/opt/oracle/app/oradata/oradb1/example01.dbf

テーブルスペースの作成
パラメータ 内容
SMALLFILE 表領域がbigfileかsmallfileかを指定
TEMPFILE 永続表領域を構成するデータ・ファイルを指定するか、または一時表領域を構成する一時ファイルを指定
NOLOGGING ロギング属性を指定します。デフォルトはLOGGINGです。一時表領域またはUNDO表領域では無効
EXTENT MANAGEMENT LOCAL:ビットマップ用に表領域の一部を確保。永続表領域のデフォルト、DICTIONARY:ディクショナリ表を使用して表領域を管理
SEGMENT SPACE MANAGEMENT AUTO:ビットマップを使用して表領域のセグメントにある空き領域を管理、MANUAL:空きリストを使用して表領域のセグメントにある空き領域を管理できます。この設定は使用しないことを強くお薦め
SQL> create smallfile tablespace "EXAM_DAT"
  2   datafile '/opt/oracle/app/oradata/oradb1/exam01.dbf'
  3   size 20m autoextend  on
  4   logging
  5   extent management local
  6   segment space management auto
  7  /

表領域が作成されました。
ユーザのデフォルトテーブルスペースを変更し、クオータを変更
SQL> alter user exam default tablespace exam_dat;

ユーザーが変更されました。

SQL> alter user exam quota unlimited on exam_dat;

ユーザーが変更されました。

表領域可用性の変更

オフライン化

次のような場合にオフライン化
  • データベースの一部のみを使用できないようにし、残りの部分には正常にアクセスできるようにする
  • オフライン表領域のバックアップを実行する(ただし、表領域はオンラインで使用中の場合でもバックアップは可能)
  • アプリケーションの更新時またはメンテナンス時に、アプリケーションとその表のグループを一時的に使用できないようにする
  • 表領域のデータ・ファイルを名前変更または再配置する
オフライン化できない表領域
  • SYSTEM
  • UNDO表領域
  • 一時表領域
オフライン化
オプション 内容
NORMAL 表領域のデータ・ファイルすべてのチェックポイントを取ってからオフライン化。デフォルト。
TEMPORARY データ・ファイルについてエラー条件が存在している場合でも、表領域を一時的にオフライン化できる。まだオフライン化されていないデータ・ファイルのチェックポイントを取ってから、オフライン化します。
IMMEDIATE 即時にオフライン化。データ・ファイルのチェックポイントを取りません。表領域をオンライン化する前に表領域のメディア・リカバリが必要。NOARCHIVELOGモードで運用している場合は、表領域を即時にオフライン化することはできない。
SQL> alter tablespace exam_dat offline normal;

表領域が変更されました。
オフラインの表にアクセス
SQL> select * from test;
select * from test
              * 
行1でエラーが発生しました。:
ORA-00376: file 6 cannot be read at this time
ORA-01110: data file 6: '/opt/oracle/app/oradata/oradb1/exam01.dbf'
オンラインに戻す
SQL> alter tablespace exam_dat online;

表領域が変更されました。

読み取り専用

読み取り専用にする
SQL> alter tablespace exam_dat read only; 

表領域が変更されました。
更新してみる
  • 参照はできるが、更新はエラー
SQL> select * from test;

        ID NAME
---------- ----------------------------------------
         1 abc

SQL> update test set name = 'def' where id = 1;
update test set name = 'def' where id = 1
       *
行1でエラーが発生しました。:
ORA-00372: file 6 cannot be modified at this time
ORA-01110: data file 6: '/opt/oracle/app/oradata/oradb1/exam01.dbf'
元戻す
SQL> alter tablespace exam_dat read write;

表領域が変更されました。

{{include_html banner_html, "!Oracle"}}