免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: smalltom30
打印 上一主题 下一主题

concepts 11.1g 小译 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2012-01-15 11:25 |只看该作者
本帖最后由 smalltom30 于 2012-01-15 14:47 编辑

页码 : Page 2-12

# dba 可以使用这个语句来重新分配没有使用过的区
ALTER TABLE table_name DEALLOCATE UNUSED;
# oracle会周期性地对回滚段中的一个或是多个区进行重新分配,前提是这个段指定了OPTIMAL size
当区变成空闲时,oracle会修改这个数据文件的bitmap(本地管理)或是更新数据字典(字典管理),表明这个被回收的区是可用的,这些回收的区块中的任何数据将变成 不可读
下面分几个小节来介绍:
# 非cluster表中的区
#  cluster表中的区
#  物化视图及它们logs中的区
# 索引中的区
#  临时段中的区
# 回滚段中的区
……………………………………..
@非cluster表的区
除非把非cluster表truncate掉,不然这个对象包含的原来的那些block将一直保留,oracle在插入新行到块中时要保证这个块中有足够的空间.即使是把这个表中的所有行都 delete了,oracle也不会把那些块收回给这个表空间中的其他其他对象使用
在drop了非cluster表后,当其他的区需求free spcace,这个空间可以被回收,oracle
将回收这个表中的所有区及其在同一表空间中的索引段,这些被回收的区都将被标记为可用,但只有同一表空间中的其他对象将可以使用到这些区
字典管理的表空间,当一个段请示一个区大于目前可用的那些区,oracle将合并邻近那些被回收得来的那些区去组成一个更大的区,这叫做coalescing extents.但本地管理表空间不使用coalescing extents.因为所有的邻近的free space都是可以用来进行新区分配的,不管这个新区是不是回收得来的
@ clusters表中的区
cluster表在创建的clusters数据段中存储信息,如果dorp了clusters中的一个表,数据段将保留给这个clusters中的其他表,且没有区被重新分配,但可以truncate clusters(除了hashlcusters)去释放区

论坛徽章:
0
42 [报告]
发表于 2012-01-15 15:20 |只看该作者
页码 : Page 2-13

@物化视图及它们logs中的区
区重新分配方式与tables 和 clusters的相同
@索引中的区
只要索引存在,分配给索引段的那些区就会一直保留,只有当索引或它相关的表或是cluster被drop时,oracle才会回收区给该表空间的其他对象使用
@临时段中的区
当oracle完成了一个需求临时段的语句的执行后,oracle自动地drop这个临时段并返回当时分配给这个段的那些区给相应的表空间,单个的排序分配它自己的临时段在一个用户语句指定的临时表空间
对于多重排序,可使用指定的专用于排序的临时表空间中的排序段,这些排序段是实例一次性进行分配的,在排序完后不会被返还,但会保留给其他的多重排序使用
一个临时表中的临时段包含单个事务或会话相关的多个语句的数据,oracle 会在事务或会话结束时drop这个临时段,并返还分配给这个段的区给该表空间
@回滚段中的区
Oracle会定期地去检查回滚段,看是否增长超过了它优化的大小(超过了很多个区),如果是,oracle会自动地从回滚段中重新分配一个或是多个区出来
2.4 段
段是表空间中一组包含区的数据逻辑存储结构,如,每个表,oracle分配了一个或是多个区去组成这个表的数据段,以及每个索引,oracle分配一个或是多个区去组成索引段
这节分这几点来介绍:
# 数据段
# 索引段
# 临时段
#  Undo Segments 和Automatic Undo Management

论坛徽章:
0
43 [报告]
发表于 2012-01-15 15:48 |只看该作者
页码 : Page 2-14
@数据段
一个单个的数据段包含以下对象的所有数据:
# 非分区或非clustered的表
# 分区表中的一个分区
# cluster表
当在create语句中创建table or cluster时,oracle就创建了数据段
table or cluster使用的存储参数决定了这个数据段的区是如何分配的,可以在相关的CREATE or ALTER中直接设置它们的存储参数它们的存储参数影响数据的检索和对象相关的数据段的存储
@ 索引段
对于一个非分区索引,有一个单独的索引段去保存数据
对于一个分区索引,每一个分区有一个单独的索引段去保存数据
在CREATE INDEX语句中可以指定Oracle给索引或是分区索引创建索引段.(这个表对应的段与索引相关的段不必出现在同一个表空间中)存储参数的设置直接影响了数据检索与存储的有效性
@临时段
当处理一个查询时,oracle通常需要临时工作区供sql解析与执行,oracle自动地分配的这个磁盘空间叫临时段,很典型的就是,排序时所使用到的临时段.oracle不会创建一个段如果排序操作可以在内存中完成或是如果oracle找到其他的方式用索引去执行这个操作
这节包含了以下部分:
#  临时段需求时的操作
# 临时表和它们的索引中的段
# 临时段是怎么样分配的

论坛徽章:
0
44 [报告]
发表于 2012-01-16 19:33 |只看该作者
页码 : Page 2-15
日期:2012.1.16
## 什么时候需要临时段
下面的语句有时需要使用到临时段:
CREATE INDEX
SELECT ... ORDER BY
SELECT DISTINCT ...
SELECT ... GROUP BY
SELECT . . . UNION
SELECT ... INTERSECT
SELECT ... MINUS
………
一些非索引的join和相关连子查询需要使用到临时段,如,一个包含a DISTINCT clause, a GROUP BY, and an ORDER By的查询,可能需要多达两个的临时段
## 临时表和它们的索引中的段
在事务或会话期间要做用临时表,而oracle则会分配临时段给这些临时表及基于临时表创建的索引使用
## 临时段是怎么样分配的
Oracle在针对查询与临时表这两种方式分配临时段是不一样的
###给查询分配临时段
在用户会话的语句执行期间,Oracle会按需分配临时段给用户指定的临时表空间,这个临时表空间是用户通过CREATE USER 或是ALTER USER语句中带的TEMPORARY TABLESPACE子名指定的
注:不能指定一个永久表空间作为用户的临时表空间
如果没有指定临时表空间给用户,默认的临时表空间就是系统表空间,这个表空间默认的存储特性决定了临时段中的区是如何分配的,当语句完成时,oracle会自动地drop这些临时段
因为临时段的分配与重新分配十分频繁,所以创建至少一个指定的表空间用来分配临时段,也可以将I/O分布在disk设置上,这样可以避免系统或是其他拥有临时段的表空间碎片化

论坛徽章:
0
45 [报告]
发表于 2012-01-16 19:37 |只看该作者
本帖最后由 smalltom30 于 2012-01-17 09:43 编辑

页码 : Page 2-16
注:当系统表空间是本地管理的时,在建库时必须指定一个默认的临时表空间,一个本地管理的系统表空间不能被用于临时存储
Oracle不会把在排序操作中产生的对临时段的改变作为条目记载到redo中去,但对临时段空间管理的操作除外
###给临时表和索引分配临时段
当第一个inserti into表被指定时,oracle就分配段给一个临时表,(这也可能是一个被create table as 产生的内部insert操作)first insert 到一个临时表分配了段给这个表及表的索引,给索引创建root页,并分配一些lob段
哪个用户创建了临时表,那就在对应的临时表空间中分配
Oracle 在事务结束时drop事务指定的临时表临时段,如果有其他的事务会话共享了这个临时表的使用,那这个段将仍为这些数据保留下来
@Undo Segments 和Automatic Undo Management
Oracle保存了一些信息用于回滚数据库更改,这些记录由事务活动组成,统称为undo,undo存储在undo 表空间中的undo段中,oracle使用undo去做这些事:
# 回滚一个激活的事务
# 恢复一个中止的事务
# 提供读一致性
# 从逻辑错误中恢复
ROLLBACK参数指定了db使用undo信息去回滚没有提交的事务,在db恢复期间,db使用undo记录去回滚存在于redo中的那些没有提交的更改到数据文件中,当用户在同一时间去访问并更改同一份数据, 通过undo记录维护数据前镜像就可以提供了读一致性
Oracle提供了完整的自动化机制,称为自动撤销管理,用来管理undo信息与空间,在这种管理模式下,对于所有当前的会话,oracle都会自动地管理undo表空间中的undo段和空间

论坛徽章:
0
46 [报告]
发表于 2012-01-17 11:04 |只看该作者
页码 : Page 2-17
日期:2012-1.17
自动撤销管理消除了回滚段管理的复杂性,另外系统自动调节去提供最佳的回滚信息以满足长时间查询语句运行对undo信息的需求, 自动撤销管理对于新装的db是默认打开的,安装进程会自动地创建一个undo表空间
Oracle有一个Undo Advisor,用来帮忙自动建立undo环境
这节包括以下内容:
# 手动undo管理
# undo 配额
# 自动undo的保持
……..
## 手动undo管理
Db也可以配置成手动undo管理模式,如果要变成自动的,必须先创建一个自动undo表空间且改变一个初始化参数,如果db是9i或是之后的版本,需要去变成自动的,可以参考Oracle
Database Upgrade Guide for instructions
注:回滚段空间管理非常复杂,oracle建议使用自动undo管理
# undo 配额
在自动undo管理,系统利用专用的事务实现对undo段的控制,并且控制undo段空间的分配,一个病态的事务将消耗巨大的undo空间,因此系统将不能正常地运行, Resource Manager可以指定UNDO_POOL来明确地控制大型事务,让dba把用户集合放入consumer groups,并给每组指定最大的undo空间的限制,当一个组达到了这个限制值时,组用户将不能做更多的更新,直到undo 空间被其他的事务成员释放出来
默认的UNDO_POOL是无限的,所以dba可以使用UNDO_POOL对特定的用户进行限制
# 自动undo的保持
当事务commit,undo数据将不再用于rollbackak或是事务恢复目的,但是,对于一致性读,长时间的查询可能需要老的undo信息,因为老的undo信息可以产生老的数据镜像块

论坛徽章:
0
47 [报告]
发表于 2012-01-17 11:06 |只看该作者
页码 : Page 2-18
此外,几个Flashback特性的实现也同样依靠这些老的undo信息,基于这些原因, 老的undo信息保存得越长久将越有利,如果undo表空间有足够的空间用于新事务,那老的undo信息将会得到保存,当undo表空间变得紧缺时,db将会去覆盖那些事务已经commit的老undo信息
Oracle进行自动调节为undo表空间提供最佳的undo保持时间,db会收集关于利用率的统计信息并基于这些信息及undo表空间大小去调节undo保持期,如果undo表空间配置成AUTOEXTEND,并没有指定最大值, undo保持期的调节方法将稍微不同,这种情况下,只要空间允许,undo保持期将稍长于系统中运行的最长的那个查询所花费的时间

论坛徽章:
0
48 [报告]
发表于 2012-01-19 21:56 |只看该作者
页面:Page 3-4
日期:2012-1-19


3.2 表空间
表空间是db的逻辑存储单位,表空间由段组成,段由区组成,区是一组连续的块
这节的主要介绍了表空间的如下部分:
# bigfileg表空间
#system表空间
#sysaux表空间
#undo表空间
#默认临时表空间
#使用多个表空间
#表空间管理
#多个块大小
#online或offline表空间
#只读表空间
# 临时表空间
#db间表空间传输

论坛徽章:
0
49 [报告]
发表于 2012-01-19 21:57 |只看该作者
页面:Page 3-5

3.2.1        bigfileg表空间
oracle支持创建bigfileg表空间,这样表空间可以由单个大文件组成而不是多个小文件,使得oracle可以利用64位系统的功能去创建和管理超大文件,这样的结果就是,oracle db可以达到8 exabytes的大小
使用OMF,bigfileg表空间使得数据文件对用户来说是完全透明的,换句话说,可以对表空间执行操作而不是底层的文件,bigfileg表空间使得表空间成为磁盘管理,备份,恢复等等主要对象,bigfileg表空间通过OMF及自动存储管理也简化了数据文件的管理,因为ASSM消除了增加新文件和处理多个文件带来的不便
系统默认是创建smallfile表空间,这是db传统的表空间类型,SYSTEM and SYSAUX表空间默认就是使用这个类型
bigfileg表空间只支持使用自动段空间管理的表空间本地管理方式,有两个例外,本地管理undo和临时表空间可以是bigfileg表空间,但是它们的段管理方式可能是手动管理的
db中可以包含bigfileg及smallfile表空间,不同类型的表空间不能区分如何执行sql语句,因为这些sql语句无法明确处理对象是属于哪个数据文件的
可以创建临时表空间组使用户去使用多个表空间的临时空间,可以指定一个表空间组为db的临时表空间,对于bigfileg表空间来说是有用的,在那儿,可能需要用到多个临时表空间来排序
这节包含下面的内容:
# bigfileg表空间的好处
#bigfileg表空间注意事项
.................
## bigfileg表空间的好处
bigfileg表空间可以显著地增强db的存储能力,smallfile表空间可以包含达到1024个文件,但bigfileg表空间虽然只有一个文件,但它的大小却是smallfile表空间的1024倍,smallfile表空间与bigfileg表空间的总容量是相同的,但是,由于每个db只允许创建64K个文件,一个db就可以拥有1024个bigfileg表空间还不是1024个smallfile表空间了,所以利用bigfileg表空间可以使db的空间容量增长3次方,换句话说,当使用最大的32k的block块时,就可以达到db的最大值8 exabytes

论坛徽章:
1
巨蟹座
日期:2014-08-15 14:56:13
50 [报告]
发表于 2012-02-02 10:44 |只看该作者
楼主加油啊。不过翻译这种工作,特别是翻译自己不太熟悉的东东,翻久了容易思维僵化,自己思考的就越来越少了。反正我是这样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP