oracle存储数据逻辑上在表空间 物理上在数据文件;
逻辑上 数据库-》表空间-》段(如:表、索引)-》区(连续块,不能跨datafile)-》块
物理上 数据文件-》OS块
块对应多个OS块
表空间由一个和多个数据文件组成
表空间:
同一时刻只能属于一个database
由一个或多个data files组成
是逻辑存储单元更深层次的分隔
数据文件:
数据文件只能属于一个表空间和一个database
是一个schema object data仓库(schema在oracle中相当于一个用户对象,schema名为用户名)
表空间的管理分类
dictionary-managed(9i之后的版本已摒弃)
locally managed
表空间分类
permanent(永久的)
undo
temporary(如查询大量数据的“排序”操作时)
查看分类信息
select tablespace_name,contents,extent_management from dba_tablespaces;
默认临时表空间
注:数据库默认把SYSTEM表空间当作default temporary tablespace
解决方法:
1.在create database的时候指定
2.alter database default temporary tablespace xxwz_temp;
查看default temporary tablespace命令
select * from database_properties;
表空间的只读模式
alter tablespace xxwz_data read only
这个操作会引发checkpoint,可以drop某张表,不能truncate(清空表的记录)表
查看表空间
v$tablespace(表空间数量名字)
v$datafile(数据文件)
v$tempfile
dba_tablespaces
dba_data_files(表空间对应的数据文件位置)
dba_temp_files(临时表空间对应的数据文件位置)
创建表空间
create tablespace|temporary tablespace MOF_TEMP
datafile|tempfile 'D:/oracle/product/10.2.0/oradata/orcl/MOF_TEMP.def' size 500M
autoextend on next 10M maxsize unlimited logging
extent management local autoallocate|UNIFORM size 128k
segment space management auto;
1) DATAFILE: 表空间数据文件存放路径
2) SIZE: 起初设置为200M
3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
4) 空间名称MOF_TEMP与 数据文件名称 MOF_TEMP.dbf 不要求相同,可随意命名.
5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间
6) logging表示写redo,默认为logging
!
TIP:在导大量数据时可管理logging,原来几小时的导入时间可瞬间缩短为几分钟
!
表空间在线离线
alter tablespace xxwz_data online
alter tablespace xxwz_data offline normal;
表空间增大变小3种方法
1.自动扩容
查看是否自动扩容
select file_name,autoextensible from dba_data_files;
修改自动扩容状态
alter database datafile 'd:/oracle_xxwz/xxwz_data.dbf'
autoextend on next 10M maxsize 500m|UNLIMITED;
增加自动扩容数据文件
(1)在create database时
(2)在create tablespace时
create tablespace xxwz_data
datafile 'd:/oracle_xxwz/xxwz_data.dbf' size 500M
autoextend on next 10M maxsize 500m|UNLIMITED;
(3)增加新的数据文件到表空间
alter tablespace xxwz_data add datafile
'd:/oracle_xxwz/xxwz_data.dbf' size 500M
autoextend on next 10M maxsize 500m|UNLIMITED;
2.手动扩容
alter database datafile 'd:/oracle_xxwz/xxwz_data.dbf' resize 600M
3.给表空间加数据文件
alter tablespace xxwz_data add datafile
'd:/oracle_xxwz/xxwz_data.dbf' size 500M
autoextend on next 10M maxsize 500m|UNLIMITED;
当表空间的数据文件移动时:
1.表空间offline
2、拷贝数据文件到指定位置
3.alter tablespace xxw_data rename
datafile 'd:/oracle_xxwz/xxwz_data.dbf' to
'd:/xxwz_data.dbf';
或者
1、关闭数据库
2、移动数据文件
3.startup mount
4.alter database rename
file 'd:/oracle_xxwz/xxwz_data.dbf' to
'd:/xxwz_data.dbf';
5.alter database open;
删除表空间
DROP TABLESPACE XXWZ_DATA INCLUDING CONTENTS AND DATAFILES;