一、 概念 

 表空间:是一个或多个数据文件的逻辑集合

表空间逻辑存储对象: 永久段-->如表与索引

    临时段-->如临时表数据与排序段

     回滚段-->用于事物回滚或闪回内存的撤销数据

表空间分类:系统表空间(system、sysaux),非系统表空间

一个表空间至少包含一个数据文件,一个数据文件只能属于一个表空间。

不可或缺的几个表空间:

SYSTEM --->字典表空间,不能被损坏

UNDO    --->dml,dql把数据快照到此,数据提交即消失(用于恢复)

SYSAUX  --->10g 高并发系统繁忙时,会造成system争用,将工具放到SYSAUX,减轻system的压力,SYSAUX不影响系统(影响性能)

TEMP    --->临时数据相关的内容

USERS   --->10g  用户数据从system拨离出来

二、Oracle的存储结构

1.Schema: 用户--->创建相关对象、表、视图、序列、函数、存储过程、包等

2.逻辑结构:database数据库--->tablespace表空间---> segment段--->extent区间----> block块

逻辑结构是Oracle内部管理数据库中对象的方式

3.物理结构:OS  block --->datafile 物理结构通常是一系列数据文件

三、表空间的管理

创建表空间

--简要语法:

CREATE [BIGFILE | SMALLFILE] [TEMPORARY] TABLESPACE tablespace name

DATAFILE datafile spec | TEMPFILE tempfile spec

[MINIMUM EXTENT minimum extent size]

[BLOCKSIZE blocksize]

[[COMPRESS|NOCOMPRESS] DEFAULT STORAGE (default storage clause)]

[LOGGING|NOLOGGING]

[FORCE LOGGING]

[ONLINE|OFFLINE]

[EXTENT MANAGEMENT DICTIONARY |

LOCAL [AUTOALLOCATE|UNIFORM SIZE size]]

[SEGMENT SPACE MANAGEMENT MANUAL|AUTO]

[FLASHBACK ON|OFF]

--获得创建表空间的语句

SELECT dbms_metadata.get_ddl('TABLESPACE','SYSTEM') FROM dual;

--查看缺省是BIGFILE 还是SMALLFILE,当缺省为SMALLFILE,创建表空间不指定表空间类型则为SMALLFILE

SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';

    PROPERTY_NAME                  PROPERTY_VALUE
    ------------------------------ --------------------------------------------------
    DEFAULT_TBS_TYPE               SMALLFILE

注意:

大表文件(bigfile)最大可以存放个T的容量。头文件的大小达到了G-->block,普通的头文件大小为M---->block。

create bigfile tablespace <> datafile <>........;

好处:减少了数据文件的个数,管理方便,大的对象的存放得到了优化。减少了control文件的信息,控制文件定义了datafile的个数。

bigfile只能存在一个数据文件,所以要保证分配的的磁盘具有足够的空间。 */

--演示创建表空间

SQL> create tablespace dev
    datafile '/u01/app/oracle/oradata/orcl/dev01.dbf' size 50M,
    '/u01/app/oracle/oradata/orcl/dev02.dbf' size 50M;

表空间已创建。

--创建自动扩容的表空间

SQL> create tablespace uat
    datafile '/u01/app/oracle/oradata/orcl/uat.dbf' size 32m
     autoextend on maxsize unlimited;

可以通过查看自动扩容是否打开

SQL> select file_name,autoextensible  from dba_data_files where tablespace_name='UAT';

表空间改名

SQL> alter tablespace dev rename to dev1;

将表空间设置为只读

注意只读表空间中的对象是可以被删除的,能执行DML语句,可以使用的为DDL

SQL> alter tablespace dev1 read only;

重新设置回可读可写

SQL> alter tablespace dev1 read write;

移动数据文件

1.查出数据文件的位置和所属表空间

 "SIZE(MB)" from dba_data_files;

2.将要移动的表空间离线

SQL> alter tablespace uat offline;

3.在操作系统下将文件移动到另外一个位置

SQL> host cp /u01/app/oracle/oradata/orcl/uat.dbf /u02/uat.dbf

4. 修改控制文件,将数据文件的指针重新指向到另一个位置(执行rename)

SQL> alter tablespace uat rename datafile '/u01/app/oracle/oradata/orcl/uat.dbf'
    to '/u02/uat.dbf';

5. 使表空间在线

SQL> alter tablespace uat online;

6.删除原来位置的应该废弃的物理文件

SQL> host rm /u01/app/oracle/oradata/orcl/uat.dbf

如过表空间不能脱机的话,就启动数据库到mount状态下,其余步骤是一样的。

表空间的扩容

可以通过如下的方法扩容表空间

  

   (1)重置数据文件大小

ALTER DATABASE DATAFILE '...' | FileNo RESIZE XX

(2)设置数据文件能自动增长

ALTER DATABASE DATAFILE '... '| FileNo AUTOEXTEND ON | OFF NEXT 20M MAXSIZE 300M;

--查看哪些表空间为自动增长

SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files

  (3)添加数据文件

  增加到表空间中的数据文件不能直接从表空间中删除,除非删掉整个表空间

  增加数据文件将有助于均衡I/O

  文件越多,执行一次检查点的代价越高  */

  ALTER TABLESPACE tbs2 ADD DATAFILE '/u01/app/oracle/oradata/orcl/tbs2.dbf' size 200m autoextend on ;

删除表空间

  DROP TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]]

 INCLUDING CONTENTS   --删除段

 DATAFILES  --删除数据文件

SQL> drop tablespace uat including contents and datafiles;

临时表空间

  临时表空间具有以下特征:

  •   临时表空间是作为排序操作使用的,当内存排序区不够时,使用临时表空间可以改进数据库的效率
  •   创建临时表空间,不能使用非标准数据块
  •   临时表空间不能存放永久对象
  •   当有第一个排序操作时创建排序段

--创建临时表空间

SQL> create temporary tablespace tmp02 tempfile
    '/u01/app/oracle/oradata/orcl/tmp02.dbf' size 100M;

表空间已创建。

--指定默认的临时表空间

  默认临时表空间最好要指定一下,如果没有指定默认的临时表空间,那么将使用system表空间作为排 序区

 ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tmp02;

--查看默认的临时表空间

select * from database_properties t  where t.property_name like 'DEFAULT_TEMP%';

还原表空间

--创建还原表空间

SQL> create undo tablespace undo2
    datafile '/u01/app/oracle/oradata/orcl/undo2.dbf' size 200M;

--修改当前系统的UNDO表空间:

 ALTER SYSTEM SET UNDO_TABLESPACE=tablespace_name;

四、相关视图

--获取表空间和数据文件信息

--表空间信息

dba_tablespaces

v$tablespace

--数据文件信息

dba_data_files

v$datafile

--临时数据文件信息

dba_temp_files

v$tempfile

--查看系统默认的表空间及临时表空间:  

SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties  where PROPERTY_NAME like 'DEFAULT%';

--修改改系统的默认表空间:

  SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

--查看用户默认表空间:

  SQL>select USERNAME,USER_ID,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;

--修改用户默认表空间:

SQL>ALTER USER user_name DEFAULT TABLESPACE tablespace_name

--查看表空间的使用情况:

dba_data_files;

dba_free_space;

--例:查每个表空间的剩余空间

SQL> select tablespace_name,sum(bytes/1024/1024) from dba_free_space group by tablespace_name;

Oracle的表空间和数据文件的更多相关文章

  1. Oracle数据库表空间与数据文件的关系描述正确的是( )

    Oracle数据库表空间与数据文件的关系描述正确的是( ) A.一个表空间只能对应一个数据文件 B.一个表空间可以对应多个数据文件 C.一个数据文件可以对应多个表空间 D.表空间与数据文件没任何对应关 ...

  2. oracle维护表空间和数据文件

    1:重要参考 wiki 2: oracle doc 表空间参考 3:来自dba-oracle的参考 26,27,28,29 一:oracle 表空间概念 表空间是联系数据库的物理磁盘(数据文件)和逻辑 ...

  3. ORACLE - 管理表空间和数据文件

    ORACLE表空间是一个逻辑分区,一个数据文件只能属于一个表空间,一个表空间可以拥有多个数据文件. 一般情况下,如果一个实例分配给多个应用使用,需要创建不同的表空间,每个用户使用自己的表空间. 一.表 ...

  4. Oracle管理表空间和数据文件详解

    介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Oracle中逻辑结构包括 ...

  5. Oracle 为表空间增加数据文件

    dba权限检查下 select tablespace_name, file_id, file_name, ),) total_space from dba_data_files order by ta ...

  6. Oracle的表空间、数据文件、用户

          每一个Oracle数据库都是由三种类型的文件组成:数据文件(Data File).日志文件(Log File)和控制文件(Control File).数据库的文件为数据库信息提供真正的物理 ...

  7. ORACLE 收缩表空间的数据文件

    http://blog.itpub.net/29345367/viewspace-1816427/ 方法一: 在实际的应用中经常会遇到TRUNCATE或者DELETE表中的数据后发现表空间并没有将空间 ...

  8. oracle 删除表空间及数据文件方法

    oracle 11g版本,创建数据库表空间,默认单个数据文件最大为32G,如果数据文件大于32G,可以增加数据文件. --删除空的表空间,但是不包含物理文件 drop tablespace table ...

  9. oracle查看表空间下数据文件

    下面两个数据字典视图就知道了.查看有哪些表空间:select * from dba_tablespaces;查看有哪些数据文件在哪个表空间中:select * from dba_data_files; ...

随机推荐

  1. java 21 - 10 文本文件和集合之间互相存储数据

    有时候,我们会遇到单独写入数据到文本文件的情况.比如: 需求:把ArrayList集合中的字符串数据存储到文本文件 分析: A:ArrayList集合中存储的是String类 B:要存储的文件是文本文 ...

  2. Oracle:安装中的注意事项

    导读:Oracle数据库的安装,姑娘我也是醉了.从开发今日开讲后台系统前,我就一直在装,第一版都开发完了,我昨天静下心来,才终于装上.在这个过程中,出现了好些个问题,说起来都是泪呀.现在就总结总结这个 ...

  3. android 推断Apk是否签名和 签名是否一致

    推断Apk是否签名 用命令:jarsigner -verify -verbose -certs <apk文件> 假设有Android Debug字樣就是debug 假设已经签名: [证书的 ...

  4. eclipse 下,使用正常模式可以运行,DEBUG模式就卡住的解决方案

    最近开发的时候遇到一个问题,就是用运行就可以编译整个项目,但是使用debug模式就卡住了,编译一部分就不动了.开始我以为是项目太大的关系 但是也不至于就DEBUG不行,所以网上差了些资料,原来是DEB ...

  5. LBSN中的用户行为模式分析

    LBSN中的用户行为模式分析 zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouw  2015-12-23   声明: 1)该LBSN的 ...

  6. docker:(3)docker容器挂载宿主主机目录

    有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了 比如在2中,我们要发布一个war包,是通过 sudo docker c ...

  7. 简单的SQL注入之2

    Topic Link http://ctf5.shiyanbar.com/web/index_2.php 一.方法One sqlmap直接跑出来 1)暴库 2)爆表 3)爆段 4) 结果 二.方法Tw ...

  8. Trident中的过滤与函数的区别

    1.共同点 都需要实现storm.trident.operation.Function接口 2.不同点 其中函数有发射这个步骤. .each(new Fields("orderTime&qu ...

  9. MySQL数据库基本用法-查询

    查询的基本语法 select * from 表名; from关键字后面写表名,表示数据来源于是这张表 select后面写表中的列名,如果是*表示在结果中显示表中所有列 在select后面的列名部分,可 ...

  10. 【转】stm32CubeMx上移植自己的printf()和scanf()函数

    要想printf()和scanf() 函数工作,我们需要把printf()和scanf() 重新定向到串口中.重定向是指用户可以自己重写C 的库函数,当连接器检查到用户编写了与C 库函数相同名字的函数 ...