表空间和数据文件

表空间和数据文件

1.表空间介绍

1). 表空间与数据文件的关系

在Oracle数据库中,表空间与数据文件之间的关系非常密切,这二者相互依存,也就是说,创建表空间时必须创建数据文件,增加表空间时也必须指定表空间;

Oracle磁盘空间管理中的最高逻辑层是表空间(TABLESPACE),它的下一层是段(SEGMENT),一个段只能存在于一个表空间内。段的下一层是盘区,一个段可以有多个盘区,每个盘区只能存在于一个数据文件中。如果一个段跨越多个数据文件,在此段下每个数据文件的盘区互相独立。盘区的下一层是数据块,数据块是磁盘空间管理中逻辑划分的最底层。一组数据块组成一个盘区。

数据库、表空间、数据文件、段、盘区、数据块及操作系统质检的关系

image.png

2). 表空间

表空间信息存放于DBA_DATA_FILES数据字典中.

  1. --查询表空间信息语句

  2. select tablespace_name,file_name,bytes from DBA_DATA_FILES

    Oracle 11g默认的表空间有六个:


    image.png

2.创建表空间

为了简化表空间的管理并提高系统性能,Oracle建议将不同类别的数据存放于不同的表空间中,因此创建数据库后管理员还需要根据具体情况创建不同类型的表空间;表空间创建后可以增加大小,Oracle表空间数据文件最大为32G,如需更大的表空间,为这个表空间创建其他的数据文件即可。

表空间创建及修改语句:

  1. --创建TEST表空间,数据文件为TEST01.dbf,存放在C:\tablespace路径下,大小为2048M

    create tableSpace TEST datafile 'C:\tablespace\TEST01.dbf' SIZE 2048M;

  2. --为表空间增加数据文件TEST02.dbf,大小为2G:

    alter tablespace HDAPP add datafile ' C:\tablespace\TEST02.dbf ' size 2048M;

  3. 增加表空间原有数据文件尺寸,修改为4096M

    alter database datafile 'C:\tablespace\TEST01.dbf ' resize 4096M;

  4. 修改TEST01.dbf数据文件的大小为自动增长,每次增长1024M,最大可增长至20G;

ALTER DATABASE DATAFILE ' C:\tablespace\TEST01.dbf ' AUTOEXTEND ON NEXT 1024M MAXSIZE 20480M;

表空间自动扩展属性可以查询并关闭

  1. --查询是否是自动扩展:
    select file_name,autoextensible,increment_by from dba_data_files ;

  2. 关闭扩展:
    alter database datafile/TEMPFILE ' C:\tablespace\TEST02.dbf ' autoextend off;

    删除表空间语句:

  3. 删除表空间:

DROP TABLESPACE TEST INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

表空间查询相关语句

  1. --表空间大小查询:
    SELECT a.tablespace_name "表空间名",
    total "表空间大小",
    free "表空间剩余大小",
    (total - free) "表空间使用大小",
    total / (1024 * 1024 * 1024) "表空间大小(G)",
    free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
    (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
    round((total - free) / total, 4) * 100 "使用率 %"
    FROM (SELECT tablespace_name, SUM(bytes) free
    FROM dba_free_space
    GROUP BY tablespace_name) a,
    (SELECT tablespace_name,SUM(bytes) total
    FROM dba_data_files
    GROUP BY tablespace_name) b
    WHERE a.tablespace_name = b.tablespace_name;

  2. --查询表空间物理地址
    select c.tablespace_name 表空间名,c.file_name 物理文件地址,SUM(bytes)/1024/1024/1024 "表空间大小(G)"
    from dba_data_files c
    group by c.tablespace_name,c.file_name
    order by c.tablespace_name,c.file_name ;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容