Oracle-表空间的一些常用操作
精选
原创
©著作权归作者所有:来自51CTO博客作者小宝大人的原创作品,请联系作者获取转载授权,否则将追究法律责任
1.常用视图
Oracle-查询表空间使用率
Oracle-视图之DBA_TABLESPACES
Oracle-视图之DBA_DATA_FILES
Oracle-视图之DBA_FREE_SPACE
Oracle-视图之DBA_TEMP_FILES
Oracle-视图之V$TEMP_EXTENT_POOL
DBA_TABLES
DBA_TABLESPACES
DBA_DATA_FILES
DBA_FREE_SPACE
DBA_TEMP_FILS
V$TEMP_EXTENT_POOL
2.创建表空间
##默认情况下,表空间关闭自动扩展
CREATE TABLESPACE DEFAULT_TBS DATAFILE '+DATA' SIZE 100M;
##非ASM磁盘组,直接使用文件系统磁盘空间
CREATE TABLESPACE DEFAULT_TBS DATAFILE '/u01/app/oracle/oradata/ora19cbaoyw/baoyw01.dbf' SIZE 100M;
##创建普通表空间
CREATE TABLESPACE DEFAULT_TBS DATAFILE '+DATA' SIZE 100M AUTOEXTEND ON;
##创建临时表空间
CREATE TEMPORARY TABLESPACE DEFAULT_TBS TEMPFILE DATAFILE '+DATA' SIZE 100M AUTOEXTEND ON;
##创建UNDO表空间
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '+DATA' SIZE 100M AUTOEXTEND ON;
3.修改表空间状态
##修改表空间的状态为 ONLINE
##当表空间的状态为ONLINE时。才能访问表空间中的数据
ALTER TABLESPACE DEFAULT_TBS ONLINE;
##修改表空间状态为 离线 状态
ALTER TABLESPACE DEFAULT_TBS OFFLINE PARAMETER;
##修改表空间状态为 READ ONLY 只读
ALTER TABLESPACE tablespace_name READ ONLY;
##修改表空间状态为 READ WRITE 状态
##注意:改动表空间的状态为READ WRITE,也须要保证表空间处于ONLINE状态
ALTER TABLESPACE tablespace_name READ WRITE。
4.修改表空间
##新增数据文件
##默认情况下,数据文件关闭自动扩展
ALTER TABLESPACE DEFAULT_TBS ADD DATAFILE '+DATA' SIZE 100M;
##或者
ALTER TABLESPACE DEFAULT_TBS ADD DATAFILE '/u01/app/oracle/oradata/ora19cbaoyw/baoyw02.dbf' SIZE 100M;
##修改数据文件大小
##假如,数据文件的FILE_ID是98
ALTER DATABASE DATAFILE 98 RESIZE 200M;
##或者
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ora19cbaoyw/baoyw02.dbf'
##注意:一般不建议修改系统表空间的自动扩展为ON
##关闭数据文件的自动扩展
ALTER DATABASE DATAFILE 98 AUTOEXTEND OFF;
##开启数据文件的自动扩展
ALTER DATABASE DATAFILE 98 AUTOEXTEND ON;
##修改数据文件的状态 在线|离线
ALTER DATABASE DATAFILE file_name ONLINE|OFFLINE;
数据文件的大小受所在磁盘空间大小的限制。
##注意:重命名表空间的名称,不会影响到表空间中的数据
##注意:系统表空间system与sysaux的名称,不建议重使名,否则你懂的
##重命名表空间
ALTER TABLESPACE DEFAULT_TBS RENAME TO new_tablespace_name;
##删除表空间,包含全部数据库对象和物理文件
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
5.大文件表空间
大文件表空间是Oracle 10g引入的一个新表空间类型,主要用于解决存储文件大小不够的问题。与普通表空间不同的是,大文件表空间仅仅能支持唯一一个数据文件或暂时文件,而普通表空间则能够最多相应1022个数据文件。
官方文档是这样描述的(翻译):
BIGFILE | SMALLFILE
一个大文件表空间仅包含一个数据文件或临时文件,最多可包含大约 40 亿 (232) 个块。对于具有 32K 块的表空间,单个数据文件或临时文件的最小大小为 12 兆字节 (MB),对于具有 8K 块的表空间,其最小大小为 7MB。对于具有 32K 块的表空间,单个数据文件或临时文件的最大大小为 128 TB,对于具有 8K 块的表空间,其最大大小为 32TB。
32k -> 12mb
8k -> 7mb
32K ->> 128TB
8K ->> 32TB
smallfile 表空间是传统的 Oracle 表空间,可以包含 1022 个数据文件或临时文件,每个文件最多可以包含大约 400 万 (222) 个块。
如果省略此子句,则 Oracle 数据库使用为数据库设置的永久或临时表空间的当前默认表空间类型。如果您为永久表空间指定 BIGFILE,则默认情况下,数据库会创建一个本地管理的表空间,并具有自动的段空间管理。
对大文件表空间的限制。
您可以在 DATAFILE 子句中仅指定一个数据文件或在 TEMPFILE 子句中指定一个临时文件。
##创建大文件表空间
CREATE BIGFILE TABLESPACE default_tbs DATAFILE '+DATA'SIZE 100M;
##查看大文件表空间
SELECT tablespace_name, bigfile FROM DBA_TABLESPACES;
关于表空间的更详细说明,请查阅官方文档:CREATE TABLESPACE SET (oracle.com)