表空间基本概念
数据库可以划分为若干的逻辑存储单元,这些存储单元被称为表空间。
主要的表空间有:
(1)大文件表空间(Bigfile Tableplace)
大文件表空间,它只能包含一个大文件,但文件大小可以达到4GB个数据块。
大文件表空间可以是数据文件完全透明,即可以直接对表空间进行操作而不考虑底层的数据文件。
使用大文件表空间可以是表空间成为磁盘空间管理、备份和恢复等操作的主要单元,同时简化了对数据文件的管理。
注意:在创建表空间是,系统默认创建小文件表空间(Simallfile Tablespace),SYSTEM和SYSAUX表空间只能是小文件表空间。一个Oracle数据库中可能同时包含大文件和小文件表空间。
(2)系统表空间(System Tablespace)
每个Oracle数据库都包含一个SYSTEM表空间,当数据库创立时,SYSTEM表空间会自动创建。当数据库打开时,SYSTEM表空间始终在线。
SYSTEM表空间中包含整个数据库的数据字典表。
(3)辅助表空间(SYSAUX Tablespace)
数据库组件将SYSAUX表空间作为存储数据的默认位置,因此当数据库创建或升级时,SYSAUX表空间会自动创建,Oracle数据库服务器不允许删除SYSAUX表空间,也不能对其进行改名操作。
(4)还原表空间(Undo Tablespace)
每个数据库都可以包含多个undo表空间。
在自动撤销管理模式中,每个Oracle实例都指定了一个(且只有一个)undo表空间。撤销的数据在undo表空间中用undo区间来管理,undo区间有数据库自动创建并维护。
在Oracle中,可以对数据库的添加,修改和删除等操作定义在事物(Transcation)中。事物中的数据库是可以撤销的,当事物中的数据库操作运行时,此事物绑定在当前的undo表空间中的一个undo区间中。
事物中对数据库的改变被保存在undo表空间中,当执行回滚操作时,可以据此恢复数据。
(5)临时表空间(Temporary Tablespace)
如果系统表空间是本地的,则在创建数据库时至少要创建一个默认的临时表。如果删除所有的临时表空间,则SYSTEM表空间将被用作临时表空间。
(6)在线和离线表空间
除了 SYSTEM表空间外,数据库管理员可以将其他任何表空间设置为在线(Online)和离线(Offline)状态。无论数据库是否会被打开,都可以设置表空间的在线和离线状态。当数据库打开后,SYSTEM表空间必须始终在线,因为数据字典必须一直有效。
表空间通常都是在线的,这样表空间中的数据就可以对数据库用户有效。但是在数据库备份、维护、恢复时,数据库管理员可以将表空间设置为离线状态。当表空间处于离线状态时,Oracle不允许任何SQL语句访问数据库表空间中的数据。
当表空间离线后又重新在线时,此过程将被记录在SYSTEM表空间的数据字典中。如果表空间在关闭数据库时处于离线状态,则重新打开数据库时,他依然保持离线状态。DBA只能在创建表空间的数据库中设置表空间为在线状态,因为必须在数据库SYSTEM表空间中记录表空间的状态信息。
当发生特定的错误时,Oracle可以自动地将表空间切换到离线状态。例如:数据库的写进程DBWn多次试图写数据文件失败。
对表空间的简单操作:
1、查看表空间:
使用sys用户以SYSDBA用户的身份登录到SQLPLUS中,执行以下命令:
(1)查看视图结构:
desc V$tablespace;
如上图:
字段名 | 数据类型 | 说明 |
TS# | NUMBER | 表空间编号 |
NAME | VARCHAR2(30) | 表空间名称 |
INCLUDED_IN_DATABASE_BACKUP | VARCHAR2(3) | 表明该空间是否包含在完整数据库备份中 |
BIGFILE | VARCHAR2(3) | 是否为大文件表空间 |
FLASHBACK_ON | VARCHAR2(3) | 表明该表空间是否参与FLASHBACK DATABASE操作。 |
ENCRYPT_IN_BACKUP | VARCHAR2(3) | 指定备份数据库是否被加密。ON表示表空间级别启动数据库加密功能。OFF表示表空间级别关闭数据库加密功能。NULL表示在表空间级别未明确指定是否启动或关闭数据库加密功能。 |
CON_ID | NUMBER | 容器数据库编号。 |
(2)查看表空间信息
select * from v$tablespace;