Oracle表空间

来源:互联网 发布:日本邪教知乎 编辑:程序博客网 时间:2024/05/08 20:12

表空间就是多个文件集合起来起的名字。应该表空间是由一个或者多个文件组成。表空间的大小就是三个物理文件的总和。

在建立表的时候,是将表建立在表空间上面。那么oracle就会将表里面的数据存放在表空间里面的一个文件或者多个文件里面。

这样的好处就是,表建立在表空间里面,因为数据文件不可以无穷大,假设最大2G,那么随着表的容量的增大,那么由于数据文件只能存储最大的容量为2G,那么为了解决这个问题可以向表空间里面添加文件来扩大表空间的容量。

 

SQL> select tablespace_name from dba_tablespaces;

 

TABLESPACE_NAME

------------------------------

SYSTEM

SYSAUX

UNDOTBS1

TEMP

USERS

 

系统表空间system存放的是系统的信息,存放oracle自身的信息。Oracle自身的信息存放在数据字典里面,数据字典是一些表,这些表放在system里面。也就是system里面存放的是数据字典的信息。也就是oracle的系统信息。

 

Sysauxsystem的辅助表空间,也是存放着一些系统信息,但不是那种特别重要的信息。但是systemsysaux必须同时在线,否则数据库启动不了。

 

Undo表空间是系统表空间,oracle要改变一个数据块,oracle就将这个数据块改变前的数据放在undo表空间里面。

 

Tmp表空间里面放的是临时的数据,特别是oracle在排序的时候,如果pga空间不够就会用到tmp表空间。Tmp表空间丢了可以重建。

 

系统表级别空间包括sytemsysauxundotmp这四个表空间。

 

Users表空间是oracle默认创建的表空间,是来存放用户数据的。注意前面四个系统表空间不存放用户数据。实际生产的过程当中一般会建立很多表空间而不会去使用users表空间。

 

SQL> select file_name,tablespace_name from dba_data_files;

 

FILE_NAME

--------------------------------------------------------------------------------

TABLESPACE_NAME

------------------------------

/u01/oracle/oradata/users01.dbf

USERS

 

/u01/oracle/oradata/undotbs01.dbf

UNDOTBS1

 

/u01/oracle/oradata/sysaux01.dbf

SYSAUX

 

 

FILE_NAME

--------------------------------------------------------------------------------

TABLESPACE_NAME

------------------------------

/u01/oracle/oradata/system01.dbf

SYSTEM

 

Oracle是通过不同的表空间,不同的表空间存放不同的数据,进而方便我们管理数据。


可以看到一个数据库是由一个或者多个表空间组成,一个表空间是由一个或者多个数据文件组成。

一个方案就是一个用户,一个数据库由多个用户组成。每个用户下面都有表,oracle是通过用户将段组织起来。

 

有时候数据管理员需要将表空间设置为脱机状态,以进行数据库的维护。

这些情况包括:

1.在数据库处于open状态下移动数据文件。

2.在数据库处于open状态下恢复一个表空间或数据文件。

3.执行对表空间的脱机备份。

4.是一部分数据不可以访问,另一部分可以访问。

以下的表空间是不可以设为脱机状态:

1.系统表空间

2.上面有回滚/还原段的表空间

3.默认临时表空间

 

设置表空间脱机联机的示例如下:

为谨慎起见还是要先查询一下目前的状态。


要使用rman备份,可以先将users表空间脱机,可以使用

Alter tablespace users offline;

如果备份完毕之后可以使用alter tablespace users online;

 

   了保证表空间数据完整性,比如:进行数据库备份与还原操作、历史数据的完整性保护等情况下,可以将表空间设置到只读模式。只读表空间中的表不能进行INSERTUPDATEDELETE等操作,但是可以删除数据库对象。

需要dba权限的用户登录才可以进行一下操作:

 SQL> select tablespace_name,status from dba_tablespaces;

 

 SQL> alter tablespace demo read only;

 

 SQL> select tablespace_name,status from dba_tablespaces;

 

 SQL> alter tablespace demo read write;

 

 SQL> select tablespace_name,status from dba_tablespaces;



原创粉丝点击