1、11管理表空间和数据文件Oracle的逻辑存储结构的逻辑存储结构 表空间-tablespace 段-segment 区-extent 数据块-block2015-811-2Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件表空间表空间-tablespace 表空间可以看作是放置表的容器。表空间由一个或多个数据文件构成。创建表时,可以指定表空间。2015-811-3Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件如何创建表空间如何创建表空间SQL create tablespace ts 2 dataf
2、ile e:oradatats01.dbf size 20m,3 e:oradatats02.dbf size 30m 4 autoextend on next 5m maxsize 1g 5 uniform size 1m 6 /说明说明:1.无无第第4行,则第行,则第2个数据文件不能自动个数据文件不能自动增长。增长。2.若设置为自动增长,但省略若设置为自动增长,但省略maxsize,则,则可用完可用完文件所在文件所在分区分区。3.省略省略第第5行,则由行,则由Oracle对此空间内的对象自动指定区大小对此空间内的对象自动指定区大小2015-811-4Oracle数据库系统原理数据库系统原理
3、-第第11章章 管理表空间和数据文件管理表空间和数据文件创建表空间的实质创建表空间的实质 与操作系统格式化分区相似 对每个数据文件划分数据块并由0开始编号 对每个数据文件划分区2015-811-5Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件修改表空间名称修改表空间名称 SQL alter tablespace ts rename to ts_new;2015-811-6Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件管理数据文件管理数据文件 对表空间增加数据文件SQL alter tablesp
4、ace ts 2 add datafile e:oradatats03.dbf size 5m;改变数据文件大小SQL alter database 2 datafile e:oradatats03.dbf resize 10m;删除数据文件SQL alter tablespace ts 2 drop datafile e:oradatats03.dbf;开启文件自增长SQL alter database datafile e:oradatats03.dbf 2 autoextend on next 5m;2015-811-7Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和
5、数据文件管理表空间和数据文件移动数据文件移动数据文件 在数据库中将数据文件所属的表空间脱机。SQL alter tablespace tbs_move offline;在操作系统中移动数据文件。SQL host move e:oradatatbs_move01.dbf c:oradata 在数据库中重命名。SQL alter tablespace tbs_move 2 rename datafile e:oradatatbs_move01.dbf 3 to c:oradatatbs_move01.dbf 4 /在数据库中将表空间重新联机。SQL alter tablespace tbs_mov
6、e online;2015-811-8Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件建表时指定表空间建表时指定表空间SQL create table t(a int,b char(1000)2 tablespace ts 3 /2015-811-9Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件移动表移动表 在表空间之间移动 SQL alter table t move tablespace tbs;在原来表空间中移动 SQL alter table t move;2015-811-10Oracl
7、e数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件使用使用dba_tablespaces查询表空间信息查询表空间信息SQL col tablespace_name for a15SQL select tablespace_name,allocation_type as alloc 2 from dba_tablespaces 3 /2015-811-11Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件查询数据文件信息查询数据文件信息SQL col file_name for a60SQL select file
8、_name,file_id,2 bytes/1024/1024 as file_size(MB),3 maxbytes/1024/1024 as max_size(MB),4 increment_by*8/1024 as extending_size(MB)5 from dba_data_files 6 where tablespace_name=TS 7 /2015-811-12Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件查询表所在的表空间查询表所在的表空间SQL select table_name,tablespace_name 2 fr
9、om dba_tables 3 where table_name=T 4 and owner=SCOTT2015-811-13Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件表空间分类表空间分类 permanent 存储的数据是永久的,包括system、sysaux表空间和用户表空间。temporary 存放排序或散列操作过程中的临时数据,操作完成后可被覆盖。undo 用于保存数据库运行过程中的undo数据,当undo数据不再需要即可被后续数据覆盖。2015-811-14Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件
10、管理表空间和数据文件空间分配空间分配 第一次添加记录时,对表分配区(11.2版本成立)。区由物理上连续的数据块构成。区是分配空间的单位。区的大小在创建表空间时指定。表的区在表空间的多个文件上循环分配。数据块是最小的逻辑存储结构和读写数据的单位。2015-811-15Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件对表分配指定大小的对表分配指定大小的空间空间 执行下面命令在tbs01.dbf文件上分配3MB的空间SQL alter table t allocate extent 2 (datafile e:oradatatbs01.dbf size
11、 3m)3 /2015-811-16Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件查看表分配到的区查看表分配到的区 dba_segments segment_name即表名 exents即表当前占用区的个数 dba_extents file_id extent_id block_id blocks2015-811-17Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件查询查询表分配表分配到到的区的区SQL select extent_id,file_id,block_id,blocks 2 from
12、 dba_extents 3 where segment_name=T 4 /EXTENT_ID FILE_ID BLOCK_ID BLOCKS-0 8 17 8 1 8 137 128 2 8 265 128 3 8 393 1282015-811-18Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件查看表分配到的空间示例查看表分配到的空间示例SQL select segment_name,bytes/1024/1024 as size(MB)2 from dba_segments 3 where segment_name=T 4 /SEGME
13、NT_NAME size(MB)-T 6.06252015-811-19Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件删除表后的空间释放删除表后的空间释放2015-811-20Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件数据文件上包含三个表:T1,T2,T3,小矩形表示一个区删除T2表后的状态删除记录对空间的影响删除记录对空间的影响 delete 不会释放删除记录所占用的空间 truncate table 会释放空间,但保留一个区2015-811-21Oracle数据库系统原理数据库系统原理-
14、第第11章章 管理表空间和数据文件管理表空间和数据文件查看数据文件中的空闲空间查看数据文件中的空闲空间 dba_free_spaces 每一行描述数据文件中一段空闲空间 file_id表示文件号 block_id表示空闲空间的第一个数据块号 blocks表示空闲空间的数据块数2015-811-22Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件查询表空间总空间查询表空间总空间SQL select tablespace_name,sum(bytes/1024/1024)as total_size(MB)2 from dba_data_files 3
15、 where tablespace_name=SYSTEM 4 group by tablespace_name 5 /TABLESPACE_NAME total_size(MB)-SYSTEM 4402015-811-23Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件查询每个表空间的空闲空间查询每个表空间的空闲空间SQL select tablespace_name,sum(bytes)/1024/1024 2 from dba_free_space 3 group by tablespace_name 4 /TABLESPACE SUM(BYTES)/1024/1024-SYSAUX 22.0625UNDOTBS1 183.5625USERS 4.5625SYSTEM 8.625TBS_NEW 3.8752015-811-24Oracle数据库系统原理数据库系统原理-第第11章章 管理表空间和数据文件管理表空间和数据文件