ホームページ > データベース > Oracle > Oracle テーブルスペースとは

Oracle テーブルスペースとは

青灯夜游
リリース: 2021-12-24 11:54:35
オリジナル
12582 人が閲覧しました

Oracle テーブルスペースはデータベースの論理的な分割であり、Oracle データベースリカバリの最小単位であり、テーブル、ビュー、インデックス、クラスタ、ロールバックセグメント、一時セグメントなどの多くのデータベースエンティティを収容します。 Oracle データベースには 1 つ以上の表スペースを持つことができ、1 つの表スペースは 1 つ以上の物理データベース ファイルに対応します。

Oracle テーブルスペースとは

このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。

1. 概念

Oracle テーブルスペース (表領域) は論理的な概念であり、実際にデータを格納するのはデータ ファイルです。 Oracle データベースには 1 つ以上の表スペースを持つことができ、1 つの表スペースは 1 つ以上の物理データベース ファイルに対応します。

テーブルスペースはOracleデータベースリカバリの最小単位であり、テーブル、ビュー、インデックス、クラスタ、ロールバックセグメント、一時セグメントなどの多くのデータベースエンティティを収容します。

1. Oracle テーブル スペースの機能:

(1) データベース データのディスク割り当ての制御;

(2) テーブル スペース内のユーザーの制限使用できるディスク容量;

(3) 表スペースには、オンライン、オフライン、読み取り専用、および読み取り書き込みの属性があります。

2. 表スペースの分類:

  • 永続表スペース: データベースに永続的に保管されるいくつかのオブジェクト (表、ビュー、ストアド プロシージャ

  • 一時テーブル スペース: データベース操作の途中で実行される処理、実行完了後、格納された内容は自動的に解放されます

  • UNDO テーブルスペース: トランザクション変更データの古い値を保存するために使用され、データをロールバックできます

セグメント (セグメント) は、データ ファイルの一般名によって占有されるスペース、またはデータベース オブジェクトによって使用されるスペースの集合を指します。セグメントには、テーブル セグメント、インデックス セグメント、ロールバック セグメント、一時セグメント、キャッシュ セグメントなどが含まれます。

エクステント (インターバル/エクステンション)、オブジェクト (テーブルなど) に割り当てられた連続ブロックはインターバルと呼ばれます。インターバルは使い果たされるため、エクステンションとも呼ばれます。新しいレコードが挿入されると、新しい間隔を割り当てる必要があります (つまり、一部のブロックが拡張されます)。間隔がオブジェクト (テーブル、インデックス、クラスター) に割り当てられると、その間隔を割り当てることはできません他のオブジェクトに。

Oracle テーブルスペースとは
構造図

Oracle テーブルスペースとは
データファイル、セグメント、拡張関係図

2. 関連ビュー

select * from dba_data_files;   --describes database files  数据文件信息
select * from dba_temp_files;   --describes all temporary files (tempfiles) in the database 临时数据文件信息
select * from dba_free_space;   --describes the free extents in all tablespaces in the database 数据库中所有表空间中的空闲扩展区
select * from dba_segments;     --describes the storage allocated for all segments in the database 数据库中的所有段分配的存储
ログイン後にコピー

Oracle テーブルスペースとは

Oracle テーブルスペースとは

Oracle テーブルスペースとは

#3. 関連操作

1. テーブルスペースの作成

--语法:
create [temporary] tablespace tablespace_name tempfile|datafile ‘xx.dbf’ size xx;
--创建临时表空间时,加上temporary关键字;
ログイン後にコピー

2. テーブル スペースを拡張します . 特定のテーブル スペースが使い果たされると、データベース テーブルに対して挿入操作を実行できなくなります。表スペースを拡張する必要があります。データファイル・ファイルを追加することで表スペースを拡張できます。

select f.* from dba_data_files f where f.tablespace_name='MLT';--查看表空间信息

alter tablespace MLT --表空间名
     add datafile '/home/oracle/oradata/crm/mlt04.dbf'  --datafile文件路径
     size 100M --表空间大小
     autoextend on --自动扩展
ログイン後にコピー

Oracle テーブルスペースとは

3. 表スペースのステータスを変更します

alter tablespace tablespace_name online|offline;--表空间是脱机时不可用,默认是联机的
ログイン後にコピー

4. テーブルスペースの削除

drop tablespace tablespace_name[including contents];
--including contents 表示删除表空间包括datafile数据文件,不加则不删除相关数据文件;
--删除数据文件时,不能删除表空间当中第一个数据文件,如果要删除就需要删除整个表空间。
ログイン後にコピー

5. テーブルスペースの使用状況の確認

--查询表空间使用情况SELECT Upper(F.TABLESPACE_NAME)         "表空间名",
       D.TOT_GROOTTE_MB                 "表空间大小(M)",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
       To_char(Round(( D.TOT_GROOTTE_MB - F.TOTAL_BYTES ) / D.TOT_GROOTTE_MB * 100, 2), '990.99')
       || '%'                           "使用比",
       F.TOTAL_BYTES                    "空闲空间(M)",
       F.MAX_BYTES                      "最大块(M)"FROM   (SELECT TABLESPACE_NAME,
               Round(Sum(BYTES) / ( 1024 * 1024 ), 2) TOTAL_BYTES,
               Round(Max(BYTES) / ( 1024 * 1024 ), 2) MAX_BYTES
        FROM   SYS.DBA_FREE_SPACE
        GROUP  BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               Round(Sum(DD.BYTES) / ( 1024 * 1024 ), 2) TOT_GROOTTE_MB
        FROM   SYS.DBA_DATA_FILES DD
        GROUP  BY DD.TABLESPACE_NAME) DWHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME--查询表空间的空闲扩展区select tablespace_name, count(*) AS extends,round(sum(bytes) / 1024 / 1024, 2) AS 大小/MB,sum(blocks) AS blocks from dba_free_space group BY tablespace_name;--查询表空间的总容量select tablespace_name, sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;--查询表空间使用率SELECT total.tablespace_name,
       Round(total.MB, 2)           AS   总量/MB,
       Round(total.MB - free.MB, 2) AS  已使用/MB,
       Round(( 1 - free.MB / total.MB ) * 100, 2) || '%'                  AS  使用率FROM   (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_free_space
        GROUP  BY tablespace_name) free,
       (SELECT tablespace_name,
               Sum(bytes) / 1024 / 1024 AS MB
        FROM   dba_data_files
        GROUP  BY tablespace_name) totalWHERE  free.tablespace_name = total.tablespace_name;
ログイン後にコピー
推奨チュートリアル: "

Oracle チュートリアル>>

以上がOracle テーブルスペースとはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート