oracle 表空间管理
2013-05-16 20:31
323 查看
Tablespace 管理方式有两种:(管理extent)
1 数据字典空间管理 dictionary managed tablespace
通过管理两个主要的数据字典表,UET$(Used EXtends) 和FET$(Free EXtends)来实现
在9i以后已淘汰
缺点:1 并发访问争用
2 产生大量redo undo
3 空间碎片
2 本地表空间管理 Local managed tablespace 默认是本地管理
位图管理
数据文件头部加入位图区域
extent management local
具体空间分配方式:
1 autoallocate ----allocation_type=system
2 uniform ----allocation_type=uniform
ALLOCATION_TYPE 这个值有3个选项:
1、system:一旦设定该值,next_extent将为空,只有extents值。该值是默认值。这个选项的最小是64K
2、 user:一旦设定该值,就允许我们可以控制next_extent了。只有两种情况出现users:一是该ts是数据字典管理的;另外一个是该ts是从 数据字典管理转移到local的(用dbms_space_admin.tablespace_migrate_to_local)
3、uniform:将标明所有的extent的大小将一致,temp表空间只能采用这个方式;以上两个情况的extent的大小将不一致
Segment 管理方式有两种:(管理Block) 默认是自动管理
1 MSSM(Manual Segment Space Management)
通过在segment的段头分配自由列表(freelist)来管理block
通过两个参数 pctfree pctused来管理block如何进出freelist
pctfree 值表示预留多少%的block空间用于更新
pctused 值表示低于这个值是,block会重新加入到freelist上
通过dba_tables,dba_indexes查看freelist,pctfree,pctused等参数的设置
2 ASSM(Auto Systemt Space Management)
通过在segment的段头分配位图(bitmap)来管理block
不再需要freelist
不在需要pctused,因为不需要从freelist上摘除block。
前面提到了数据文件上block1-2是数据头文件,block3-8是extent的位图。
block9-10是ASSM的block的一级和二级位图。
ASSM最大支持三级为图,但是一般非常难见到使用三级目录的
1.创建表空间
SQL> create tablespace test datafile '/u01/app/oracle/oradata/orc1/test.dbf' size 50m autoextend on next 1m maxsize unlimited extent management local segment space
management auto;
Tablespace created.
2:修改表空间名字
SQL> alter tablespace test rename to test1;
Tablespace altered.
3:为表空间增加数据文件
SQL> alter tablespace test1 add datafile '/u01/app/oracle/oradata/orc1/test1.dbf' size 10m;
Tablespace altered.
4:修改表空间数据文件大小及是否自动扩展
SQL> alter database datafile '/u01/app/oracle/oradata/orc1/test1.dbf' resize 50m ;
Database altered.
SQL> alter database datafile '/u01/app/oracle/oradata/orc1/test1.dbf' autoextend on next 1m maxsize 500m;
Database altered.
5:删除表空间
SQL> drop tablespace test1 including contents and datafiles;
Tablespace dropped.
表空间使用情况查询也可以从EM里查询:
a:检查当前用户空间分配情况
select tablespace_name,sum(extents),sum(blocks),sum(bytes) from user_segments group by tablespace_name
b:检查各用户空间分配情况
select owner,tablespace_name,sum(extents),sum(blocks),sum(bytes) from dba_segments group by owner,tablespace_name;
c:检查当前用户数据库实体空间使用情况
select tablespace_name,segment_name,segment_type, count(extent_id),sum(blocks),sum(bytes) from user_extents group by tablespace_name,segment_name,segment_type;
d:检查各用户空间使用情况
select owner,tablespace_name,count(extent_id),sum(blocks), sum(bytes) from dba_extents group by owner,tablespace_name;
e:检查数据库空间使用情况
select tablespace_name,count(extent_id),sum(blocks),sum(bytes) from dba_extents group by tablespace_name;
f:检查当前用户自由空间情况
select tablespace_name,count(block_id),sum(blocks),sum(bytes) from user_free_space group by tablespace_name;
g:检查数据库自由空间情况
select tablespace_name,count(block_id),sum(blocks),sum(bytes) from dba_free_space group by tablespace_name;
临时表空间和undo表空间:
SQL> create temporary tablespace temp1 tempfile '/u01/app/oracle/oradata/orc1/temp1.dbf' size 50m;
Tablespace created.
SQL> create undo tablespace undo22 datafile '/u01/app/oracle/oradata/orc1/undo22.dbf' size 50m;
Tablespace created.
改变数据库默认表空间和默认临时表空间:
select * from database_properties:可以查看数据库默认表空间和默认临时表空间
SQL> alter database default tablespace test;修改默认表空间
Database altered.
SQL> alter database default temporary tablespace temp1; 修改默认临时表空间
Database altered.
1 数据字典空间管理 dictionary managed tablespace
通过管理两个主要的数据字典表,UET$(Used EXtends) 和FET$(Free EXtends)来实现
在9i以后已淘汰
缺点:1 并发访问争用
2 产生大量redo undo
3 空间碎片
2 本地表空间管理 Local managed tablespace 默认是本地管理
位图管理
数据文件头部加入位图区域
extent management local
具体空间分配方式:
1 autoallocate ----allocation_type=system
2 uniform ----allocation_type=uniform
ALLOCATION_TYPE 这个值有3个选项:
1、system:一旦设定该值,next_extent将为空,只有extents值。该值是默认值。这个选项的最小是64K
2、 user:一旦设定该值,就允许我们可以控制next_extent了。只有两种情况出现users:一是该ts是数据字典管理的;另外一个是该ts是从 数据字典管理转移到local的(用dbms_space_admin.tablespace_migrate_to_local)
3、uniform:将标明所有的extent的大小将一致,temp表空间只能采用这个方式;以上两个情况的extent的大小将不一致
Segment 管理方式有两种:(管理Block) 默认是自动管理
1 MSSM(Manual Segment Space Management)
通过在segment的段头分配自由列表(freelist)来管理block
通过两个参数 pctfree pctused来管理block如何进出freelist
pctfree 值表示预留多少%的block空间用于更新
pctused 值表示低于这个值是,block会重新加入到freelist上
通过dba_tables,dba_indexes查看freelist,pctfree,pctused等参数的设置
2 ASSM(Auto Systemt Space Management)
通过在segment的段头分配位图(bitmap)来管理block
不再需要freelist
不在需要pctused,因为不需要从freelist上摘除block。
前面提到了数据文件上block1-2是数据头文件,block3-8是extent的位图。
block9-10是ASSM的block的一级和二级位图。
ASSM最大支持三级为图,但是一般非常难见到使用三级目录的
1.创建表空间
SQL> create tablespace test datafile '/u01/app/oracle/oradata/orc1/test.dbf' size 50m autoextend on next 1m maxsize unlimited extent management local segment space
management auto;
Tablespace created.
2:修改表空间名字
SQL> alter tablespace test rename to test1;
Tablespace altered.
3:为表空间增加数据文件
SQL> alter tablespace test1 add datafile '/u01/app/oracle/oradata/orc1/test1.dbf' size 10m;
Tablespace altered.
4:修改表空间数据文件大小及是否自动扩展
SQL> alter database datafile '/u01/app/oracle/oradata/orc1/test1.dbf' resize 50m ;
Database altered.
SQL> alter database datafile '/u01/app/oracle/oradata/orc1/test1.dbf' autoextend on next 1m maxsize 500m;
Database altered.
5:删除表空间
SQL> drop tablespace test1 including contents and datafiles;
Tablespace dropped.
表空间使用情况查询也可以从EM里查询:
a:检查当前用户空间分配情况
select tablespace_name,sum(extents),sum(blocks),sum(bytes) from user_segments group by tablespace_name
b:检查各用户空间分配情况
select owner,tablespace_name,sum(extents),sum(blocks),sum(bytes) from dba_segments group by owner,tablespace_name;
c:检查当前用户数据库实体空间使用情况
select tablespace_name,segment_name,segment_type, count(extent_id),sum(blocks),sum(bytes) from user_extents group by tablespace_name,segment_name,segment_type;
d:检查各用户空间使用情况
select owner,tablespace_name,count(extent_id),sum(blocks), sum(bytes) from dba_extents group by owner,tablespace_name;
e:检查数据库空间使用情况
select tablespace_name,count(extent_id),sum(blocks),sum(bytes) from dba_extents group by tablespace_name;
f:检查当前用户自由空间情况
select tablespace_name,count(block_id),sum(blocks),sum(bytes) from user_free_space group by tablespace_name;
g:检查数据库自由空间情况
select tablespace_name,count(block_id),sum(blocks),sum(bytes) from dba_free_space group by tablespace_name;
临时表空间和undo表空间:
SQL> create temporary tablespace temp1 tempfile '/u01/app/oracle/oradata/orc1/temp1.dbf' size 50m;
Tablespace created.
SQL> create undo tablespace undo22 datafile '/u01/app/oracle/oradata/orc1/undo22.dbf' size 50m;
Tablespace created.
改变数据库默认表空间和默认临时表空间:
select * from database_properties:可以查看数据库默认表空间和默认临时表空间
SQL> alter database default tablespace test;修改默认表空间
Database altered.
SQL> alter database default temporary tablespace temp1; 修改默认临时表空间
Database altered.
相关文章推荐
- Oracle中如何快速删除数据字典管理的表空间
- Oracle 自动段空间管理(ASSM:auto segment space management)-[转]
- [转自OCM白大师]ORACLE空间管理实验8:数据块格式分析--DUMP结合BBED
- oracle 区管理和段空间管理小结
- Oracle 11g笔记——表空间和数据文件的管理
- Oracle 11g下大文件表空间管理
- Oracle 自动段空间管理(ASSM:auto segment space management)
- Oracle 10g的自动段空间管理(ASSM)
- 【转】Oracle 数据库中改善的表空间管理
- oracle 表空间管理
- Oracle 10g的空间管理
- Oracle 11g R2 DBA 操作指南(13) 表空间与数据文件管理
- oracle 表空间管理命令
- Oracle 表空间管理
- Oracle的表空间的存储管理与优化技术
- Oracle 数据库表空间(tablespace)的管理
- ORACLE 表空间扩展方法和管理
- oracle 数据库表空间的管理
- oracle undo 表空间的监控管理
- Oracle 自动段空间管理(ASSM)