设为首页 收藏本站
查看: 807|回复: 0

[经验分享] oracle学习之6管理对象空间

[复制链接]

尚未签到

发表于 2016-7-22 09:10:24 | 显示全部楼层 |阅读模式
管理对象空间
 
1)段
段用于存储特定对象的所有数据,它是由一个或多个区组成。当建立表、索引和簇等对象,oracle会为这些对象分配存储空间,以存放它们的数据信息。为这些对象所分配的存储空间被称为段。在一个表空间上可以包含一个或多个段,一个段只能存放在一个表空间。
Ø  表段table:表段用于存储表的所有数据
Ø  表分区段table partition:表分区段用于存储分区表某个分区的数据,每个分区对应一个                                   表分区段。通过使用分区选项,可以将一张大表的数据部署到多个不同的分区段中,从而降低I/O次数,最终提高I/O性能。
Ø  簇段cluster:簇段用于存储簇表的数据,其名称与簇名相同。
Ø  索引段index:索引段用于存储索引的数据,其名称与索引名完全相同。
Ø  索引分区段index partition:索引分区段用于存储分区索引某个分区的数据
Ø  索引组织表段index-organized table:索引组织表是以B*树结构来组织数据的。
Ø  undo段:undo段用于存放事务所修改数据的旧值。
Ø  临时段temporary segment:临时段用于存放排序操作所产生的临时数据。
执行以下操作会被放到临时段中:
create index
select ......order by
select distinct...
select ...group by
select..union
select...intersect
select...minus
Ø  lob段: lob段用于存储lob列的数据,如文献、图像、音频。
Ø  嵌套表段nested table:嵌套表段用于存放嵌套表类型列的数据。
Ø  根引导段cache:根引导段用于初始化数据字典高速缓存,因此也被称为cache段。
 
1)  显示段信息
Ø  显示段类型:
a)显示数据库包含的所有段类型:
select distinct segment_type from dba_segments
Ø  建立表、索引和簇时,oracle会为这些对象分配相应的段,并且将段的信息记载到数据字典中。
select tablespace_name,extents,bytes from dba_segments
where ower=’scott’ and segment_name=’emp’
tablespace_name 用于标识段所在表空间,extends用于标识段所包含区个数,bytes用于标识段尺寸,owner用于标识段的所有者,segment_name用于标识段名。
2)  存储参数
a)initial:initial用于指定为段所分配的第一个区的尺寸。
当在本地管理表空间上建立数据库对象时,通过使用initial参数和区尺寸可以确定段的初始尺寸。确定段初始尺寸的方法
create table t1(cola INT) tablespace user01 storage(initial 500k);
其中tablespace选项用于指定段所在表空间,storage用于指定段的存储参数,
initial用于指定段的初始尺寸
a)  next:对于字典管理表空间来说,next用于指定为段所分配的第二个区的尺寸。
 
4)显示区信息
Ø  显示已分配区
select extents_id,file_id,block_id,bytes from dba_extends
where owner=’sys’ and segment_name=’t1’;
extent_id用于标识区编号(0:表示第0个区),file_id用于标识区所在的文件号,
 block_id用于标识区的起始块号,bytes用于标识区的尺寸。
 
Ø  显示空闲区
当在表空间上建立数据对象(表、索引和簇)时,oracle会在表空间的剩余空间中为相应段分配空间。当段不足以容纳更多数据时,oracle会通过分配区来扩展段。
例:显示user01表空间剩余空间为例
select sum(bytes) from dba_free_space where tablespace_name=’user01’
 
 
3)  管理数据块空间
数据块也被称为oracle块,它是oracle在数据文件上执行I/O操作最小单位。
Ø  PCTFREE
该参数用于指定在数据块内为update操作所预留空间的百分比,默认值为10
该参数有效值为0~99,但PCTFREE和PCTUSED总和不能超过100.在数据块达到
PCTFREE之前,插入新行和块头扩展都可以使用相应的剩余空间。
 
假定PCTFREE为20,那么当剩余空间超过20%时,insert操作可以使用数据块的剩余空间;当剩余空间低于20%时,insert操作将不能使用该部分空间,这些剩余空间是为update操作保留的。
 
参数PCTFREE的原则如:
a)使用小的PCTFREE可以提高update性能,如果对象update操作很少,应该使用较小的pctfree。
b)使用大的PCTFREE可以提高update性能,如果对象的update操作非常频繁,应该使用较大的PCTFREE.
 
Ø  PCTUSED
该参数用于指定将数据块标记为可重用块的已用空间最低百分比,默认值为40.该参数有效值为0~99,但PCTFREE和PCTUSED总和不能超过100.当数据块已经达到PCTFREE时,该数据块将不能被插入数据,只能删除了数据块的部分数据,并且数据块已用空间低于PCTUSED时,该数据块才能重新插入数据。
 
Ø  INITRANS
INITRANS用于指定初始事务入口个数,设置了该参数后,oracle会在数据块的块头上为每个事务入口预留相应的空间。INITRANS设置越大,数据块的剩余空间越少,当INITRANS预留的空间被用心之后,oracle会从剩余空间中分配更多的空间,并且这些空间会变为块头空间永久部分。
 
5)使用块空间参数
建立数据对象(表、索引和簇)时,可以指定块空间参数PCTFREE PCTUSED和INITRANS。
a)  建立对象时指定块空间参数
SQL>create cluster dept_emp_clu(deptno number(3))
pctfree 20 pctused 40 initrans 4;
 
   SQL>create table deartment (deptno number(2),dname varchar2(10))
       pctfree 20 pctused 40 initrans 4;
 
   SQL>create index pk_deptno on department(deptno)
       pctfree 20 initrans 4;
 
b)  改变对象的块空间参数
建立了数据对象后,如果空间参数不适合,用户可以使用alter命令修改块空间参数,索引cptfree参数不能修改。
SQL>alter cluster dept_emp_clu pctfree 30 pctused 40 initrans 4;
SQL>alter table department pctfree 30 pctused 40 initrans 4;
SQL>alter index pk_deptno initrans 4;
 
4)  显示块空间参数
a)  建立簇时,可以指定块空间参数。如果不指定块空间参数,oracle会自动为相应参数提供默认值。通过查询dba_clusters,可以取得簇的块空间参数。
SQL>select pct_free,pct_used,ini_trans,maxtrans
           from dba_clusters where owner=’system’ and cluster_name=’dept_emp_
           clu’;
b)  显示表的块空间参数
SQL>select pct_free,pct_used,ini_trans,max_trans
from dba_tables
where owner=’system’ and table_name=’department’
 
c)  显示索引的块空间参数
SQL>select pct_free,ini_trans,max_trans
from dba_indexes
where owner=’system’ and index_name=’pk_deptno’;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-247632-1-1.html 上篇帖子: ORACLE SQL性能优化38点总结 下篇帖子: ORACLE SQL语句优化总结二
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表