oracle 回滚段 内存结构,Oralce学习笔记(7)Oracle存储结构

Oralce学习笔记(7)

Oracle存储结构

1、段(Segments)的类型:

Table 常规表

Table partition

分区表

Cluster

群集表

Index 常规索引

Index-organized table 按索引有序组织的表

Index partition

索引分区

Undo segment

回滚段

Temporary segment 临时段

LOB segment

一种用于存储大对象数据类型的段

Nested table 嵌套表

Bootstrap segment

初始引导程序

sql>create table kong.test1 (id int) tablespace

kong

storage(initial 100k next 100k);

【注意】如果我们创建表空间或建立表空间下的段数据时不指定任何存储参数就会使用Oracle默认存储参数

Oracle默认存储参数=5倍 的blocks

块大小(5×db_block_size)。

存储参数优先级:Oracle defualt < Tablespaces

< Segment

2、段的Extend Allocation 分区扩展和Deallocation

分区释放

(1)段的Extend Allocation 分区扩展:

sql>create tablespace kong1 datafile

'd:\oracle\oradata\fox\kong1' size 10m;

sql>create table kong.test11(id int) tablespace

kong1;

创建表会自动分配到自己的初始分区(Create)。如:

sql>create table kong.test12(id int) tablespace

kong1 storage(initial 100k next 100k); //创建后自动分配到最初始分区100k

当初始分区用完以后需要申请空间扩展时,可以进行手工进行分配空间(Extend),也可以进行强制给段进行空间分配(Alter),但指定空间来源一定是原来段所在表空间的数据文件底下。例如:

【注意】段可以跨数据文件但是不能跨表空间。

sql>alter table kong.test12

allocate

extent(size 1m datafile 'd:\oracle\oradata\fox\kong')

;//注意:数据文件d:\oracle\oradata\fox\kong不是表空间KONG1的成员。

sql>alter table kong.test12

allocate

extent(size 1m datafile 'd:\oracle\oradata\fox\kong1');

//数据文件kong1一定是属于kong1表空间

(2)段的Extend Allocation 分区释放:

sql>drop table kong.test12; //删除表,空间被释放

sql>truncate table kong.test11; //清空表,空间被释放

sql>drop table

kong.test11; sql>alter table kong.authors deallocate unused;

//释放没有用掉的分区

sql>input keep 0

3、Database Block 块

块Block:I/O读写的最小单位。内存也是以块大小为单位。

sql> create tablespace kong2

datafile 'd:\oracle\oradata\fox\kong2.dbf' size 10m

blocksize 8k; //表空间块大小8192k

与配置的块大小不匹配。

sql>show parameter db //查看内存参数db_8k_cache_size

(8k高速缓存大小)没有指定,只指定了db_block_size:4096(4k)的内存默认分区大小。

【注意】Oracle支持多块大小的使用,在此之前必须设定相应的内存区域,即指定对应块大小的高速缓存区域,它在Database

Blocksize

在创建表空间时创建。DB_BLOCK_SIZE指定了默认块的大小。DB_CACHE_SIZE是为DB_BLOCK_SIZE服务的。

sql>alter system set db_8k_cache_size=10m ;

//没有足够的内存来增加高速缓存的大小

sql>alter system set db_cache_size=10m

;// 将内存区域收缩到10m

sql>alter system set

db_8k_cache_size=10m; //将8k缓存区域设置为10m.

Database Block Content 块内容:相当于将一个长方体从上到下切成三份: Header 头(Top)、Free

space 自由空间(middle)、Data 数据(Bottom)

原理:Top Down 从头顶部往下 ,Bottom up:从数据底部往上 进行压缩。压缩在中间剩余部分即是自由空间。

4、Block控制表空间的使用:

(1)BLOCK管理参数: INITRANS\MAXTRANS、PCTFREE\PCTUSED

INITRANS\MAXTRANS

初始值(1)\最大值(255)事务处理数量,用于控制块中预留的Transaction空间。

PCTFREE 用来预留多少空间来满足将来的数据改变,实现行移植(Row

migration),成倍的增加了I/O量,对系统是有性能影响的。PCTUSED

块使用率控制,控制块使用最小的百分比(如在数据删除过程中,删除到还剩多少空间时可以通告Oracle该块可以继续使用)

(2)Data Block 管理2种方式:自动段空间管理、手工配置Block管理

自动段空间管理:段中自动管理自由空间free

space;通过使用位图段来跟踪当前段中自由的(free)和已用的(used)的block空间(相反,手工管理是使用free

lists 空闲列表来管理)

好处:易于管理、更好的空间利用率,更好的性能,

注意:如果包含大的数据对象(LOBs)则不可以使用自动段空间管理的方式。

CREATE TABLESPACE data02

DATAFILE '/u01/oradata/data02.dbf' SIZE 5M

EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K

SEGMENT SPACE MANAGEMENT AUTO;

sql>create tablespace kong3

datafile

'd:\oracle\oradata\fox\kong3.dbf' size 10m

extent

management local uniform size 1m

segment

space management auto;

注意:表空间建立后,所有建立在上面的数据段(表或索引)会自动继承这些特性。

sql>create table kong.test11(id int) tablespace

kong3; //此时test11表的空闲列表没有指定,它是本地管理的。

手工配置Block管理: 使用参数:PCTFREE、PCTUSED、FREELIST (在以前的Oracle8i版本中这是唯一的方法)

5、获取存储结构的相关信息(数据字典视图)

多对一关系:

逻辑上:Used extents 已用区记录了每个数据对象 (DBA_EXTENTS)

> 段Segments(DBA_SEGMENTS) >

表空间(DBA_TABLESPACES)

物理上:Free extents

自由空间(DBA_FREE_SPACE)> 数据文件Datafiles(DBA_DATA_FILES)

> 表空间(DBA_TABLESPACES)

sql>conn sys/admin1@fox as sysdba

sql>select * from dba_tablespaces;

sql>select * from dba_segments; //包括回滚段、临时段等

sql>select * from dba_extents; //每一个数据段记录(表、索引等)

sql>desc dba_extents; //列出dba_extents的参数

sql>select sum(bytes) from dba_extents where

owner='KONG' and segment_name='AUTHORS';

//查出表空间为"KONG",段为"AUTHORS"的数据对象所占用的总大小,显示为65536(64k)

sql>select * from dba_free_space; //查出自由空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值