- 表空间和数据文件
- 管理表空间
- 管理表空间中的空间
表空间和数据文件
ORACLE的存储模型
一个表空间可以包括多个段,而且也可以由多个数据文件组成。也就是说,一个段可以分布在多个数据文件中,而任一数据文件可以包含多个段的全部或一部分。任何一个段可以仅存在于一个表空间中,但表空间可以将其均匀分布于构成表空间的所有文件中。
块:DB_BLOCK_SIZE
区间:是一个数据文件中一组连续编号的ORACLE块。这些区间可能位于构成表空间的任何或所有数据文件中。可以根据段的维度(区间根据每个段连续编号,从零开始)或数据文件的维度(每个区间在一个文件中,从某个ORACLE块编号开头)确定。
OS块小于ORACLE块
段,区间,块和行
DBA_SEGMENTS
段的类型:TABLE/INDEX/TYPE2 UNDO/ROLLBACK/TABLE PARTITION/INDEX PARTITION/LOBSEGMENT/LOBINDEX/LOB PARTITION/CLUSTER/NESTED TABLE
CLUSTER:将多个表反规范化为一个段
TABLE PARTITION:将表分为多个分区,分区将成为一个个的段,而表本身完全不是段:仅以分区的总和的形式存在。堆表的每个表分区在本身的表段中,成为堆表结构。这些段可能使用不同的表空间,这意味着可以将一个表分布到多个表空间中。
select tablespace_name,file_id,extent_id,block_id,blocks,bytes from dba_extents where owner='SAPR3' and segment_name="T" alter table TT allocate extent; alter table TT allocate extent storage (datafile 'filenmae'; select tablespace_name,file_name from dba_data_files where file_id=4; #DBA_TABLES 也可以查表空间,但只适用于非分区的表,不适用于每个分区都有自己的段而且可能位于不同表空间的分区表。分区允许将一个表分布到多个表空间中。
文件存储技术
本地文件系统
群集文件系统 OCFS (Oracle cluster file system)
原始设备
ASM: 只存储数据库文件,不能存储二进制文件。始终将ORACLE主目录保存在常规文件系统中。
select name,block_size*file_size_blks bytes from v$controlfile; select member,bytes from v$log join v$logfile using (group#); select name,bytes from v$datafile union all select name,bytes from v$tempfile;
管理表空间
创建表空间
Allocated Size / Space Used / Allocated space used / Allocated free space / status / datafiles / type / extend management / segment management
Status:Read and Write / Read only / offline
type : 永久表空间/临时表空间/UNDO
extent management :LOCAL
segment management : AUTO
Compression: Disabled / enabled on direct-path INSERT operation only / Enable on all operations
logging:YEs/ NO