Home >Database >Mysql Tutorial >Oracle 表空间简单管理永久表空间

Oracle 表空间简单管理永久表空间

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 17:16:28994browse

假设数据库为 Oracle 11g,在 SQL *PLUS 下,用 SYS 用户登录。本文演示创建(永久)表空间,之后,查看表空间信息,再修改表空间

本文内容

  • 创建表空间
  • 查看表空间
  • 修改表空间可用性/可读写性
  • 删除表空间
  • 假设数据库为 Oracle 11g,在 SQL *PLUS 下,用 SYS 用户登录。本文演示创建(永久)表空间,之后,查看表空间信息,再修改表空间的配置,最后,删除表空间。

     

    创建表空间

    Oracle 按照区和段空间进行管理表空间。

    区管理方式 - 针对区的分配方式的不同,有两种方式:字典管理方式(dictionary-managed tablespace,DMT)和本地管理方式(local-managed tablespace,,LMT)。Oracle 10g开始强烈建议使用 LMT 方式。从 Oracle 9i 开始,创建表空间时默认使用 LMT。

    其中,LMT 区的分配方式:

  • 统一(UNIFORM)- 统一分配。指定表空间中所有区的大小都相同。默认值是 1MB。
  • 自动(AUTOALLOCATE 或 SYSTEM)- 自动分配。指定有 Oracle 系统来自动管理区的大小。这是默认设置。
  • 段管理方式 – LMT 方式,除了可以指定区的分配方式外,还可以指定段的管理方式。段空间管理方式主要是指 Oracle 用来管理段中已用数据块和空闲数据块的机制。分为两种:

  • 手动(MANUAL)- Oracle 将使用空闲列表(free list)管理段的已用数据块和空闲数据块。这是传统的段空间管理方式,为了与以前的版本兼容。
  • 自动(AUTO)- Oracle 将使用位图(bitmap)来管理段的已用数据块和空闲数据块。通过位图中单元的取值判断段中的数据块是否可用。
  • 字典管理方式不存在段管理。

    下面示例演示用本地管理方式创建表空间。

    示例 1:使用 AUTOALLOCATE 区分配方式创建表空间 mytbs01,数据文件是 D:\oracledata\mytbs01_1.dbf,大小为 2M。

    create tablespace mytbs01datafile 'D:\oracledata\mytbs01_1.dbf' size 2Mautoallocate;

    示例 2:使用 UNIFORM 区分配方式创建表空间 mytbs02,数据文件是 D:\oracledata\mytbs02_1.dbf 和 D:\oracledata\mytbs02_2.dbf,有两个文件,大小分别为 1M 和 2M。

    2Muniform size 128k;

    示例 3:创建表空间 mytbs03,并指定数据文件扩展方式为自动增长,每次 1M,最大扩展到 11M。

    2M maxsize 11M;

    此时,就不能再指定 UNIFORM。

    示例 4:使用 AUTO 段管理方式。创建表空间 mytbs04,采用 UNIFORM 区分配管理方式,大小为默认值;用 segment space management 指定段管理方式。

    create tablespace mytbs04datafile 'D:\oracledata\mytbs04_1.dbf' size 3M reuseuniformsegment space management auto;

     

    查看表空间

    可以通过下面 Oracle 系统表查看上面创建的表空间的相关信息。

  • dba_tablespaces - 数据库表空间管理信息。
  • dba_data_files - 数据库表空间文件管理信息。
  • dba_free_space - 数据库表空间文件使用信息。
  • 示例 5:表空间使用情况,包括表空间名称、DBF 文件个数、总大小、剩余/占用大小等等。

    "剩余大小", a.totalspace - nvl(b.freespace, 0) || t1.tablespace_name) a, (t.tablespace_name) c where a.tablespace_name = b.tablespace_name and b.tablespace_name = c.tablespace_name

    1

    示例 6:表空间信息参看,包括表空间名称、路径、类型、管理方式、区管理方式、段管理方式和是否自动增长。

    select t1.tablespace_name as "表空间名称", t2.file_name as "文件名", t1.contents as "类型", t1.extent_management as "管理方式", t1.allocation_type as "区管理方式", t1.segment_space_management as "段管理方式", t2.autoextensible as "是否自动扩展", t1.status as "是否联机" from dba_tablespaces t1, dba_data_files t2 where t1.tablespace_name = t2.tablespace_name

    2

     

    linux

    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn