当前位置:
文档之家› Oracle基础知识之表空间与数据文件
Oracle基础知识之表空间与数据文件
如果想要把一个只读表空间更改至读写状态, 则需要保证全部数据文件都是online的
表空间的创建(1)
字典管理的表空间
CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE ( initial 1M NEXT 1M );
ALTER DATABASE sample DEFAULT TEMPORARY TABLESPACE group2;
只读表空间
设置表空间为只读,则不能使用DML操作对表 空间中的数据进行修改
可以使用DDL操作对只读表空间中的对象进行 删除操作
使用命令alter tablespace tbs_name read only; 可以将一个表空间由读写状态更改至只 读状态
Oracle以小文件表空间的方式创建System和 Sysaux表空间。
大文件表空间(bigfile tablespace)
为了扩展数据文件的大小,Oracle10g中引入了大文件 表空间,在大文件表空间下,Oracle使用32位来代表 Block号,也就是说,在新的技术下,大文件表空间下 每个文件最多可以容纳4G个Block。
CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
本地管理表空间——区大小自动分配
CREATE TABLESPACE test DATAFILE '/oradata/data/test01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL autoallocate;
本地管理表空间中区空间的分配
区大小自动分配
区的大小由Oracle数据库自动管理
区大小固定分配
每次分配区的大小是固定的
表空间的分类
系统表空间; 非系统表空间; 小文件表空间 大文件表空间 回滚(undo)表空间; 临时(temporary)表空间;
系统和非系统表空间
系统表空间
TABLESPACE GROUP group1;
ALTER TABLESPACE lmtemp TABLESPACE GROUP group2;
管理临时表空间组
添加成员: CREATE TEMPORARY TABLESPACE lmtemp3 TEMPFILE '/oracle/data/lmtemp301.dbf‘ SIZE 25M TABLESPACE GROUP group1;
本地管理表空间
CREATE TABLESPACE userdata DATAFILE '/u01/oradata/userdata01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;
表空间的创建(2)
本地管理的表空间——区大小固定分配
ALTER TABLESPACE lmtemp2 TABLESPACE GROUP group2;
删除成员: ALTER TABLESPACE lmtemp3 TABLESPACE GROUP '';
声明表空间组为默认的临时表空间
可以使用ALTER DATABASE…DEFAULT TEMPORARY TABLESPACE命令把表空间设置为数据 库的默认临时表空间。例如
表空间概述
oracle数据库逻辑上划分为一个或多个表空间。 包含物理数据文件的逻辑实体。 表空间存储数据库所有可用的数据。
表空间中的空间管理
本地管理表空间:
在表空间中管理空闲区。 用位图来记录空闲区。 每一个bit对应一个数据块或一级数据块。 Bit位的值表示空闲或使用. 在10g中,创建表空间时默认为本地管理
第七讲 表空间和数据文件
二零一零年六月
目标
学习此章,需要掌握以下知识:
了解表空间及数据文件的基本概念 了解表空间的逻辑结构 掌握表空间的管理方式 掌握表空间的创建和删除 知道如何获取表空间信息 知道数据文件的管理操作 掌握数据文件的查看方法
逻辑结构和物理结构概述
表空间和数据文件
Oracle将数据逻辑上存放在表空间中,物理 上存放在数据文件中.
表空间:
在同一时间只属于一个数据库 由一个或多个数据文件组成 被更进一步划分更小的逻辑存储单元
数据文件:
Database
只能属于一个表空间和一个数据库 是schema对象数据的最终存储地
Tablespace
Data files
和SEGMENT SPACE MANAGEMENT AUTO参数。 不能指定EXTENT MANAGEMENT DICTIONARY或
者SEGMENT SPACE MANAGEMENT MANUAL, 否则会报错。 只能创C建RE一A个TE数B据IG文F件IL。E TABLESPACE bigfiletest
本地管理的回滚表空间和临时表空间,即使其 段为手工管理,也可以使用大文件表空间。
创建大文件表空间
需要在CREATE TABLESPACE语句前面添加BIGFILE 关键字(CREATE BIGFILE TABLESPACE…)。
Oracle数据库自动创建自动段空间管理的本地表空间。 无需在语句中设置EXTENT MANAGEMENT LOCAL
删除之前最好先使表空间处于脱机状态 可以选择连带删除相应的数据文件 Drop tablespace user_tab
表空间的创建(3)
本地管理的表空间——手动段空间管理
CREATE TABLESPACE test DATAFILE '/oradata/data/test01.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT MANUAL ;
回滚表空间
用于保存和管理回滚段的数据 不能包含其他对象 必须使用本地管理的模式
临时表空间
用于排序操作
Sql语句中有order by, distinct, max等操作时 被数据库中各种排序操作所共用 如果排序的对象比较大,则使用临时表空间能获得
比较好的性能
只能包含排序过程中的临时数据,不能包含任 何永久对象
那么也就是说当Block_size为8k时,数据文件可以达 到32T。
表空间可以由一个单一的大文件构成,而不是若干个小 数据文件。
查看数据库默认的表空间类型
设置数据库默认表空间
设置默认的创建默认的表空间为大文件表空间
ALTER DATABASE SET DEFAULT bigfile TABLESPACE;
DATAFILE
'D:\oracle\product\10.2.0\oradata\orcl\
bigfiletest01.dbf' SIZE 100M;
管理大文件表空间
RESIZE:可以使用RESIZE语句直接重新定义大文件表 空间的数据文件的大小,而不需要指定数据文件(大文 件表空间只有一个数据文件)。例如:
设置默认的创建默认的表空间为小文件表空间
ALTER DATABASE SET DEFAULT smallfile TABLESPACE;
创建大文件表空间条件
数据库默认创建的是小文件表空间,即Oracle 中传统的表空间类型。
只有本地管理的,且段空间自动管理(ASSM) 的表空间才能使用大文件表空间。
在预置数据库中的表空间
SYSTEM SYSAUX TEMP
UNDOTBS1 USERS EXAMPLE
更改表空间(1)
更改表空间的状态
读写:表空间已联机,可以进行读、写操作 只读:不允许对表空间中的对象进行DML操作
。注意:不能使system或sysaux表空间处于只 读 脱机:不能对脱机的表空间进行读或写操作
以下例子指定当group1和group2不存在时创建表空 间组group1和group2。每个组中包含的成员都只包 含CR指EA定T的E T唯E一MP的O一RA个R成Y T员A。BLESPACE lmtemp2 TEMPFILE '/oracle/data/lmtemp201.dbf'
SIZE 50M
更改表空间的大小
向表空间中添加数据文件 更改现有数据文件的大小
设置数据文件为自动扩展 手动更改数据文件的大小
改变存储选项
更改表空间(3)
对表空间可以进行的操作
删除表空间(1)
需要有drop tablespace的系统权限 不能删除包含任何活动段的表空间
表空间中的某个表当前正在使用中 表空间包含回退位提交事务处理需要的还原数据
选项:正常脱机、临时脱机、立即脱机和进行恢复 system表空间、拥有活动的回滚段的表空间、及
默认临时表空间不能脱机
alter tablespace tbs_name offline/online;
更改表空间(2)
对表空间进行重命名
表空间和所有的数据文件都要联机 alter tablespace tbs1 rename to tbs2
临时表空间组
由多个临时表空间构成
表空间组中表空间个数的上限没有限制,至少 包含一个表空间。
表空间组不能和其他任何表空间同名。
可以在为数据库设置默认临时表空间时使用表 空间组或者在为用户设置在CREATE TEMPORARY TABLESPACE或者 ALTER TABLESPACE语句中使用TABLESPACE GROUP隐式的创建表空间组并假设当前不存在表空间 组。