Oracle表空间-DBA进阶

一、基本概念:
表空间是Oracle特殊的发明。
从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在一个或多个表空间中。
逻辑结构包括表空间,段,区和块:
一个表空间向上可以存放各种应用对象,一般把不同的应用(用户或模式或模式对象)放到不同的表空间中; 而更细的划分是将不同的模式对象分配到不同的表空间中,如数据库中所有数据表分配到一个表空间,所有索引分配到一个表空间;一般为一个用户创建一个表空间。而一个表空间向下由多个数据文件组成。
一个数据文件由多个segment(段)组成,
段分为表段,索引段,另一个表段等。 segment由多个extent(区)组成,区是连续的dat-block的集合,是从RAID(独立磁盘冗余阵列)或ROM中一次读取到cache中 的最小数据集。而区是由多个data-block组成,data-block是对数据文件读写的最小数据片,可以记录多条记录
   freelist:可用列表是表中的一组可插入数据的可用块。
  行连接:指一行存储在多个块中的情况,这是因为该行的长度超过了一个块的可用空间大小,即行链接是跨越多块的行。
  行迁移:指一个数据行不适合放入当前块而被重新定位到另一个块(那里有充足的空间)中,但在原始块中保留一个指针的情形。原始块中的指针是必需的,因为索引的ROWID项仍然指向原始位置。
二、分类:
表空间在oracle 10g中被分为三类:
(1)永久性表空间:一般保持基表、视图,过程和索引等的数据。System、SysAux、Users、Example表空间是默认安装的。
(2)临时性表空间:只用于保存系统中短期活动的数据,如排序数据等。
(3)撤销表空间:用来帮助回退未提交的事务数据,当然已提交了的数据在这里是不可以恢复的,若需要从备份技术中建立fash recovery area可以针对这样的问题解决。
当然一般不需要建临时和撤销表空间,除非你把它们转移其它磁盘中以提高性能。
三、目的:
通过表空间可以达到以下作用:
(1)管理:向上对不同用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户操作,对模式对象的管理。
向下可以将不同数据文件创建到不同的磁盘中,有利于管理磁盘空间,有利于提高I/O性能,有利于备份和恢复数据等。
但也会产生磁盘碎片在表空间下,当然是在数据文件的段下面。
 (2)性能:
在 定义表时,设置data-block参数,为频繁查询的外键关联的表定义cluster(群)放到统一表空间中, 对同一个表创建不同的分区(PARTITION BY RANG,PARTITION BY HASH,PARTITION BY LIST)放到不同的表空间中,等提高性能技术。
四、常用应用语句 (当然用EM可以快捷完成部分功能):
1.建立数据表空间
create tablespace myspce datafile ‘d:\oracle\myspace.dbf’ size 20m uniform size 128k
2.使用表空间
create  table mytable(A number(3)) tablespace myspace;
3.改变表空间的状态
表空间还有联机(online)、或脱机(Offline)属性、权限属性等,默认表空间创建时是online,rw属性的。在进行维护时要进行改变表空间状态操作,除SYSTEM、UNDOTBS、TEMP表空间外,表空间可以置为脱机(offline)。
(1) 使表空间脱机
alter tablespace myspace offline;
(2) 使表空间联机
alter tablespace myspace online;
4. 更改表空间读写权限
如果不希望在该表空间上执行insert/update/delete操作,那么可以将表空间修改为只读
alter tablespace myspace read only;
我们可以知道Scott.emp是在system这个表空间上,现在我们可以把system改成只读的,但是我们不会成功,因为system是系统表空间,如果是普通表空间,那么我们就可以将其设为只读的。
打开读写权限:
alter tablespace myspace read write;
5.查询表空间和表
 知道表空间名,显示该表空间包括的所有表
select * from all_tables where tablespace_name=’myspace’;
  知道表名,查看该表属于哪个表空间
select tablespace_name,table_name from user_tables where table_name=’emp’;
6. 删除表空间
drop tablespace myspace including contents and datafiles
记得:删除表空间时要连同它的数据文件和内容一同删除。
7. 扩展表空间
(1)增加数据文件
alter tablespace myspace add datafile ‘d:\test\morf001.dbf’ size 20m
(2)增加数据文件的大小
alter tablespace myspace ‘d:\test\morf01.dbf’ resize 200m;
这一要注意一点就是数据文件的大小不要超过500m
(3)设置文件的自动增长
alter tablespace 表空间名 ‘d:\test\morf01.dbf’ auto extend on next 10m maxsize 500m;
8.移动数据文件
有时,如果你的数据文件所在的磁盘损坏时,该数据文件将不能再使用,为了能够重新使用,需要将这些文件的副本移动到其它的磁盘,然后恢复。
下面以移动数据文件myspace.dbf为例来说明。
(1) 确定数据文件所在的表空间
select tablespace_name from dba_data_files where file_name=’d:\oracle\myspace.dbf’
(2)时表空间脱机
为了确保数据文件的一致性,将表空间转变为offline的状态
alter tablespace morf01 offline;
(3)使用命令移动数据文件到指定的目标位置
host move d:\oracle\myspace.dbf  f:\oracle\myspace1.dbf;
(4)执行alter tablespace命令
在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改
alter tablespace myspace rename datafile 'd:\oracle\myspace.dbf' to 'f:\oracle\myspace1.dbf';
(5)使表空间联机
在移动了数据文件后,为了使用户可以访问该表空间,必须将其转变为online状态
alter tablespace myspace online;
9.显示表空间信息
(1)查询数据字典视图dba_tablespaces,显示表空间的信息:
select myspace from dba_tablespaces;
(2)显示表空间所包含的数据文件
查询数据字典视图dba_data_files ,可显示表空间所包含的数据文件,如下:
select file_name,bytes from dba_data_files where tablespace_name=’表空间名’;

你可能感兴趣的:(oracle)