前言
表空间是 Oracle 特有的一种逻辑结构,是管理和组织 Oracle 数据文件一种方式,一个Oracle 数据库能够有一个或多个表空间,而一个表空间则对应一个或多个物理的数据库文件。Oracle 的表空间分为***空间和临时表空间,同时又分为 smallfile tablespace和 bigfile tablespace。表空间管理是 Oracle dba的一项重要日常工作。
今天小编就从***表空间管理和临时表空间管理两个维度,详细介绍 Oracle表空间管理的具体操作。
一、***表空间管理
1. 创建表空间
参数说明:
- EXTENT MANAGEMENT LOCAL AUTOALLOCATE:区大小由系统自动分配。
- BLOCKSIZE 8K:块大小为8K。
- SEGMENT SPACE MANAGEMENT AUTO:段管理是自动的。
- FLASHBACK ON:开启闪回。
2. 修改表空间
(1) 修改数据文件大小
- SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/TSH1/users01.dbf'
- RESIZE 10M;
(2) 增加表空间数据文件
- ALTER TABLESPACE USERS ADD DATAFILE '/u01/app/oracle/oradata/TSH1/users02.dbf' SIZE 20M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED;
注:日常工作中建议通过增加数据文件的方式给表空间扩容,因为对于在线业务系统来说,通过修改数据文件大小的方式,对业务会产生一定的影响。
3. 重命名表空间
- 设置表空间脱机
- SQL> ALTER TABLESPACE USERS OFFLINE NORMAL;
- $cp /u01/app/oracle/test01.dbf /u02/app/oracle/test01.dbf
- SQL> ALTER TABLESPACE USERS RENAME DATAFILE
- '/u01/app/oracle/oradata/TSH1/users01.dbf'
- TO
- '/u02/app/oracle/oradata/TSH1/users01.dbf'
- SQL> ALTER TABLESPACE USERS ONLINE ;
4. 设置表空间只读
- 设置表空间只读
- SQL> ALTER TABLESPACE USERS READ ONLY;
- SQL> ALTER TABLESPACE USERS READ WRITE;
5. 设置表空间脱机、联机
- 设置表空间脱机
- SQL> ALTER TABLESPACE USERS OFFLINE NORMAL;
- SQL> ALTER TABLESPACE USERS ONLINE;
6. 删除表空间
- SQL> DROP TABLESPACE USERS INCLUDING CONTENTS AND DATAFILES;
7. 修改表空间为默认***表空间
- 修改表空间为默认***表空间
- SQL>ALTER DATABASE DEFAULT TABLESPACE users;
- SQL>SELECT property_value from database_properties where property_name=’DEFAULT_PERMANENT_TABLESPACE’;
二、临时表空间管理
1. 创建临时表空间
- SQL> CREATE TEMPORARY TABLESPACE TEMP TEMPFILE
- '/u01/app/oracle/oradata/TSH1/temp01.dbf' SIZE 31M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
- EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
参数说明:EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M:区管理为本地管理,且区大小为1M。
2. 修改临时表空间
- SQL> ALTER DATABASE TEMPFILE '/u01/app/oracle/oradata/TSH1/temp01.dbf'
- RESIZE 60M;
3. 删除临时表空间
- SQL> DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;
4. 临时表空间组管理
(1) 创建临时表空间组
- SQL> CREATE TEMPORARY TABLESPACE TEMP TEMPFILE
- '/u01/app/oracle/oradata/TSH1/temp01.dbf' SIZE 31M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
- TABLESPACE GROUP tmpgrp1;
说明:
增加一个名为tmpgrp1的临时表空间组。
(2) 给临时表空间组增加表空间
- SQL> ALTER TABLESPACE temp02 TABLESPACE GROUP tmpgrp2;
(3) 将一个组设置为默认临时表空间
- SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tmpgrp1;
表空间管理涉及的视图
为了管理ORACLE数据库的表空间,要熟悉几个关键的字典视图:
- DBADATAFILES
- DBA_TABLESPACES
- DBAFREESPACE
- DBA_SEGMENTS