Oracle的表空间和数据文件
一、 概念
表空间:是一个或多个数据文件的逻辑集合
表空间逻辑存储对象: 永久段-->如表与索引
临时段-->如临时表数据与排序段
回滚段-->用于事物回滚或闪回内存的撤销数据
表空间分类:系统表空间(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
2 datafile '/u01/app/oracle/oradata/orcl/dev01.dbf' size 50M,
3 '/u01/app/oracle/oradata/orcl/dev02.dbf' size 50M; 表空间已创建。
--创建自动扩容的表空间
SQL> create tablespace uat
2 datafile '/u01/app/oracle/oradata/orcl/uat.dbf' size 32m
3 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.查出数据文件的位置和所属表空间
select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "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'
2 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
2 '/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
2 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的表空间和数据文件的更多相关文章
- Oracle数据库表空间与数据文件的关系描述正确的是( )
Oracle数据库表空间与数据文件的关系描述正确的是( ) A.一个表空间只能对应一个数据文件 B.一个表空间可以对应多个数据文件 C.一个数据文件可以对应多个表空间 D.表空间与数据文件没任何对应关 ...
- oracle维护表空间和数据文件
1:重要参考 wiki 2: oracle doc 表空间参考 3:来自dba-oracle的参考 26,27,28,29 一:oracle 表空间概念 表空间是联系数据库的物理磁盘(数据文件)和逻辑 ...
- ORACLE - 管理表空间和数据文件
ORACLE表空间是一个逻辑分区,一个数据文件只能属于一个表空间,一个表空间可以拥有多个数据文件. 一般情况下,如果一个实例分配给多个应用使用,需要创建不同的表空间,每个用户使用自己的表空间. 一.表 ...
- Oracle管理表空间和数据文件详解
介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Oracle中逻辑结构包括 ...
- Oracle 为表空间增加数据文件
dba权限检查下 select tablespace_name, file_id, file_name, ),) total_space from dba_data_files order by ta ...
- Oracle的表空间、数据文件、用户
每一个Oracle数据库都是由三种类型的文件组成:数据文件(Data File).日志文件(Log File)和控制文件(Control File).数据库的文件为数据库信息提供真正的物理 ...
- ORACLE 收缩表空间的数据文件
http://blog.itpub.net/29345367/viewspace-1816427/ 方法一: 在实际的应用中经常会遇到TRUNCATE或者DELETE表中的数据后发现表空间并没有将空间 ...
- oracle 删除表空间及数据文件方法
oracle 11g版本,创建数据库表空间,默认单个数据文件最大为32G,如果数据文件大于32G,可以增加数据文件. --删除空的表空间,但是不包含物理文件 drop tablespace table ...
- oracle查看表空间下数据文件
下面两个数据字典视图就知道了.查看有哪些表空间:select * from dba_tablespaces;查看有哪些数据文件在哪个表空间中:select * from dba_data_files; ...
随机推荐
- Spark运行原理解析
前言: Spark Application的运行架构由两部分组成:driver program(SparkContext)和executor.Spark Application一般都是在集群中运行,比 ...
- JMeter学习-020-JMeter 监听器之【聚合报告】错误率、吞吐量、传输速率实例计算
上文 对聚合报告的结果字段进行了概要的讲述释义,同时对吞吐量.传输速率.分位数等进行了详细的阐述,此文针对上文中描述的吞吐量及传输速率的计算进行详细的实例计算演示. 多不闲述,直入主题! 实际操作步骤 ...
- 如何用按钮的click事件去触发a标签的click事件
在jQquery中,可以用如下方式触发input.a标签的click事件: <input id="my_input" /> <a id="my_a&qu ...
- Linux下查看某个软件安装路径
1:如果包是通过yum或者rpm方式安装 [root@localhost yum.repos.d]# rpm -qa //找出系统所有的包,找到对应的文件名 [root@localhost yum.r ...
- 湖大OJ-实验C----NFA转换为DFA
实验C----NFA转换为DFA Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit us ...
- ASP.NET MVC controller 之间传JS值
在ASP.NET MVC中有东西叫TempData,它的类型是TempDataDictionary,它与ViewData以及ViewBag的不同之处在于 它的内部是使用session来保存信息的,可以 ...
- Unity Tidy Tile Pack #1
https://www.assetstore.unity3d.com/cn/#!/content/3276 版本: 1.1 下载地址 密码:mt8a
- Android组件间交互
四大组件相信大家都不陌生了吧,今天咱们就组件间通信做个说明: 首先: 主要今天的目的是为了说明Android 提供的一个ResultReceiver类,这个类相信大家都不陌生吧>?但是你们层深入 ...
- Robotium自动化测试框架实用教程(图)
一.简介 Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击.长按.滑动等).查找和断言机制的API,能够对各 ...
- 通过Trainingkit对Azure有一个初步的了解
学习Azure有一个非常不错的资料库Azure training kit. 这里面包含了很多Azure团队编写的实例代码,以及为初学Azure的开发人员准备的新手教学课程. 开发人员可以从http:/ ...