第3章 ORACLE数据库结构(逻辑)2v1.ppt_第1页
第3章 ORACLE数据库结构(逻辑)2v1.ppt_第2页
第3章 ORACLE数据库结构(逻辑)2v1.ppt_第3页
第3章 ORACLE数据库结构(逻辑)2v1.ppt_第4页
第3章 ORACLE数据库结构(逻辑)2v1.ppt_第5页
已阅读5页,还剩106页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 ORACLE数据库结构(逻辑),福建工程学院软件学院 卢民荣 QQ:137955086(周一,五下午在线),第7章 Oracle 10g逻辑结构及其管理,7.1 数据块、范围和段及其管理 7.2 表空间及其管理 7.3 回滚段及其管理,Oracle 数据库逻辑存储结构,Oracle数据库是一个数据集合,它的主要功能是存储和检索数据。为了更加有效地对数据库中的数据进行存储和管理,Oracle数据库采用了两种存储结构:逻辑存储结构和物理存储结构,这两种结构相互独立,互不影响。逻辑存储结构主要是指在Oracle内部使用的组织和管理数据的数据结构;物理存储结构是Oracle在操作系统中存储和管

2、理数据的方式,即保存数据的Oracle文件在操作系统中的存储结构。,Oracle 数据库逻辑存储结构,Oracle存储结构 1.逻辑存储结构 块(Block) 块是Oracle存储结构中最小的逻辑存储单元,是读写数据文件的最小单位。 区(Extent) 区是由一定数量连续的块组成的逻辑存储结构,是Oracle进行存储分配的单位。 段(Segment) 段是由一个或多个区组成的逻辑存储结构,可以用来保存特定的模式对象(表、索引等)。段可以分为数据段、索引段、临时段和回退段四类。 表空间(Tablespace) 表空间是最高一级的逻辑存储单元,是连接逻辑存储结构和物理 。,Oracle 数据库逻辑

3、存储结构,Oracle存储结构 2.物理存储结构 在操作系统级,Oracle以文件的形式组织和管理数据,而这些文件是存储在物理存盘上的,是具体的物理存在,因此把这种结构叫物理存储结构。Oracle物理存储结构组成包括: 数据文件 数据文件用来存储所有的数据库数据。 控制文件 控制文件用来存储数据库的物理结构等信息。 重做日志文件 重做日志文件用来记录对数据库的所有修改信息。,Oracle 数据库逻辑存储结构,Oracle存储结构 3.模式对象 模式是一个数据库对象的集合。 表 Oracle数据库中基本的数据单元。 视图 从表或视图中抽取出来的数据的表现形式。 序列 Oracle自动生成的一个代

4、码唯一的连续数值列。 索引 一种与表相关的数据结构。利用索引,Oracle能够提高数据检索的性能。 程序单元 包括存储过程、函数、程序包、触发器等。 同义词 表、索引、视图或其它模式对象的一个别名。 簇 一组由于共享公共列而在物理上存放在一起的一个或多个表。,Oracle 数据库逻辑存储结构,块 1.标准块 是Oracle存储结构的最小单位,是Oracle进行存储管理的最小单元。 初始化参数DB_BLOCK_SIZE指定的数据块被称为标准块。标准数据块是在创建数据库时设定的,数据库创建完成后,该参数就不能改变。 标准块的大小可以通过以下方式获得: SHOW PARAMETER DB_BLOCK

5、_SIZE 或者 SELECT NAME,TYPE,VALUE FROM V$PARAMETER WHERE NAME=db_block_size;,Oracle 数据库逻辑存储结构,块 2.非标准块 在Oracle 9i中,还允许另外使用5种非标准大小的块。这些非标准块必须在创建表空间时设置的,它表示该表空间的数据块将采用非标准数据块。 DB_2K_CACHE_SIZE 2KB非标准数据块 DB_4K_CACHE_SIZE 4KB非标准数据块 DB_8K_CACHE_SIZE 8KB非标准数据块 DB_16K_CACHE_SIZE 16KB非标准数据块 DB_32K_CACHE_SIZE 3

6、2KB非标准数据块,Oracle 数据库逻辑存储结构,块 3.块的结构 块的内部划分成块头,表目录,行目录,可存取空间等。,Oracle 数据库逻辑存储结构,块 4.块的管理方式 数据块对Oracle性能最主要的影响在于行迁移现象。因此,对块的管理主要是针对块中可用存储区的管理,减少行迁移现象的发生。 自动管理方式 手工管理方式,Oracle 数据库逻辑存储结构,块 5.存储参数 PCTFREE 该参数是一个百分数,是空闲存储区与整个数据块大小的比值。 PCTUSED 该参数是一个百分数,是已用存储空间与整个数据块大小的比值,是块重新处于可用状态的标志。,Oracle 数据库逻辑存储结构,块

7、5.存储参数 查询SCOTT用户的所有表的PCTFREE和PCTUSED参数。 SELECT TABLE_NAME,PCT_FREE,PCT_USED FROM DBA_TABLES WHERE OWNER = SCOTT; 输出结果为: TABLE_NAME PCT_FREE PCT_USED - BONUS 10 40 DEPT 10 40 EMP 10 40 SALGRADE 10 40,Oracle 数据库逻辑存储结构,块 5.存储参数 通过ALTER直接对每一个表修改它的PCTFREE和PCTUSED参数。 如修改用户SCOTT的DEPT表的这两个参数。 ALTER TABLE SC

8、OTT.DEPT PCTFREE 20 PCTUSED 30; 输出结果为: 表已更改。,Oracle 数据库逻辑存储结构,块 5.存储参数 INITTRANS 数据块中事务处理条目的初始数量,可以为1到 255 之间的值,缺省值为1。 MAXTRANS 数据块中事务处理条目的最大数量,可以为1到255之间的值,缺省值为255。,Oracle 数据库逻辑存储结构,块 5.存储参数 查询SCOTT用户的所有表的INITTRANS和MAXTRANS参数。 SELECT TABLE_NAME,INI_TRANS,MAX_TRANS FROM DBA_TABLES WHERE OWNER = SCOT

9、T; 输出结果为: TABLE_NAME INI_TRANS MAX_TRANS - - - BONUS 1 255 DEPT 1 255 EMP 1 255 SALGRADE 1 255,Oracle 数据库逻辑存储结构,块 5.存储参数 通过ALTER直接对每一个表修改它的MAXTRANS参数,INITTRANS不允许修改。 如修改用户SCOTT的DEPT表的这两个参数。 ALTER TABLE SCOTT.DEPT MAXTRANS 200; 输出结果为: 表已更改。,Oracle 数据库逻辑存储结构,块 6. 行迁移和记录链接 当UPDATE语句更新一条记录时,由于块中没有足够的存储空

10、间,Oracle无法把这条记录完全存储在原有的块中。这时,Oracle将这条记录全部移到另一个新的块中,但在原来的块中留下一个指针指向新的块,这种处理方式叫行迁移。,Oracle 数据库逻辑存储结构,块 6. 行迁移和记录链接 如果一条记录太大(如字段的类型为LONG 或LONG RAW),一个完整的数据块都无法保存一条记录,Oracle将把这条记录分成较小的片段(行片段),每一个行片段放在一个块中,然后通过指针连接所有的块,这种存储方式叫记录链接。,Oracle 数据库逻辑存储结构,区 区(Extent)是Oracle进行存储空间分配的最小单位,是由一系列物理上连续的块组成的逻辑存储结构。区

11、存在于段中,是段的组成单位。一个或多个数据块组成区,一个或多个区组成一个段。 1.区的类型 从区的功能上看,所有区都是都是一样的,都是用来存储数据的,都是由连续的块组成。但是从区的位置上分,区可以分为初始区(Initial Extent)和后续区(Incremental Extent)两种。,Oracle 数据库逻辑存储结构,区 2.区的分配方法 本地管理方式 自动分配 区大小由系统自动确定。由于 Oracle 可确定各区的最佳大小,所以区大小是可变的。 统一分配 区的大小由Oracle参数统一大小,可以指定区大小,也可使用默认值 (1 MB)。 字典管理方式,Oracle 数据库逻辑存储结构

12、,区 3.区的大小和数量 如果采用字典管理方式,必须对初始区和后续区的大小都要手工管理。设置区大小的参数有三个: INITIAL 用来指定初始区的大小。 NEXT 用以指定第1个后续区的大小。 PCTINCREASE 用以指定第2个后续区及其它后续区的增长比例。,Oracle 数据库逻辑存储结构,区 3.区的大小和数量 对于区的数量控制有两个参数: MINEXTENTS 段中分配的最小区数,默认值为为1。 MAXEXTENTS 段中分配的最大区数,可以设置为无限制。在Windows 2000中,其默认值为2147483645。,Oracle 数据库逻辑存储结构,区 3.区的大小和数量 查询SC

13、OTT用户所有表的区存储参数。 SQLSELECT TABLE_NAME TABLENAME,INITIAL_EXTENT INI, 2 NEXT_EXTENT NEXT,MIN_EXTENTS MIN, 3 MAX_EXTENTS MAX,PCT_INCREASE PCT 4 FROM DBA_TABLES 5 WHERE OWNER = SCOTT; 显示结果为: TABLENAME INI NEXT MIN MAX PCT - - - - - - BONUS 65536 1 2147483645 DEPT 65536 1 2147483645 EMP 65536 1 2147483645

14、,Oracle 数据库逻辑存储结构,区 3.区的大小和数量 通过查询DBA_EXTENTS,获得SCOTT用户所有表的区信息。 SQLSELECT SEGMENT_NAME,EXTENT_ID,BLOCK_ID,BYTES,BLOCKS 2 FROM DBA_EXTENTS 3 WHERE OWNER = SCOTT 4 ORDER BY BLOCK_ID; 显示结果为: SEGMENT_NAME EXTENT_ID BLOCK_ID BYTES BLOCKS - - - - - DEPT 0 50449 65536 8 PK_DEPT 0 50457 65536 8 EMP 0 50465

15、65536 8 PK_EMP 0 50473 65536 8 BONUS 0 50481 65536 8 SALGRADE 0 50489 65536 8,Oracle 数据库逻辑存储结构,区 4.区的回收 通过以下方式可以回收一些空闲的区: 删除不用的模式对象,如表、索引等。删除模式对象时,Oracle会将该对象所在段的所有区回收。因此,对一些不用的模式对象要及时删除。 DBA执行ALTER TABLE DEALLOCATE UNUSED命令,Oracle可以收回表中未使用的区。 表的所有者或对表具有DELETE ANY权限的用户,执行TRUNCATE TABLE tableDROP STO

16、RAGE 语句,Oracle可以回收表中未使用的区。 在创建回退段时使用OPTIMAL关键字,Oracle自动回收该回退段中空闲的区。,Oracle 数据库逻辑存储结构,段 1.段的类型 在Oracle中,不同类型的模式对象拥有不同类型的段,主要段的类型包括: 数据段(Data Segment) 数据段用来存储表和簇的数据。主要包括表、分区的表和簇。 索引段(Index Segment) 索引段保存索引的索引条目。 临时段(Temporary Segment) 在临时表空间中保存临时操作的段。 回退段(Rollback Segment) 回退段主要用来保存数据被事务修改之前的原始数据 。,Or

17、acle 数据库逻辑存储结构,段 2.段的管理方式 段管理是指如何管理段中的空闲空间和已用空间。段管理主要有两种方式: 自动管理方式 Oracle采用位图管理段的存储空间。位图是一个映射,表示某段中可以插入数据的各个数据块的空间状态。数据块中的空闲空间增加或减少后,其新状态都会在位图中反映出来。 手工管理方式 Oracle采用空闲列表管理段的存储空间。空闲列表保存有可以插入数据的可用空间的数据块的列表。 Oracle建议采用自动管理方式,保存手工管理方式只是为了向后兼容。,Oracle 数据库逻辑存储结构,段 3.段的大小和数量 查询SCOTT用户所有段的使用情况。 SQL SELECT SE

18、GMENT_NAME,SEGMENT_TYPE, 2 TABLESPACE_NAME,EXTENTS,BLOCKS 3 FROM DBA_SEGMENTS WHERE OWNER=SCOTT; 显示结果为: SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENTS BLOCKS - - - - - DEPT TABLE SYSTEM 1 8 EMP TABLE SYSTEM 1 8 BONUS TABLE SYSTEM 1 8 ,Oracle 数据库逻辑存储结构,段 3.段的大小和数量 查询所有所有回退段的信息。 SQLSELECT TABLESPAC

19、E_NAME,INITIAL_EXTENT , 2 MIN_EXTENTS,STATUS FROM DBA_ROLLBACK_SEGS; 显示结果为: TABLESPACE_NAME INITIAL_EXTENT MIN_EXTENTS STATUS - - - - SYSTEM 114688 1 ONLINE UNDOTBS1 131072 2 ONLINE UNDOTBS1 131072 2 ONLINE ,Oracle 数据库逻辑存储结构,表空间 表空间(Tablespace)是Oracle数据库最高层次的逻辑存储结构,是由一系列数据文件组成的集合,其中保存着由段、区和块等逻辑存储结构描

20、述的各种模式对象。表空间是数据文件的集合,也是段的集合。因此,可以将表空间看作是逻辑存储结构和物理存储结构之间的桥梁,表空间建立起了两者之间的对应关系。,Oracle 数据库逻辑存储结构,表空间 一个表空间必须包含一个或多个数据文件,但是一个数据文件只能属于一个表空间。一个数据库对象可以在一个数据文件中,也可以在多个数据文件中。,Oracle 数据库逻辑存储结构,表空间 1.表空间管理方式 字典管理表空间,在数据字典中管理表空间的空间分配 本地管理的表空间,在每个数据文件中使用位图来管理空间的分配。 本地管理的表空间有速度快,无碎片等优点,建议用户表空间都采用本地管理方式。 2.表空间的类型

21、系统表空间(System Tablespace) 临时表空间(Temp Tablespace) 撤销表空间(UNDO Tablespace ) 用户表空间(USER Tablespace ),Oracle 数据库逻辑存储结构,表空间 3.表空间的状态 表空间有两种状态: 联机状态 脱机状态。 当表空间处于联机状态时,用户可以访问该表空间中的数据。当表空间处于脱机状态时,用户不能访问该表空间中的数据。联机状态变为脱机状态在DBA或Oracle的管理下可以相互切换。,Oracle 数据库逻辑存储结构,表空间 3.表空间的查询 SQLSELECT TABLESPACE_NAME,STATUS 2 F

22、ROM DBA_TABLESPACES 3 WHERE CONTENTS = UNDO; TABLESPACE_NAME STATUS - - SYSTEM ONLINE UNDOTBS1 ONLINE TEMP ONLINE ,Oracle 数据库逻辑存储结构,表空间 3.表空间的查询 通过数据字典DBA_FREE_SPACE查询表空间的可用空间状态。 SQLSELECT TABLESPACE_NAME,SUM(BYTES) 2 FROM DBA_FREE_SPACE 3 GROUP BY TABLESPACE_NAME; 结果显示为: TABLESPACE_NAME SUM(BYTES)

23、- - CWMLITE 11141120 DRSYS 10813440 EXAMPLE 524288 其中,SUM(BYTES)为总的可用空间。,表空间概述,表空间的类型 系统表空间 临时表空间 撤销表空间 用户表空间,表空间概述,表空间管理原则 创建多个表空间 设置表空间的默认存储参数 为用户设置表空间限额,创建表空间,创建表空间命令 创建表空间的CREATE TABLESPACE 命令语法如下: CREATE UNDO TABLESPACE tablespace DATAFILE datafile_file_spec , datafile_file_spec. MINIMUM EXTENT

24、 integer K | M | BLOCKSIZE integer K | LOGGING | NOLOGGING | DEFAULT storage_clause | ONLINE | OFFLINE | PERMANENT | TEMPORARY | extent_management_clause | segment_management_clause ;,创建表空间,创建表空间命令 命令中各关键字和参数说明如下: UNDO 创建的表空间为撤销表空间。 tablespace 定义要创建的表空间名字。表空间的名称不能超过30个字符,必须以字母开头,可以包括字母、数字以及一些特殊字符(如#

25、、_和$)。 datafile_file_spec 表空间中数据文件的定义子句。可以在创建表空间命令中设置多个datafile_file_spec参数,这样能够在表空间中同时建立多个数据文件。 MINIMUM EXTENT 指定表空间中区的最小值。如果指定该参数,表中所有区的大小均是其整数倍。,创建表空间,创建表空间命令 命令中各关键字和参数说明如下: BLOCKSIZE 该表中数据块的大小。在创建非标准数据块的表空间中需要定义,并且需要在初始化参数文件中通过DB_nK_CACHE_SIZE设置。缺省为标准数据块大小。 DEFAULT storage_clause 表空间缺省存储子句,其参数决

26、定表空间中缺省的区分配方式。存储子句的语法和参数已在上一节中介绍过。 LOGGING | NOLOGGING 指定日志属性,设置将来的表、索引等是否需要进行日志处理。缺省为要记录日志。 ONLINE | OFFLINE 设置表空间创建后为联机状态还是脱机状态,缺省值为联机。,创建表空间,创建表空间命令 命令中各关键字和参数说明如下: PERMANENT TEMPORARY 是说明表空间是用户表空间或是临时表空间。缺省值为用户表空间。 extent_management_clause 区存储管理子句,定义该表空间中区的存储管理方式。 segment_management_clause 段存储管理

27、子句,定义该表空间中段的存储管理方式。,创建表空间,创建用户表空间 .创建本地管理方式的表空间 提高了存储分配的速度。 改善了存储管理的性能。 支持只读数据库。 简化了表空间的存储管理操作。 降低了表空间对数据字典的依赖性。,创建表空间,创建用户表空间 .创建本地管理方式的表空间 SQLCREATE TABLESPACE USER01 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA01.DBF 4 SIZE 5M 5 EXTENT MANAGEMENT LOCAL; 结果显示为: 表空间已创建。 其中EXTENT MANAGEMENT LOCAL子句可以

28、省略。 Oracle 9i默认使用本地管理方式创建表空间。,创建表空间,创建用户表空间 .创建本地管理方式的表空间 (1)本地管理表空间中指定区的分配管理方式 在用CREATE TABLESPACE语句创建本地管理的表空间时,可以通过区存储管理子句(EXTENT MANAGEMENT)来为表空间设置区的分配管理方式。区的分配管理方式有两种:AUTOALLOCATE和UNIFORM。,创建表空间,创建用户表空间 .创建本地管理方式的表空间 (1)本地管理表空间中指定区的分配管理方式 创建一个AUTOALLOCATE方式的本地管理表空间: SQL CREATE TABLESPACE USER02

29、2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA02.DBF 4 SIZE 5M 5 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;,创建表空间,创建用户表空间 .创建本地管理方式的表空间 (1)本地管理表空间中指定区的分配管理方式 创建一个UNIFORM方式的本地管理表空间,表空间所有区的大小都是128KB: SQL CREATE TABLESPACE USER03 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA03.DBF SIZE 5M 4 EXTENT MANAGEMENT LOC

30、AL UNIFORM SIZE 128K;,创建表空间,创建用户表空间 .创建本地管理方式的表空间 (2)本地管理表空间中指定段的存储管理方式 在创建表空间的命令中,段存储管理子句(SEGMENT SPACE MANAGEMENT)设置段管理方式。段的存储管理方式分为MANUAL和AUTO两种。,创建表空间,创建用户表空间 .创建本地管理方式的表空间 (2)本地管理表空间中指定段的存储管理方式 下面的语句创建一个MANUAL方式段存储管理的本地管理表空间: SQL CREATE TABLESPACE USER04 2 DATAFILE 3 D:ORACLEORADATAORADB01USERD

31、ATA04.DBF SIZE 5M 4 EXTENT MANAGEMENT LOCAL 5 SEGMENT SPACE MANAGEMENT MANUAL;,创建表空间,创建用户表空间 .创建本地管理方式的表空间 (2)本地管理表空间中指定段的存储管理方式 下面的语句创建了一个AUTO方式进行段存储管理的本地管理表空间: SQL CREATE TABLESPACE USER05 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA05.DBF SIZE 5M 4 EXTENT MANAGEMENT LOCAL 5 SEGMENT SPACE MANAGEMEN

32、T AUTO;,创建表空间,创建用户表空间 2.创建字典管理的表空间 下面的语句创建一个字典管理的表空间: SQLCREATE TABLESPACE USER06 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA06.DBF SIZE 5M 4 EXTENT MANAGEMENT DICTIONARY 5 DEFAULT STORAGE ( 6 INITIAL 50K 7 NEXT 50K 8 MINEXTENTS 2 9 PCTINCREASE 0 10 MAXEXTENTS 50);,创建表空间,创建临时表空间 1.创建本地管理方式的临时表空间 SQL

33、CREATE TEMPORARY TABLESPACE USERTEMP 2 TEMPFILE 3 D:ORACLEORADATAORADB01USERTEMP01.DBF 4 SIZE 50M REUSE 5 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;,创建表空间,创建临时表空间 1.创建本地管理方式的临时表空间 在一个数据库实例中,只能有一个默认临时表空间。如果需要将新建的临时表空间设置为默认临时表空间,还必须执行下列语句: SQLALTER DATABASE DEFAULT 2 TEMPORARY TABLESPACE 3 USERTEMP;,创建

34、表空间,创建临时表空间 2. 创建字典管理方式的临时表空间 SQL CREATE TABLESPACE USERTEMP02 2 DATAFILE D:ORACLEORADATAORADB01USERTEMP02 3 SIZE 50M 4 EXTENT MANAGEMENT DICTIONARY 5 DEFAULT STORAGE ( 6 INITIAL 2M 7 NEXT 2M 8 MINEXTENTS 1 9 PCTINCREASE 0) 10 TEMPORARY;,创建表空间,创建非标准块的表空间 2. 创建字典管理方式的临时表空间 SQLCREATE TABLESPACE USERDA

35、TA07 2 DATAFILE 3 D:ORACLEORADATAORADB01USERDATA07.DBF SIZE 5M 4 EXTENT MANAGEMENT DICTIONARY 5 BLOCKSIZE 16K 6 DEFAULT STORAGE ( 7 INITIAL 128K NEXT 256K MINEXTENTS 2 PCTINCREASE 20 MAXEXTENTS 50);,修改表空间默认存储参数,如果表空间是本地管理方式的,在创建时不能指定默认存储参数,只能设置为AUTOALLOCATE或UNIFORM方式,并且在表空间创建之后不能更改;如果表空间是字典管理方式的,则不仅

36、可以在创建时设置默认存储参数,而且还可以在创建后通过修改存储参数对表空间的存储管理方式进行更改。,修改表空间默认存储参数,对于字典管理方式的表空间,影响表空间中段的存储分配的参数,即存储参数,包含在CREATE TABLESPACE的存储子句中。这些参数有: INITIAL 定义分配给段的第一个区大小。表空间一旦创建后,不能修改INITIAL的大小 NEXT 定义分配给段的第二个区大小 PCTINCREASE 定义第二个区以后分配的区增长比例 MINEXTENTS 段在创建时初始分配的区数目 MAXEXTENTS 段可以分配的最大区数目,修改表空间默认存储参数,修改默认表空间的命令为ALTER

37、 TABLESPACE命令,该命令的格式为: ALTER TABLESPACE tablespace datafile_tempfile_clauses | DEFAULT storage_clause | MINIMUM EXTENT integer K | M ; 例: 执行下面的命令修改表空间默认的存储参数: SQLALTER TABLESPACE USERDATA07 2 DEFAULT STORAGE ( 3 NEXT 512K 4 MAXEXTENTS UNLIMITED);,改变表空间的可用性,基于下列原因,有可能要将一个表空间设为脱机状态: 禁用数据库的某一部分数据,但允许访问

38、数据库中的其他部分 进行脱机表空间的备份(尽管表空间可以在联机状态和使用中备份) 在数据库打开状态下恢复表空间或数据文件 改变表空间可用性的命令为: ALTER TABLESPACE tablespace | ONLINE | OFFLINE NORMAL | TEMPORARY | IMMEDIATE | FOR RECOVER;,改变表空间的可用性,该语句中个参数的含义如下: ONLINE 切换表空间为联机状态。 OFFLINE 切换表空间为脱机状态。它包括四个可选参数: NORMAL 正常方式脱机 IMMEDIATE 立即方式脱机 TEMPORARY 临时方式脱机 FOR RECOVER

39、 恢复脱机方式,改变表空间的可用性,使用下面的语句将表空间设为脱机状态: SQLALTER TABLESPACE 2 USERDATA01 OFFLINE NORMAL; 使用下面的语句将表空间设为联机状态: SQLALTER TABLESPACE 2 USERDATA01 ONLINE;,设置表空间的读写模式,任何表空间在初始创建时都是可读写的,但是可以根据需要改变表空间的读写属性。只读状态下的表空间,用户不能对表空间的数据文件进行写操作。设置只读表空间可以消除数据库操作过程中对大量静态数据的备份操作,提高了数据库的执行速度,同时这也是一种很好的保护数据的方法,可以防止对不能修改的表空间中的

40、数据进行写操作。 只读状态的表空间不能创建和修改对象,但能够从其中删除对象,比如表或索引等,因为这些删除操作只影响数据字典,而不会更改表空间对应的数据文件。 设置表空间只读语句为: ALTER TABLESPACE tablespace READ ONLY | WRITE,设置表空间的读写模式,1.设置表空间只读 要将表空间设置为只读,需要满足下列条件: 表空间的所有数据文件必须处于联机状态。 表空间不包含任何活动的回滚段。基于这个原因,SYSTEM表空间不能设置为只读表空间,因为其中包含一个回滚段。 表空间不能正在进行联机备份操作。因为联机备份结束后,Oracle将对数据文件的头部信息进行更

41、新。 设置只读表空间的语句如下: SQLALTER TABLESPACE USERS READ ONLY;,设置表空间的读写模式,2.设置表空间为读写状态 要将表空间恢复成读写状态,必须保证表空间的所有数据文件都处于联机状态,同时表空间本身也处于联机状态。 下面的语句将表空间恢复成读写状态: SQLALTER TABLESPACE USERS 2 READ WRITE;,设置表空间的读写模式,3.在WORM设备上创建只读表空间 WORM(Write Once-Read Many)设备是指类似CD-R的写一次读多次设备。WORM设备是存储只读表空间的理想设备。在WORM设备上创建只读表空间的步骤

42、如下: (1)在硬盘中创建读写表空间,然后将静态数据写入其中。 (2)将表空间设置为只读状态。 (3)将表空间的数据文件复制到WORM设备中。 (4)将表空间设置为脱机状态。 (5)使用带有RENAME DATAFILE子句的ALTER TABLESPACE语句重命名组成表空间的数据文件,使其指向WORM设备中的数据文件。 (6)重新使表空间联机。,删除表空间,删除无用的表空间。 删除表空间命令的语法如下: DROP TABLESPACE tablespace INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; 各参数的含义如下: tab

43、lespace 要删除的表空间名。 INCLUDING CONTENTS 删除表空间中的所有的数据库对象。如果表空间中没有任何对象,则可以不选此项。 AND DATAFILES 删除表空间所包含的数据文件,但这些文件必须具有OMF特征。如果不选此项,Oracle不会自动删除该表空间的数据文件,需要DBA手工删除。 CASCADE CONSTRAINTS 如果其它表空间引用了该表空间中表的主键或者唯一键,选择此项可以删除其他表空间所有指示完整性的约束条件。,删除表空间,如果一个表空间中包含了数据库对象,使用下面的语句来进行删除: SQLDROP TABLESPACE USERDATA01 2 I

44、NCLUDING CONTENTS; 如果表空间是空的,没有包含任何表、视图或其他对象,那么无需使用INCLUDING CONTENTS子句。,删除表空间,如果其他表空间引用了要删除的表空间中表的主键或者唯一键,那么需要使用CASCADE CONSTRAINTS子句来删除其他表空间所有指示完整性的约束条件,比如使用下面的语句: SQLDROP TABLESPACE USERDATA01 2 INCLUDING CONTENTS 3 CASCADE CONSTRAINTS;,删除表空间,默认情况下,删除表空间时,Oracle只是在控制文件和数据字典中删除与表空间和数据文件间相关的信息,但不会在操

45、作系统中删除相应的数据文件。因此,成功执行删除表空间的操作后,需要手工删除操作系统中的数据文件。如果要在删除表空间的同时删除对应的数据文件,需要显式指定INCLUDEING CONTENTS AND DATAFILES子句: SQLDROP TABLESPACE USERDATA01 2 INCLUDING CONTENTS AND DATAFILES;,删除表空间,删除表空间需要注意以下几点: 在表空间删除之前,必须确认其中的数据不需要再使用。 不选用INCLUDING CONTENTS参数,则无法删除包含有数据的表空间。 不能删除SYSTEM表空间。 不选择AND DATAFILES参数,

46、只能删除控制文件和数据字典中的数据文件信息,操作系统的数据文件仍然存在,需要手工删除。选择此项参数,也只能自动删除具有OMF特征的数据文件。 可以删除只读状态的表空间。 删除表空间之前,最好将表空间设置为脱机状态,这样可以确保该表空间中没有活动的事务。,查询表空间信息,与表空间有关的数据字典用户视图和动态性能视图,查询表空间信息,通过查询V$TABLESPACE视图可以获得数据库中所有的表空间。 SQLSELECT NAME FROM V$TABLESPACE; 显示结果为: NAME - SYSTEM UNDOTBS1 TEMP ,查询表空间信息,查询DBA_TABLESPACES视图可以获

47、得数据库中所有表空间的基本信息 SQLSELECT TABLESPACE_NAME TABLESPACE, 2 EXTENT_MANAGEMENT EXTENT, 3 ALLOCATION_TYPE ALLOCATION 4 CONTENTS , 5 SEGMENT_SPACE_MANAGEMENT SEGMENT 6 FROM DBA_TABLESPACES; 显示结果为: TABLESPACE EXTENT ALLOCATION CONTENTS SEGMENT - SYSTEM LOCAL SYSTEM PERMANENT MANUAL UNDOTBS1 LOCAL SYSTEM UND

48、O MANUAL TEMP LOCAL UNIFORM TEMPORARY MANUAL ,查询表空间信息,查询该视图还可以获得各表空间的存储参数,如: SQL SELECT TABLESPACE_NAME NAME, 2 INITIAL_EXTENT INIT, 3 NEXT_EXTENT NEXT, 4 MIN_EXTENTS MIN, 5 MAX_EXTENTS MAX, 6 PCT_INCREASE PCT, 7 MIN_EXTLEN EXTLEN 8 FROM DBA_TABLESPACES; 结果显示为: NAME INIT NEXT MIN MAX PCT EXTLEN - -

49、- - - - - SYSTEM 65536 1 2147483645 65536 UNDOTBS1 65536 1 2147483645 65536 TEMP 1048576 1048576 1 0 1048576 ,撤消空间概述,用户对数据库进行操作时,Oracle数据库将把事务提交前的原始数据保存下来,这些纪录被称作撤消纪录,或者是回退纪录。撤消纪录对于数据库的回退、恢复以及一致性维护是至关重要的。保存撤消纪录的存储空间就是撤消空间。 撤销空间的主要功能: 使用ROLLBACK语句撤消事务 进行数据库恢复 提供数据的读一致性,撤消空间概述,撤消空间 在Oracle中,撤销管理分为两种方式

50、: 自动撤销管理方式 通过撤销表空间实现回退操作,并自动为事务在撤销表空间中分配回退段,保存撤消纪录。 自动撤销管理方式采用撤销表空间进行撤销管理。撤销表空间是Oracle新增加的一种表空间,专门用来保存撤销信息,撤销表空间的存储空间由Oracle自动管理。每一个实例可以有多个撤销表空间,但只能联机一个撤销表空间。 手工撤销管理方式 通过回退段实现回退操作,需要人工在表空间中建立回退段保存撤消纪录。,与自动撤消管理方式相关的初始化参数,撤消空间概述,手工撤消管理方式 手工撤消管理是采用回退段管理撤销记录的方式。回退段是Oracle传统管理撤销记录的方式,需要DBA手工设计、创建和管理回退段,需

51、要考虑回退段的大小、多少、回退段空间利用率、回退段竞争等问题,管理工作比较复杂。,与手工撤消管理相关的初始化参数,ORACLE回滚段管理,回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。 回滚段工作原理 回滚段是磁盘上的一段存储空间,用来保存数据变化前后的映像来提供一致性读,保证事务完整性。,ORACLE回滚段管理,oracle基于两个原则给事务分配回滚段。首先oracle试图将一个新的事务指派给某个拥有最少活动事务数的回滚段;如果没有单

52、个段能满足这 个需求,那么该事务将被指派给某个段来保存undo信息,以便此undo信息能够尽可能长的时间内被用于读一致性视图保留。读一致性保证查询或者返回数据,或者失败。当失败时系统发出ora-01555错误。所以,回滚段中已经提交的事务数据是非常宝贵的。Oracle设法尽可能长的保留回滚段已经提交的数据。 回滚段中的范围以循环的方式被使用。一个事务仅仅使用一个回滚段。当一个范围装满回滚段数据后回滚段就自动使用下一个范围。多个事务可以使用一个范围,但是一个回滚段的数据块只能存放一个事务数据。当回滚段使用完最后一个范围时,当回滚段的第一个范围是不活动的或者不被使用后,回滚段的指针才指向第一个范围

53、。,ORACLE回滚段管理,回滚段的作用 事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。 事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。 读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。当ORACLE执行SELECT语句时,ORACLE依照当前的

54、系统改变号(SYSTEM CHANGE NUMBER-SCN)来保证任何前于当前SCN的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,若其他会话改变了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造一个读一致性视图。,ORACLE回滚段管理,事务级的读一致性 ORACLE一般提供SQL语句级(SQL STATEMENT LEVEL)的读一致性,可以用以下语句来实现事务级的读一致性。 SET TRANSACTION READ ONLY; 或: SET TANNSACTION SERIALIZABLE; 以上两个语句都将在事务开始后提供读一致性。需要注意的

55、是,使用第二个语句对数据库的并发性和性能将带来影响。,ORACLE回滚段管理,回滚段的种类 系统回滚段:当数据库创建后,将自动创建一个系统回滚段,该回滚段只用于存放系统表空间中对象的前影像。 非系统回滚段:拥有多个表空间的数据库至少应该有一个非系统回滚段,用于存放非系统表空间中对象的数据前影像。非系统回滚段又分为私有回滚段和公有回滚段,私有回滚段应在参数文件的ROLLBACK SEGMENTS参数中列出,以便例程启动时自动使其在线(ONLINE)。公有回滚段一般在OPS(ORACLE并行服务器)中出现,将在例程启动时自动在线。 DEFERED回滚段:该回滚段在表空间离线(OFFLINE)时由系统自动创建,当表空间再次在线(ONLINE)时由系统自动删除,用于存放表空间离线时产生的回滚信息。,ORACLE回滚段管理,回滚段的使用 分配回滚段:当事务开始时,ORACLE将为该事务分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论