Oracle数据库应用与设计杭州电子科技大学11、增加第4组重做日志组,含3个成员,位于磁盘不同位置(分别为C,D,E三个盘符根目录下),且每个重做日志文件大小15M。2、查询正在使用的日志组?3、如何删除当前正在使用的日志组?QuestionOracle数据库应用与设计杭州电子科技大学25、在数据库启动到什么状态时可以获得V$DATAFILE和V$LOGFILE视图的数据?这些数据字典视图从什么地方获取到数据?4、有哪几种情况会发生日志切换?表空间和数据文件管理Oracle数据库应用与设计杭州电子科技大学4目标在完成本章学习后,你将掌握下列技能:Oracle的存储结构表空间的管理数据文件的管理Oracle数据库应用与设计杭州电子科技大学5本章内容Oracle的存储结构创建表空间临时表空间回滚表空间表空间的状态表空间信息查询删除表空间数据文件管理Oracle数据库应用与设计杭州电子科技大学6本章内容导航Oracle的存储结构创建表空间临时表空间回滚表空间表空间的状态表空间信息查询删除表空间数据文件管理Oracle数据库应用与设计杭州电子科技大学7Oracle的存储结构分为物理存储结构和逻辑存储结构Oracle数据库应用与设计杭州电子科技大学8Oracle的存储结构物理存储结构–数据库文件在磁盘中的物理存放方式–Oracle数据库文件主要有数据文件、日志文件、参数文件、控制文件逻辑存储结构–数据库中数据的逻辑组织方式–Oracle逻辑存储结构主要包括表空间、段、区、块Oracle数据库应用与设计杭州电子科技大学9表空间的概念表空间是用户可以在Oracle系统中使用的最大的逻辑存储结构。用户在数据库中建立的所有内容都会存储在表空间中。从物理上说数据库的数据存放在数据文件中,从逻辑上说数据是被存放在表空间中的。一个表空间可以有多个数据文件。一个数据文件只能属于一个表空间。Oracle数据库应用与设计杭州电子科技大学10数据库、表空间、数据文件、磁盘之间关系数据库表空间1表空间3表空间2数据文件1数据文件3数据文件2磁盘1磁盘2逻辑存储结构物理存储结构Oracle数据库应用与设计杭州电子科技大学11大楼数据库公司A公司BRoom601Room603Room1101Room101RoomA01表空间A表空间B数据文件1数据文件2数据文件3数据文件4数据文件5Oracle数据库应用与设计杭州电子科技大学12表空间的作用•控制数据库所占用的磁盘空间;•控制用户所占用的表空间分配,即控制用户所占用的空间分配;•通过将不同表的数据、分区表中不同分区的数据放置到不同的表空间(或其中的数据文件)中,可以提高数据库的I/O性能,并有利于进行部分备份和恢复等管理工作;•能够将一个表的数据和这个表的索引数据分别放置到不同的表空间(或其中的数据文件)中,以提高数据库的I/O性能;•可以将表空间设置成只读状态而保持大量静态数据。Oracle数据库应用与设计杭州电子科技大学13本章内容导航Oracle的存储结构创建表空间临时表空间回滚表空间表空间的状态表空间信息查询删除表空间数据文件管理Oracle数据库应用与设计杭州电子科技大学14表空间的类型分类表空间存放数据系统表空间SYSTEMSYSAUX系统数据(数据字典表及其数据等)非系统表空间大表空间小表空间用户数据(表、索引等)临时表空间临时数据回滚表空间回滚数据Oracle数据库应用与设计杭州电子科技大学15创建表空间创建表空间语法:CREATE[TEMPORARY|UNDO]TABLESPACE表空间名[DATAFILE子句][MINIMUMEXTENT正整数[K|M]][BLOCKSIZE正整数K][ONLINE|OFFLINE][LOGGING|NOLOGGING][DEFAULTSTORAGE存储子句][EXTENTMANAGEMENTDICTIONARY|LOCAL[AUTOALLOCATE|UNIFORMSIZE正整数K|M]][SEGMENTSPACEMANAGEMENTAUTO|MANUAL];Oracle数据库应用与设计杭州电子科技大学16创建表空间TEMPORARY|UNDO–TEMPORARY表示创建临时表空间,UNDO表示创建回滚表空间,如未使用表示创建永久表空间。DATAFILE子句–指定与表空间相关联的数据文件的位置、名称和大小。–语法如下:DATAFILE|TEMPFILE‘文件名’SIZEK|MREUSE[AUTOEXTENTOFF|ON[NEXT正整数K|MMAXSIZEUNLIMITED|正整数K|M]]Oracle数据库应用与设计杭州电子科技大学17SQLcreatetablespacemytbs01datafile‘c:\mytbs01.dbf’size5m;SQLcreatetablespacemytbs02datafile‘c:\mytbs02_1.dbf’size5m,‘c:\mytbs02_2.dbf’size5mautoallocate;Oracle将自动按表空间中不同对象的大小分配相应大小的区(最小区64k)。其缺点是在表空间中可能会造成一些磁盘空间的浪费。Oracle数据库应用与设计杭州电子科技大学18创建表空间MINIMUMEXTENT–表空间中盘区可以分配到的最小的尺寸。该值是块的整数倍。BLOCKSIZE–为表空间说明非标准块的大小,该选项只适用于永久表空间。ONLINE|OFFLINE–设置为ONLINE则创建的表空间立即可以使用,设置为OFFLINE则使表空间不可用。Oracle数据库应用与设计杭州电子科技大学19SQLcreatetablespacemytbs03datafile‘c:\mytbs03.dbf’size5mautoextendonnext2mmaxsize11m;Oracle数据库应用与设计杭州电子科技大学20创建表空间LOGGING|NOLOGGING–表空间中所有数据变化是否写入重做日志文件中,默认为LOGGING。DEFAULTSTORAGE存储子句–说明在该表空间中所创建的对象的默认存储参数。Oracle数据库应用与设计杭州电子科技大学21CREATETABLESPACEmytbs04DATAFILE'C:\OraDb\JHH_IDX00.dbf'SIZE50MAUTOEXTENDONNEXT50MMAXSIZE4000MDEFAULTSTORAGE(INITIAL24KNEXT24KMINEXTENTS1MAXEXTENTSUNLIMITEDPCTINCREASE0);Oracle数据库应用与设计杭州电子科技大学22创建表空间EXTENTMANAGEMENT–表空间的区管理方式是采用数据字典管理方式(DICTIONARY)还是本地化管理方式(LOCAL)。10g开始强烈建议使用本地化管理方式。本地管理方式的AUTOALLOCATE和UNIFORM参数指出区的大小。SEGMENTSPACEMANAGEMENT–表空间中段的管理方式采用自动管理方式(AUTO)还是手动管理方式(MANUAL)。Oracle数据库应用与设计杭州电子科技大学23SQLcreatetablespacemytbs05datafile‘c:\mytbs05.dbf’sizereuseuniformsegmentspacemanagementauto;即管理段中已用数据块和空闲数据块的方式。虽然oracle极力推荐auto的方式,但是在oracle10g中如果不使用segmentspacemanagement子句指定为auto,则使用manual段管理方式。Oracle数据库应用与设计杭州电子科技大学24使用OEM创建表空间Oracle数据库应用与设计杭州电子科技大学25本章内容导航Oracle的存储结构创建表空间临时表空间回滚表空间表空间的状态表空间信息查询删除表空间数据文件管理Oracle数据库应用与设计杭州电子科技大学26临时表空间临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。当临时表空间不足时,表现为运算速度异常的慢。最好为每个数据库用户都指定一个公用的临时表空间,如果不指定,这些临时数据就都会放在SYSTEM表空间中,从而产生大量的碎片。Oracle数据库应用与设计杭州电子科技大学27临时表空间——创建临时表空间创建一个本地管理的临时表空间TEMPTBScreatetemporarytablespacetemptbstempfile'c:\oracle\product\10.2.0\orcl\temp01.ora'size50Mautoextendonnext5Mmaxsizeunlimitedextentmanagementlocal;把临时数据放在TEMP临时表空间alterdatabasedefaulttemporarytablespacetemptbs;查看临时文件信息selectfile#,status,bytes,namefromv$tempfile;Oracle数据库应用与设计杭州电子科技大学28SQLcreatetemporarytablespacetmptsb1tempfile‘c:\temp\tmptsb1.dbf’size4mautoallocate在临时表空间不能指定为autoallocate;也不能把段刊方式指定为auto方式。Oracle数据库应用与设计杭州电子科技大学29本章内容导航Oracle的存储结构创建表空间临时表空间回滚表空间表空间的状态表空间信息查询删除表空间数据文件管理Oracle数据库应用与设计杭州电子科技大学30回滚表空间回滚(UNDO)表空间用于存放回滚数据,当执行DML操作时,Oracle会将这些操作的旧数据写入到回滚段。Oracle9i前管理回滚数据使用回滚段。从Oracle9i开始,管理回滚数据不仅可以使用回滚段,还可以使用回滚表空间。因为规划和管理回滚段比较复杂,所以Oracle10g已经完全丢弃用回滚段,而是使用回滚表空间来管理回滚数据。Oracle数据库应用与设计杭州电子科技大学31回滚表空间——回滚数据的作用回滚事务–当执行DML操作修改数据时,回滚数据被存放到回滚段,而新数据则被存放到数据段中,如果事务操作存在问题,就需要回退事务,以取消事务变化。读一致性–用户检索数据库数据时,Oracle总是使用用户只能看到被提交过的数据或特定时间点的数据,以确保数据的一致性。事务恢复–如果在数据库运行过程中出现例程失败,那么当重启数据库时,后台进程SMON会自动执行例程恢复。闪回查询–取得特定时间点的数据库数据,它是9i开始新增加的特性。Oracle数据库应用与设计杭州电子科技大学32回滚表空间——回滚表空间的管理参数UNDO_MANAGEMENT–指定回滚数据的管理方式。如果要使用自动管理模式,必须设置该参数为AUTO,如果使用手工管理模式,必须设置该参数为MANUAL。UNDO_TABLESPACE–指定例程所要使用的UNDO表空间。UNDO_RETENTION–控制回滚数据的最大保留时间,其默认值为900秒。Oracle数据库应用与设计杭州电子科技大学33回滚表空间——创建回滚表空间创建回滚表空间UNDOTBScreateundotablespaceundotbsdatafile'c:\oracle\product\10.2.0\orcl\undo01.ora'size40M;创建undo表空间时不能指定统一区大小的选项(uniform),否则出错。把回滚数据放在undotbs1回滚表空间altersystemsetundo_management=autoscope=spfile;altersystemsetundo_tablespace