表空间
介绍:
表空间用于从逻辑上组织数据库的数据
数据库逻辑上是由一个或是多个表空间组成的
表空间的作用:
1、控制数据库占用的磁盘空间
2、dba可以将不同数据类型部署到不同的位置。这样有利于提高i/o性能,同时利于备份和恢复等管理操作
Oracle数据库中表空间的处理方式
在数据库设计的时候,我们建议数据库管理员按如下顺序设置表空间。
第一步:建立Oracle用户表空间。在设计数据库的时候,首先需要设计表空间。我们需要考虑,是只建立一个表空间呢,还是需要建立多个表空间,以及各个表空间的存放位置、磁盘限额等等。到底设计多少个表空间合理,没有统一的说法,这主要根据企业的实际需求去判断。如企业需要对用户进行磁盘限额控制的,则就需要根据用户的数量来设置表空间。当企业的数据容量比较大,而其又对数据库的性能有比较高的要求时,就需要根据不同类型的数据,设置不同的表空间,以提高其输入输出性能。
第二步:建立Oracle用户表空间,并制定用户的默认表空间。在建立用户的时候,我们建议数据库管理员要指定用户的默认表空间。因为我们在利用CREATE语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表空间,显然,这并不是很合理。
另外要注意,不同的表空间有不同的权限控制。用户对于表空间A具有完全控制权限,可能对于表空间B就只有查询权限,甚至连连接的权限的都没有。所以,合理为用户配置表空间的访问权限,也是提高数据库安全性的一个方法。
一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空是一个用来管理数据存储逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
用户属于数据库实例的,在一个实例下不能同名用户。但在一oracle服务器,可以创建多个实例,只要你的机器配置够用就可以。因为一个实例启动起码需要100多兆内存的。所以在一oracle服务器上可以存在多个同名用户,他们是属于不同数据库实例,他们对应使用的表空间在不同的实例上。
建立表空间
CREATE TABLESPACE data01
DATAFILE ‘/oracle/oradata/db/DATA01.dbf’ SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k
删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
修改表空间大小
alter database datafile ‘/path/NADDate05.dbf’ resize 100M
移动表至另一表空间
alter table move tablespace room1;
一、建立表空间
CREATE TABLESPACE data01
DATAFILE ‘/oracle/oradata/db/DATA01.dbf’ SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k
二、建立UNDO表空间
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE ‘/oracle/oradata/db/UNDOTBS02.dbf’ SIZE 50M
#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02;
三、建立临时表空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE ‘/oracle/oradata/db/TEMP_DATA.dbf’ SIZE 50M
四、改变表空间状态
1.使表空间脱机
ALTER TABLESPACE game OFFLINE;
如果是意外删除了数据文件,则必须带有RECOVER选项
ALTER TABLESPACE game OFFLINE FOR RECOVER;
2.使表空间联机
ALTER TABLESPACE game ONLINE;
3.使数据文件脱机
ALTER DATABASE DATAFILE 3 OFFLINE;
4.使数据文件联机
ALTER DATABASE DATAFILE 3 ONLINE;
5.使表空间只读
ALTER TABLESPACE game READ ONLY;
6.使表空间可读写
ALTER TABLESPACE game READ WRITE;
五、删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
案例说明:
1、确定数据文件所在的表空间
select tablespace_name from dba_data_files where file_name=’d:/t01.dbf’;
2、使表空间脱机
a) 确保数据文件的一致性,将表空间转变为offline的状态
alter tablespace tangtao001 offline;
3、使用命令移动数据文件到指定的目标位置
host move d:t01.dbf c:t01.dbf;
4、执行alter tablespace命令
a) 在物理上移动了数据后,还必须执行alter tablespace命令对数据库文件进行逻辑修改
alter tablespace tangtao001 rename datafile ‘d:t01.dbf’ to ‘c:t01.dbf’;
5、使得表空间联机
a) 在移动了数据文件后,为了使用户可以访问该表空间,必须将其转变为online的状态
alter tablespace tangtao001 online;
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/7267.html