oracle学习笔记8(表空间和与数据文件)

1、

ORACLE数据库将数据逻辑的存储在表空间里,物理的存储在数据文件里。一个表空间只能属于一个数据库,而一个数据库能拥有多个表空间。一个表空间由一个或多个数据文件组成,一个数据文件只能属于一个表空间。数据文件是存储模式对象数据的容器(仓库)。 表空间在数据库中分为两种:系统表空间和非系统表空间。系统表空间中存有数据字典,系统表空间中还包含系统还原(回滚)段。非系统表空间由DBA创建,非系统表空间可以存储用户的数据段、索引(index)段、还原(undo)段和临时(temp)段。创建非系统表空间的语句:

CREATE TABLESPACE表空间名

[DATAFILE子句]

[MINIMUM EXTENT 正整数[K|M]]

[BLOCKSIZE正整数[K]] [LOGGING|NOLOGGING]

[DEFAULT 存储子句] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY]

[区段管理子句]

[段管理子句]

其中

DATAFILE子句:组成所要创建的表空间的文件说明。

MINIMUM EXTENT:表空间中所使用的每个EXTENT都必须是该参数所指定数的整数倍。 BLOCKSIZE:为该表空间说明非标准块的大小。在使用这一子句之前,您必须先设置DB_CACHE_SIZE:参数和DB_nK_CACHE_SIZE参数,而且该子句中所说明的正整数一定与DB_NK_CACHE_SIZE参数的设定相对应。

LOGGING:说明在该表空间中所有数据的变化都将写入重做日志文件中,这也是默认方式。 NOLOGGING:说明在该表空间中所有数据的变化不都写入重做日志文件中,NOLOGGING只影响一些DML和DDL命令。

DEFAULT存储子句:说明所有在该表空间中所创建的对象的默认存储参数。

OFFLINE:说明该表空间在创建后立即被置为脱机,即不能使用。

表空间的磁盘空间管理

数据字典管理表空间:在早期是由数据字典管理表空间的,它是通过freelist表来管理表空间的。数据字典(系统)管理表空间中所有的EXTENTS的管理都是在数据字典中进行的,而且每一个存储在同一个表空间中的段可以具有不同的存储子句。这种管理方式可以修改存储参数,因此其存储管理较灵活,但系统的效率较低,并且有时需要合并碎片。 创建数据字典管理的表空间语句:

CREATE TABLESPACE TABLESPACENAME DATAFILE ‘路径’SIZE M MINIMUM EXTENT 50K EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0); 其中为了防止用户在创建对象时使用的EXTENT过小而产生过多的碎片,决定最小的EXTENT为50K(MINIMUM EXTENT 50K)。当需要磁盘空间的自动分配时第一次分配为

50K(INITIAL 50K),第二次也为50K(NEXT 50K),所分配的最大磁盘空间为100个EXTENTS(MAXEXTENTS 100)。

本地管理表空间:它的空闲EXTENTS是在表空间中管理的,使用位图(Bitmap)来记录空闲EXTENTS,位图中的每一位对应一块或一组块,而每位的值指示空闲或分配。当一个EXTENT被分配或释放时,Oracle服务器就会修改位图中相应位的值来反映该EXTENT的新的状态。位图存放在表空间所对应的数据文件的文件头中。使用本地管理的表空间减少了数据字典表的竞争,而且当磁盘空间分配或收回时也不会产生回滚(还原),它也不需要合并碎片。但是本地管理表空间无法修改存储参数,因此没有数据字典管理表空间那样灵活,但系统效率较高。

在本地管理的表空间中,表空间的管理,如磁盘空间的分配与释放等已经不在需要操作数据字典了,系统表空间的瓶颈问题得到了很好的解决。

创建本地管理的表空间:

CREATE TABLESPACE TABLESPACENAME DATAFILE ‘路径’SIZE 多少M

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 多少M;

还原表空间(undo):自动管理还原(回滚)数据。还原表空间是用来存储还原(回滚)段的,在还原表空间中不能包含任何其它的对象。还原表空间中的区段(extents)是由本地管理的,而且在创建还原表空间的SQL语句中只能使用DATAFILE和EXTENT MANAGEMENT子句。在数据库中可以存在多个undo表空间,但同一时刻只能使用一个undo表空间。

临时表空间(temporary):作为排序操作使用的(通常是在pga或sort_area_size中完成排序的,如果不能就将在临时表空间进行(disk sort))。当用户的SQL语句中使用

了诸如ORDER BY,GROUP BY子句时,Oracle服务器就需要对所选取的数据进行排序,这时如果排序的数据量很大,内存的排序区(在PGA中)可能装不下,Oracle服务器就要把一些中间的排序结果写到磁盘上,即临时表空间中。当用户的SQL语句中经常有大规模的多重排序而内存的排序区不够时,使用临时表空间就可以改进数据库的效率。临时表空间中的排序段是在实例启动后当有第一个排序操作时创建的,排序段在需要时可以通过分配EXTENTS来扩展并一直可以扩展到大于或等于在该实例上所运行的所有排序活动的总和。当创建临时表空间时,必须使用标准数据块。另外Oracle还推荐使用本地管理的表空间。 默认临时表空间:如果在创建一个数据库时没有设定默认临时表空间,那么任何一个用户如果在创建时没有使用TEMPORARY TABLESPACE子句,就将使用SYSTEM表空间作为排序区。这将使SYSTEM表空间碎片化,从而使数据库系统的效率下降。如果在创建一个数据库时没有设定默认临时表空间,Oracle服务器将把SYSTEM表空间是默认临时表空间的报警信息写入报警文件。因此说明一个数据库范围的默认临时表空间可以消除使用系统(SYSTEM)表空间对临时数据进行排序的现象,从而提高数据库系统的效率。默认临时表空间即可以在创建数据库时一起创建,也可以在数据库创建之后建立。

ORACLE数据库中逻辑结构与物理结构:

每个数据库是由一个或多个表空间所组成(至少一个);每个表空间基于一个或多个操作系统的数据文件(至少;每个表空间中可以存放有零个或多个段(Segmen;每个段是由一个或多个区段(Extent)所组成;每个区段是由一个或多个连续的Oracle数据块所;每个Oracle数据块是由一个或多个连续的操作系;每个操作系统数据文件是由一个或多个区段(Exte;每个操作系统


每个数据库是由一个或多个表空间所组成(至少一个)。

每个表空间基于一个或多个操作系统的数据文件(至少一个)。

每个表空间中可以存放有零个或多个段(Segment)。

每个段是由一个或多个区段(Extent)所组成。

每个区段是由一个或多个连续的Oracle数据块所组成。

每个Oracle数据块是由一个或多个连续的操作系统数据块所组成。

每个操作系统数据文件是由一个或多个区段(Extent)所组成。

每个操作系统数据文件是由一个或多个操作系统数据块所组成。

关于undo与redo

undo表空间中数据的特点:是数据修改前的备份,主要是保证用户的读一致性;在事物修改数据时产生;至少保存到事物结束。

undo的作用:回滚(rollback)操作;实现读一致性和闪回(flash back)查询;从失败的事物中还原数据;非正常停机后的实例回复。

undo表空间数据与redo日志文件数据的区别:

1.undo记录数据修改之前的操作,redo记录磁盘数据将要进行的操作;

2.undo用于数据的回滚操作和实现读一致性,redo用于前滚数据库操作;

3.undo存储在回滚段里,redo存储在重做日志文件里;

4.undo用于在多用户并发的系统里保证读一致性,redo用于防止数据丢失。

视图与表的区别:

表需要占用磁盘空间,视图不需要;

视图不能添加索引(查询速度略慢);

使用视图可以简化复杂查询;

使用视图有利于提高安全性。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值