文档章节

Orale逻辑体系 第二回

ChyiHuang
 ChyiHuang
发布于 2017/05/18 16:47
字数 1337
阅读 11
收藏 0

    当某用户创建一张表T时,实质就是创建了一个数据段SEGMENT T,如果另外创建了表T2,T3,实质就是创建了另外两个数据段SEGMENT2,SEGMENT3。在Oracle数据库中,只要SEGMENT创建成功,数据库就一定为其分配了包含若干个数据块(data block)的初始化数据扩展,即便此时表中还没有数据,但是这些初始数据扩展中的数据块已经为即将插入的数据做好准备了。

    接下来T表(也就是SEGMENT T)中开始插入数据,很快初始数据扩展中的数据块都装满了,而且又有新数据插入需要空间,此时Oracle会自动为这个段分配一个新增数据扩展,这个新增数据扩展是一个段中已有数据扩展之后分配的后续数据扩展。容量大于或等于之前的数据扩展。

    每个段(SEGMENT)的定义中都包含了数据扩展(extent)的存储参数。存储参数适用于各种类型的段,这个参数控制着Oracle如何为段分配可用空间。例如,用户可以再 create table语句中使用storage子句设定存储参数,决定创建表时为其数据段(data segment)分配多少初始空间,或限定一个表最多可以包含多少个数据扩展。如果用户没有为表设定存储参数,那么表在创建时使用所在表空间的默认存储参数。 

    在一个本地管理的表空间中(注:还有一种数据字典管理的表空间,因为是一种要被淘汰的技术,这里就不提及了),其中所分配的数据扩展的容量既可以是用户设定的固定值,也可以是由系统自动决定的可变值,取决于用户创建tablespace时用uniform指令(固定大小)还是autoallocate指令(由系统管理)。

    对于固定容量(uniform)的数据扩展,用户可以为数据扩展设置容量(比如100M,1GB等随你设定)或使用默认大小(1MB),用户必须确保每个数据扩展的容量至少能包含5个数据库块(database block)。本地管理的临时表空间在分配数据扩展时只能使用此种方式。

    对于系统管理(autoallocate)的数据扩展,你就无从插手干预了,Oracle或许一个区申请20M,下一个区忽然申请100M,Oracle在运行过程中自行决定新增数据扩展的最佳容量,我们无从得知规律,不过还是有一个下限的,即区的扩展过程中其最小容量不能低于64KB,假如数据块容量大于等于16KB,这个下限将从64KB转变为1MB。

    表空间的分类:系统表空间、临时表空间、回滚表空间、数据表空间

 

逻辑体系结构之block

    查询的结果说明block的大小是8KB,这是Oracle的最小逻辑单位:

    

 

我们先来看一下各种建表空间的方法:

    创建表空间:

                        1.手动扩展表空间的大小

                             create tablespace tbs_hcy datafile 'c:\c.dbf' size 100M

                            extent management local

                            segment space management auto;

 

        手动修改表空间大小:alter tablespace tbs_hcy add datafile 'c:\c.dbf' size 100M;

        查看表空间剩余大小:select sum(bytes/1024/1024) from dba_free_space where tablespace_name='tbs_hcy';

        查看原始表空间大小:select sum(bytes/1024/1024) from dba_data_files where tablespace_name='tbs_hcy';

                    2. 自动扩展大小

                            create tablespace tbs_hcy datafile 'c:\c.dbf' size 100M

                            autoextend on

                            extent management local

                            segment space management auto;

                3. 设置自动扩展的大小:

                        create tablespace datafile tbs_hcy 'c:\c.dbf' size 100M

                        autoextend on

                        next 64k

                        maxsize 5G;

    比较发现 前面两种多了 extent management local 和 segment space management auto;

    在Oracle10g 以后,这两行是可以去掉的,默认是 区的本地管理 和 段的自动管理,早期版本中,区的管理是依据数据字典的,导致系统产生大量的递归调用,随后的版本改为通过区上的位图标记来管理区的扩展,性能得到极大提升,Oracle9i时Oracle提供了这个新功能,而10g以上完全取消字典管理功能。

    不过由于现在Oracle数据库已经不提供Oracle9i及以下的版本的支持了,所以在建表空间的时候可以把这两行去掉。

 

新建临时表空间:

        create temporary tablespace temp1_1 tempfile 'c:\e.dbf' size 100M;

Oracle在设计上有很多过人之处,Oracle可以为不同的用户指定不同的临时表空间,从而减缓IO竞争,实际上Oracle10g以后推出的临时表空间组,可以做到为同一用户的不同session设置不同的临时表空间,这可以说在缓解IO竞争方面迈出了大大的一步。

    临时表空间组可以通过观察数据字典dba_tablespace_groups得到,如下说明数据库并没有设置临时表空间组:

    

实际上建临时表空间组很简单,只要新建一个临时表空间,然后加上tablespace group tmp_grp1,就默认建了一个名为 tmp_grp1的临时表空间组了,比如我们新建三个临时表空间:

 

 

 

 

 

    

 

 

 

 

 

 

 

© 著作权归作者所有

ChyiHuang
粉丝 3
博文 54
码字总数 51006
作品 0
朝阳
程序员
私信 提问
java 电子书分章

请问,像这样的电子书怎么分章啊?能实现用readline()能获取"第X回"这样的代码吗? 第一回 XXXXXXXXXXXX 第二回 XXXXXXXXXXXX 第三回 XXXXXXXXXXXX...

oldfeel
2012/08/11
197
0
红薯大哥,帮分析下centos无故死机的日志吧?

@红薯 你好,帮分析下吧: 第一回死机: 第二回死机:

懵懂一时
2012/06/05
3.2K
7
IPV6 学习资料汇总

汇总一些博主认为写得比较好的IPV6 学习资料 IPv6: Unicast 单播地址的组成与分类 第一回 IPv6基础 第二回 认识IPv6地址 第三回 IPv6基础配置 第四回 IPv6之ICMPv6 *如果上述文章作者觉得博主...

zmx009
2017/11/30
0
0
《Kotlin极简教程》第二章 Hello,World 函数

正式上架:《Kotlin极简教程》Official on shelves: Kotlin Programming minimalist tutorial 京东JD:https://item.jd.com/12181725.html 天猫Tmall:https://detail.tmall.com/item.htm?i......

程序员诗人
2017/03/11
0
0
缓存篇(Cache)~第二回 使用static静态成员实现服务器端缓存(导航面包屑)~续

在写完首篇cache文章后,有些朋友给我来信,希望可以使用JS的方法来实现这个导航功能,所以,才有了这篇文章,JS与C#不同,它虽然有引用类型,但它不具备一些引用类型的特性,如它的方法...

mcy247
2017/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部