Oracle基本概念的教案.ppt

上传人:xin****828 文档编号:15474466 上传时间:2020-08-12 格式:PPT 页数:42 大小:1.71MB
收藏 版权申诉 举报 下载
Oracle基本概念的教案.ppt_第1页
第1页 / 共42页
Oracle基本概念的教案.ppt_第2页
第2页 / 共42页
Oracle基本概念的教案.ppt_第3页
第3页 / 共42页
资源描述:

《Oracle基本概念的教案.ppt》由会员分享,可在线阅读,更多相关《Oracle基本概念的教案.ppt(42页珍藏版)》请在装配图网上搜索。

1、Oracle 教 案,第一讲,主讲内容: Oracle系统结构 Oracle数据库的物理结构 Oracle数据库的逻辑结构 STRUCTURE(内存结构) ORACLE数据库的后台进程,Oracle 总体概括,实例由以下组成: SGA, Shared pool (共享池),Database buffer cache(数据库高速缓存),Redo log buffer cache(重做日志缓冲区).ORACLE SERVER 由两个部分组成: 1.INSTANCE :由内存结构和后台进程2.DATABASE:由数据文件,日志文件和控制文件组成。 广告:下载源码就到源码网,,Oracle 系统结构

2、与其他数据库产品不同,Oracle有其自己独特的系统体系结构。Oracle系统体系结构是整个Oracle服务器系统的框架,是管理和应用Oracle数据服务器的基础和核心。 Oracle系统体系结构由三部分组成:逻辑结构、物理结构和实例。其中,实例是维系物理结构和逻辑结构的核心。如图所示: 数据库模式及其物理文件关系示意图,Oracle系统体系结构与功能 不论是Oracle的应用开发还是数据库管理都是以实例作为切入点的。只不过Oracle的应用程序开发主要是以数据库的逻辑对象为主(如表、索引和视图等),而数据库管理则是针对数据库的全部内容。Oracle数据库由构成物理结构的各种文件组成,如数据文

3、件、控制文件和重做日志文件等;实例是Oracle在内存中分配的一段区域SGA和服务器后台进程的集合。Oracle数据库服务器就是数据库和实例的组合。,一、控制文件(Control Files) 控制文件(Control Files)是一个很小的二进制文件,它用于描述数据库的物理结构。数据控制文件一般在安装Oracle系统时自动创建,并且其存放路径由服务器参数文件SPFILEsid.ora的CONTROL_FILES参数值来确定。 由于控制文件存放有数据文件和日志文件等信息,因此Oracle数据库在启动时,数据库须访问控制文件。在数据库的使用过程中,Oracle将不断更新控制文件。如果由于某些原

4、因导致控件文件被损坏,那么数据库也就不能正常工作了。 由于控制文件的重要性,因此一个数据库至少应该包含一个以上的控制文件,Oracle 10g默认包含了3个控制文件,每个控制文件都包含了相同的信息。这样可确保在数据库运行时,如果某个控制文件损坏,Oracle会自动使用另一个控制文件,不致于因某个控制文件损坏而无法启动数据库。 为了获取控制文件的信息,可以通过查询V$CONTROLFILE数据字典获知。查询数据字典V$CONTROLFILE获取数据库的控制文件信息。 如下图:,Oracle-物理结构 Oracle数据库由以下驻留在磁盘上的文件构成:控制文件(Control files)、数据文件

5、(Datafiles)和重做日志文件(Redologs),与数据关联但不是数据构成部分的文件有:password file(口令文件)、Archived Log、Oracle Net等。,控制文件的后缀是ctl。控制文件通常非常小,一般在1M在5M之间,可以修改参数文件中的参数:controlfile_record_keep_time让控制文件更大些。控制文件在Oracle数据库管理系统中管理数据库的状态,是Oracle数据库中重为重要的一个文件,只有Oracle能向控制文件中写入信息,只有Oracle服务器进程在数据库操作时能刷新控制文件。一个数据库实例启动时,先找控制文件,然后由控制文件找

6、到数据文件和日志文件,加载数据库和打开数据库。 二、数据文件(Datafiles) 数据文件是存储在磁盘上的插入到表中的数据。这些数据文件与数据库中表的数据相关。查询视图v$datafile,如下图: 通过查询视图v$datafile可以看到数据库中的数据文件。它们是以dbf(Database file)为后缀。,数据文件(Data File)用于存储数据库数据的文件,如表中的记录,索引,数据字典信息等都存储于数据文件中。在存取数据时,Oracle数据库系统首先从数据文件中读取数据,并存储在内存中的数据缓冲区中。当用户查询数据时,如果所要查询的数据不在数据缓冲区中,则这时Oracle数据库进行

7、启动相应的进程从数据文件中读取数据,并保存到数据缓冲区中。当用户修改数据时,用户对数据的修改保存在数据缓冲区中,然后由Oracle的相应后台进程将数据写入到数据文件中。这样的存取方式减少了磁盘的I/O操作,提高了系统的响应性能。 一个Oracle数据库往往有多个数据文件。这里需要注意的是:当向Oracle数据库中某个表添加数据时,输入到表中的数据可能包含在一个数据文件中,也可能包含在多个数据文件中。换句说话,当在Oracle数据库为中创建一个表时,Oracle数据库系统不会为此在磁盘在上创建一个数据文件。 要了解数据库中数据文件的信息,可以查询数据库字典DBA_DATA_FILES及数据字典V

8、$DATAFILE。数据字典DBA_DATA_FILES描述了数据文件的名称、标识、大小以及对应的表空间信息等,而数据字典V$DATAFILE则描述了数据文件的同步信息。 为了了解DBA_DATA_FILES数据字典的结构,可以使用命令DESC查询该数据字典的结构。通过DESC命令查询DBA_DATA_FILES数据字典的结构。其中FILE_NAME为数据文件的名称及存放路径;FILE_ID为该文件在数据库中的ID号;TABLESPACE_NAME为该数据文件对应的表空间名;BYTES为该数据文件大小;BLOCKS为该数据文件所占用的数据块数。 数据字V$DATAFILE记录了数据文件的动态信

9、息,在不同时间其查询结果是不相同的 其中,FILE#列存放为数据文件的编号;STATUS列存放为数据文件所属的表空间;NAME列为数据文件的名称及存放路径。,三、重做日志文件(Redo Log Files) 用来恢复数据用,记录数据库的改变。可以分为两类日志文件:在线重做日志文件(online redo log files):记录数据库当前的改变,如当前的数据库有三个redo log文件,在数据库运行,先写入第一个文件,如果写满了,再写第二个,到第三个也写满了,就再回头写入到第一个日志文件,把原来的数据覆盖掉。归档日志文件(archived redo logs):把前面的日志文件另存储起来,就

10、变成了归档日志文件。查询视图v$logfile,如下图: 当出现以下事件时,LGWR后台进程写入到当前日志文件组:每三秒钟一个用户确定一个事务重做日志缓存使用三分之一重做日志缓存有1MB的重做信息任何时候数据库检查点发生时,DBWN就开始写入数据。,在Oracle中,日志文件也叫做重做日志文件或重演日志文件(Redo Log Files)。日志文件用于记录对数据库的修改信息,对数据库所作的修改信息都被记录在日志中。这包括用户对数据库中数据的修改和数据库管理员对数据库结构的修改。如果,只是对数据库中的信息进行查询操作,则不会产生日志信息。由于日志文件记录的对数据库的修改信息,如果用户对数据的操作

11、由于出现的故障,而使修改的数据没有保存到数据文件中,那么就可以利用日志文件找到数据的修改,这样以前所做的工作就不会因为故障而丢失。 注 意: 日志文件也是Oracle物理结构文件中最复杂的一类文件,同时也是保证数据库系统安全,以及备份与恢复的重要手段。日志文件的损坏造成的后果比损坏数据文件更严重,日志文件的损坏可能会导致整个数据库系统不能正常使用。 如果用户对一个表中的数据进行了修改,则修改信息首先被记录在日志缓冲区中,当用户提交候改后(或日志缓冲区信息满1/3时或超时3生秒),由LGWR进程将日志信息从日志缓冲区中读出并写到日志文件中。这时数据文件中保存的数据时用户修改后的数据,但是在日志文

12、件中且记录了两组数据,一组是用户修改后的数据;另一组是用记户修改前的数据。根据这些信息,当用户进行了误操作后就可进行恢复。 在Oracle数据库中,日志文件是成组使用的。日志文件的组织单位叫日志文件组,日志文件组中的日志文件叫日志成员。每一个Oracle数据库系统都有多个日志文件组,每一组有一个或多个日志成员(即多个日志文件组成)。为了防止日志文件被物理损坏,在同一个日志文件组中,允许对日志成员进行镜像,镜像的日志成员文件被存储在不同的物理磁盘中。 数据库包含3个日志文件组,每组对应一个日志成员文件,且日志成员文件没有进行镱像。,日志文件的镜像是保证数据库安全的一种方法,被镜像的日志文件应存储

13、在不同的物理磁盘上. 在日志工作过程中,多个日志文件组之间是循环使用的。当一日志文件组被填满后,将会发生日起切换,系统自动转换到另一个日志文件组。如果日志有镜像,则多个镜像文件中存储的信息是完全相同的。 经过上面的分述可知:每个数据库包含多个日志文件组,每组日志文件包含一个或多个日志文件;同一组中的日志文件具有相同的信息,因为同一个日志文件组中的日志成员是镜像关系。同一组中的日志文件被保存最好保存在不同的物理磁盘中。 为了确认系统当前正在使用的日志文件组,可以查询数据字典V$LOG,该数据字典记录了当前日志的使用信息。 其中,V$LOG.GROUP#为日志文件组的编号;BYTES为日志文件组的

14、大小;MEMBERS为该组所包含的日志成员数;STATUS为日志文件组的状态,当其值为CURRENT时,表示该组为系统正在使用的日志文件组。由上面的查询结果可知,Oracle默认为每个日志文件组包含一个日志成员,也就是说,没有为日志文件进行镜像。 同时,数据库管理员也可以使用ALTER SYSTEM命令进行强制的日志切换。使用ALTER SYSTEM命令进行日志切换的形式如下: ALTER SYSTEM SWITCH LOGFILE;,如果所有的日志文件组都被填满后,则系统将日志信息写入到第一个日志文件组中,这时第一个日志文件组中的日志信息可能被覆盖掉。第一个日志文件组中的日志信息是否被覆盖取

15、决于数据库的工作模式。在Oracle数据库中,数据库的运行模式有两种,一种是归档模式(ARCHIVELOG),另一种是非归档模式(NOARCHIVELOG)。 数据库运行在非归档模式时,如果发生日志切换,则日志信息直接被覆盖。而当数据库以归档模式运行时,如果发生日志切换,且需要覆盖已经存的日志信息,则系统将启用ARCH进程将被要覆盖的日志信息保存到磁盘或磁带上形成归档日志。因此,在非归档模式下运行的数据库,只包含历史日志,而没有归档日志。 提 示: 在默认情况下,Oracle不采用归档模式。用户可以通过使用SELECT LOG_MODE FROM V$DATABASE命令查询当前数据库是否工作

16、在归档模式。,四、服务器参数文件 参数文件对于Oracle数据库非常重要,当数据库实例启动时,先找到参数文件,根据参数文件内的初始化参数来初始化实例,如找到数据文件和控制文件等。Oracle允许DBA在数据库实例启动后修改参数的值,这些可以在启动被修改的值称为动态初始化参数(dynamic initialization parameters)。SPFILE(server parameters file)可以自动动态地记录动态参数的值。通过查看视图v$parameter查询初始化参数的值。五、口令文件(Then Password File) 口令文件是可选的,不是必需的。六、告警日志文件 每一个

17、Oracle数据库有一个告警文件,名字为alterdb_name.log(db_name是数据库的名字),这个日志文件存放位置由参数文件中的参数BACKGROUND_DUMP_DEST的值确定,如果没有设置这个参数,Oracle把它放置在默认的位置:$oracle_home/rdbms/log七、跟踪文件(Trace Files) Oracle需要DBA在初始化参数中建立三个不同的跟踪文件目录参数:backgroud dump directory(参数:BACKGROUND_DUMP_DEST)、core dump directory(CORE_DUMP_DEST)、user dump dir

18、ectory(参数:USER_DUMP_DEST)。,oracle-逻辑结构 Oracle的逻辑结构是一种层次结构。主要由:表空间、段、区和数据块等概念组成。逻辑结构是面向用户的,用户使用Oracle开发应用程序使用的就是逻辑结构。数据库存储层次结构及其构成关系,结构对象也从数据块到表空间形成了不同层次的粒度关系。 1.数据块 Oracle数据块(Data Block)是一组连续的操作系统块。分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位。数据块的大小一般是操作系统块大小的整数倍,这样可以避免不必要的系统I/O操作。从Oracle9i开始,在同一数据库中

19、不同表空间的数据块大小可以不同。数据块是Oracle最基本的存储单位,而表空间、段、区间则是逻辑组织的构成成员。在数据库缓冲区中的每一个块都是一个数据块,一个数据块不能跨越多个文件。,数据块的结构主要包括: 标题:包括一般的块信息,如块地址,段类型等。 表目录:包括有关表在该数据块中的行信息。 Oracle体系结构的行目录:包括有关在该数据块中行地址等信息。 行数据:包括表或索引数据。一行可跨越多个数据块。 空闲空间:分配空闲空间是用于插入新的行和需要额外空间的行更新。通过空间管理参数pctfree可控制空间的使用。空闲空间的管理既可以是自动的也可以是手动的。 在数据操作中,有两种语句可以增加

20、数据库块的空闲空间:一个是Delete删除语句,另一个是Update更新现有行。释放的空闲空间可用于insert语句,如果insert语句是与产生空闲空间的语句在同一个事务之中,并在其后执行,则insert语句可直接使用生成的空闲空间。如果insert语句是在一个与产生空闲空间的语句相分离的事务中,则insert语句可在其他事务提交后,并在其需要空间时,使用之前产生的空闲空间。 数据块中释放的空间可能是连续的,也可能不连续。Oracle只有在出现下列情况时,才会合并数据块的空闲空间:当insert或update语句要使用一个数据块,该数据块的空闲空间足以存储新的一行,而且空闲空间均是碎片,数据

21、块中连续空间无法插入一行的时候。除此而外,Oracle在系统性能下降时也需要压缩数据块的空间。能够对空闲空间产生影响的参数有两个:pctfree和pctused。对于手工管理的表空间,在特定段中的所有数据块,可使用两个空间管理参数pctfree和pctused来控制insert和update对空闲空间的使用。当创建或修改表时可指定这两个参数。创建或修改一个拥有自己的索引段的索引时可指定pctfree参数。,pctfree参数为块中行的更新预留了空闲空间的最小百分比,默认值为10。例如,假定在Create table语句中指定了pctfree为20,则说明在该表的数据段内每个数据块的20%被作为

22、可利用的空闲空间,用于更新已在数据块内存在的数据行。其余80%是用于插入新的数据行,直到达到80%为止。显然,pctfree值越小,则为现存行更新所预留的空间越少。因此,如果pctfree设置得太高,则在全表扫描期间增加I/O,浪费磁盘空间;如果pctfree设置得太低,则会导致行迁移。 pctused参数设置了数据块是否是空闲的界限。当数据块的使用空间低于pctused的值时,此数据块标志为空闲,该空闲空间仅用于插入新的行。如果数据块已经达到了由pctfree所确定的上边界时,Oracle就认为此数据块已经无法再插入新的行。例如,假定在Create table语句中指定pctused为40,

23、则当小于或等于39时,该数据块才是可用的。所以,可将数据块填得更满,这样可节省空间,但却增加了处理开销,因为数据块的空闲空间总是要被更新的行占据,所以对数据块需要频繁地进行重新组织。比较低的pctused增加了数据库的空闲空间,但减少了更新操作的处理开销。所以,如果pctused设置过高,则会降低磁盘的利用率导致行迁移;若pctused设置过低,则浪费磁盘空间,增加全表扫描时的I/O输出。pctused是与pctfree相对的参数。 那么,如何选择pctfree和pctused的值呢?有个公式可供参考。显然,pctfree和pctused的之和不能超过100。若两者之和低于100,则空间的利用

24、与系统的I/O之间的最佳平衡点是:pctfree与pctused之和等于100%减去一行的大小占块空间大小的百分比。例如,如果块大小为2048字节,则它需要100个字节的开销,而行大小是390字节(为可用块的20%)。为了充分利用空间,pctfree与pctused之和最好为80%。,那么,怎样确定数据块大小呢?有两个因素需要考虑: 一是数据库环境类型。例如,是DSS环境还是OLTP环境?在数据仓库环境(OLAP或DSS)下,用户需要进行许多运行时间很长的查询,所以应当使用大的数据块。在OLTP系统中,用户处理大量的小型事务,采用较小数据块能够获得更好的效果。 二是SGA的大小。数据库缓冲区的

25、大小由数据块大小和初始化文件的db_block_buffers参数决定。最好设为操作系统I/O的整数倍。 2区 区(Extent)也称为数据区,是一组连续的数据块。当一个表、回滚段或临时段创建或需要附加空间时,系统总是为之分配一个新的数据区。一个数据区不能跨越多个文件,因为它包含连续的数据块。使用区的目的是用来保存特定数据类型的数据,也是表中数据增长的基本单位。在Oracle数据库中,分配空间就是以数据区为单位的。一个Oracle对象包含至少一个数据区。设置一个表或索引的存储参数包含设置它的数据区大小。 3段 段(Segment)是由多个数据区构成的,它是为特定的数据库对象(如表段、索引段、回

26、滚段、临时段)分配的一系列数据区。段内包含的数据区可以不连续,并且可以跨越多个文件。使用段的目的是用来保存特定对象。 一个Oracle数据库有4种类型的段: ,数据段: 数据段也称为表段,它包含数据并且与表和簇相关。当创建一个表时,系统自动创建一个以该表的名字命名的数据段。 索引段: 包含了用于提高系统性能的索引。一旦建立索引,系统自动创建一个以该索引的名字命名的索引段。 回滚段: 包含了回滚信息,并在数据库恢复期间使用,以便为数据库提供读入一致性和回滚未提交的事务,即用来回滚事务的数据空间。当一个事务开始处理时,系统为之分配回滚段,回滚段可以动态创建和撤销。系统有个默认的回滚段,其管理方式既

27、可以是自动的,也可以是手工的。 临时段: 它是Oracle在运行过程中自行创建的段。当一个SQL语句需要临时工作区时,由Oracle建立临时段。一旦语句执行完毕,临时段的区间便退回给系统。,4表空间 Oracle数据库(tablespace)是由若干个表空间构成的。任何数据库对象在存储时都必须存储在某个表空间中。表空间对应于若干个磁盘文件,即表空间是由一个或多个磁盘文件构成的。表空间相当于操作系统中的文件夹,也是数据库逻辑结构与物理文件之间的一个映射。每个数据库至少有一个表空间,表空间的大小等于所有从属于它的数据文件大小的总和。 在Oracle 10g中有以下几种比较特殊的表空间: (1)系统

28、表空间 系统表空间(system tablespace)是每个Oracle数据库都必须具备的。其功能是在系统表空间中存放诸如表空间名称、表空间所含数据文件等数据库管理所需的信息。系统表空间的名称是不可更改的。系统表空间必须在任何时候都可以用,也是数据库运行的必要条件。因此,系统表空间是不能脱机的。 系统表空间包括数据字典、存储过程、触发器和系统回滚段。为避免系统表空间产生存储碎片以及争用系统资源的问题,应创建一个独立的表空间用来单独存储用户数据。 (2)SYSAUX表空间 SYSAUX表空间是随着数据库的创建而创建的,它充当SYSTEM的辅助表空间,主要存储除数据字典以外的其他对象。SYSAU

29、X也是许多Oracle 数据库的默认表空间,它减少了由数据库和DBA管理的表空间数量,降低了SYSTEM表空间的负荷。,(3)临时表空间 相对于其他表空间而言,临时表空间(temp tablespace)主要用于存储Oracle数据库运行期间所产生的临时数据。数据库可以建立多个临时表空间。当数据库关闭后,临时表空间中所有数据将全部被清除。除临时表空间外,其他表空间都属于永久性表空间。 表空间与数据库及数据文件之间的对应关系,管理表空间 在管理表空间时应遵循以下原则: 1)使用多重表空间:采用多重表空间可使数据库操作更灵活。主要体现在以下方面: 将用户数据与数据字典数据相分离,并将不同表空间的数

30、据文件分别存储在不同磁盘上可以降低I/O竞争。 将一个应用的数据与其他应用相分离,可以避免表空间脱机时多个应用受到影响。 可根据需要将单个表空间脱机,从而获得较好的可用性。 通过为不同类型的数据库预留表空间,以达到优化表空间的目的,如更新较高的或只读,或临时段存储等。 备份单个表空间。 2)为用户指定表空间限额:要创建、管理与使用表空间,必须首先以sys用户并以as sysdba身份登录数据库。与Oracle9i不同,在Oracle 10g中,启动SQL*Plus时的帐户和口令不需加引号。命令格式是: sqlplus sys/as sysdba 在Oracle 10g中,创建和管理表空间所使用

31、的数据字典和权限及语句可归纳如下。 1与表空间有关的数据字典 查询和使用与表空间有关的元数据均可从下列数据字典中获得。主要包括:dba_tablespaces、dba_users、dba_ts_quotas、user_tablespaces、user_ts_quotas、user_extents、user_segments、user_free_space、dba_data_files、dba_extents、dba_free_space、dba_segments、dba_temp_files、dba_undo_extents、dba_rollback_segs、dba_data_files、v

32、_$backup_datafile、v_$database_block_corruption、v_$datafile、v_$datafile_copy、v_$datafile_header、v_$rollstat、v_$segment_statistics、v_$undostat等。以v_$开头的数据字典均保存为动态信息。,2与使用表空间有关的系统权限 与表空间有关的主要系统权限有:create tablespace、alter tablespace、drop tablespace、manage tablespace和unlimited tablespace等。 其中,unlimited ta

33、blespace是允许用户无限制地访问所有表空间。出于安全考虑,在授予该权限给用户时应慎重。如果用户不需要该系统权限,最好撤销该权限,否则用户会利用该权限蓄意创建大量对象或复制数据,从而塞满表空间导致数据库服务器崩溃。 3创建永久性的表空间 命令格式: SQLcreateundotablespace tablespace datafile filespecautoextend_clause,filespecautoextend_clause. minimum extent integer kmblocksize integerkloggingnologging default storage_

34、clauseonlineoffline permanenttemporaryextent_management_clausesegment_management_clause minimum extent integerkmblocksize integerk loggingnologgingdefault storage_clauseonlineoffline permanenttemporaryextent_management_clausesegment_management_clause . ;,【例2-1】创建一个名为dalianren的表空间 SQLcreate tablespac

35、e dalianren nologging datafileD:oracleproduct10.2.0oradatadalianrendalianren01.orasize 50m blocksize 8192 extent management local uniform size 256k segment space management auto; 4使一个表空间脱机 命令格式: SQLalter tablespaceoffline; 【例2-2】将表空间dalianren脱机 SQLalter tablespace dalianren offline; 注意 system表空间不能脱机

36、。 5使一个表空间联机 命令格式: SQLalter tablespaceonline; 【例2-3】将表空间dalianren联机 SQLalter tablespace dalianren online; 6使表空间只读 命令格式: SQLalter tablespaceread only; 【例2-4】将表空间dalianren更改为只读 SQLalter tablespace dalianren read only;,7使表空间可读可写 命令格式: SQLalter tablespaceread write; 【例2-5】将表空间dalianren更改为可读写 SQLalter tab

37、lespace dalianren read write; 8创建临时表空间 命令格式: SQLcreate temporary tablespace tempfile sizem autoextend extent management local uniform size; 【例2-6】创建临时表空间temp SQLcreate temporary tablespace temp tempfile D: oracleproduct10.2.0oradata daliantemp01.ora size 500m autoextend off extent management local u

38、niform size 512k; 注意虽然语句alter tablespace中带有temporary关键字,但不能使用带有temporary关键字的alter tablespace语句将一个本地管理的永久表空间转变为本地管理的临时表空间。必须使用create temporary tablespace语句直接创建本地管理的临时表空间。,9添加临时表空间的数据文件 命令格式: SQLalter tablespaceadd tempfile sizem; 【例2-7】为临时表空间temp_ren添加数据文件 SQLalter tablespace temp_ren add tempfile D:

39、oracleproduct10.2.0oradatadaliantemp_ren.dbfsize 100m; 10调整临时表空间的数据文件 命令格式: SQLalter database tempfile resizem; 【例2-8】调整临时表空间的数据文件大小 SQLalter database tempfile D:oracleproduct10.2.0oradatatest temp_ren.ora resize 20m; 11将表空间的数据文件或临时文件脱机 命令格式: SQLalter database datafile offline; 或 SQLalter database t

40、empfile offline; 【例2-9】将表空间的数据文件或临时文件脱机 SQLalter database datafile D:oracleproduct10.2.0oradatadaliantemp_ren.ora offline; 或 SQLalter database tempfile D:oracleproduct10.2.0oradatadaliantemp_ren.oraoffline;,12.将临时表空间联机 命令格式: SQLAlter database tempfile online; 【例2-10】将临时表空间联机 SQLAlter database tempfi

41、le D:oracleproduct10.2.0oradatadaliantemp_ren.ora online; 13.删除表空间,但不删除其文件 命令格式: SQLdrop tablespace; 【例2-11】删除表空间dalianren,但不删除其文件 SQLdrop tablespace dalianren; 14.删除包含目录内容的表空间 命令格式: SQLdrop tablespaceincluding contents; 【例2-12】删除表空间dalianren及其包含的内容 SQLdrop tablespace dalianren including contents; 1

42、5删除包含目录内容和数据文件在内的表空间 命令格式: SQLdrop tablespaceincluding contents and datafiles; 【例2-13】删除表空间dalianren及其包含的内容以及数据文件 SQLdrop tablespace dalianren including contents and datafiles;,16当含有参照性约束时,删除包含目录内容和数据文件在内的表空间 命令格式: SQLdrop tablespaceincluding contents and datafiles cascade constraints; 【例2-14】将表空间da

43、lianren及其包含的内容、数据文件以及相关约束一同删除 SQLdrop tablespace dalianren including contents and datafiles cascade constraints; 17表空间更名 Oracle9i中不能直接将表空间更名。在Oracle 10g可直接更名永久表空间和临时表空间。但是,system和sysaux表空间不能更名。 命令格式: SQLalter tablespacerename to; 【例2-15】将表空间users更改为newusers SQLalter tablespace users rename to newuse

44、rs; 在Oracle 10g中,如果一个撤销表空间通过使用pfile的实例被更名,则警告日志文件中将写入一个信息,提醒用户更改undo_tablespace的参数值。 注意当使用drop tablespace误删除了表空间之后,通过查看alert文件可以确定误操作的时间。该文件位于Oracle_Homeadminbdump目录下,名为alert_.log,如:D:oracleproduct10.2.0admintestbdump目录下的alert_test.log文件。,18多重临时表空间 在Oracle 10g中增加了一个表空间组的概念,通过使用表空间组用户可以使用一个以上的表空间存储临时

45、段。表空间组是在第一个表空间被指定给该组时,由系统自动隐式创建的。例如: 通过添加现有的表空间创建表空间组。 SQLalter tablespace temp tablespace group temp_ts_group; 添加一个新的表空间给该已经创建的表空间组。 SQLcreate temporary tablespace temp2 tempfile D:oracleproduct10.2.0oradatatesttemp201.dbf size 20m tablespace group temp_ts_group; 被指定给组的表空间可在视图中查询得到。 SQLselect*from

46、dba_tablespace_groups; group_nametablespace_name - temp_ts_grouptemp temp_ts_grouptemp2 2 rows selected. SQL 一旦创建了表空间组,就可以将其指定给用户或作为默认的临时表空间,就像一个表空间一样。 将表空间组指定给用户,作为临时表空间。 SQLalter user scott temporary tablespace temp_ts_group;,SQLalter user scott temporary tablespace temp_ts_group; 将表空间组作为默认的临时表空间。

47、 SQLalter database default temporary tablespace temp_ts_group; 表空间也可以从表空间组中移出。 SQLalter tablespace temp2 tablespace group; 查询表空间组。 SQLselect*from dba_tablespace_groups; group_nametablespace_name - temp_ts_grouptemp 1 row selected. SQL 理论上,一个表空间组包含多少表空间是没有最大限制的,但必须至少包含一个表空间。当最后一个表空间被删除后,该表空间组也被隐式地删除。

48、若该表空间组仍然被指定做临时表空间,则不可以删除该组中的最后一个表空间成员。同时,表空间组不能与表空间同名。,表空间的相关查询 列出表空间、表空间的文件、分配的空间、空闲空间以及下一个空闲分区,如下所示。 set linesize 132 set pagesize 60 col tablespace_name format a12 col file_name format a38 col tablespace_kb heading TABLESPACETOTAL KB col kbytes_free heading TOTAL FREEKBYTES select ddf.tablespace_

49、name tablespace_name,ddf.file_name file_name,ddf.bytes/1024 tablespace_kb, sum(fs.bytes)/1024 kbytes_free,max(fs.bytes)/1024 next_free from sys.dba_free_space fs,sys.dba_data_files ddf where ddf.tablespace_name=fs.tablespace_name group by ddf.tablespace_name,ddf.file_name,ddf.bytes/1024 order by ddf

50、.tablespace_name,ddf.file_name; 列出数据文件,表空间名以及大小,如下所示。 col file_name format a50 col tablespace_name format a10 select file_name,tablespace_name,round(bytes/1024000) MB from dba_data_files order by file_name;,列出表空间、大小、空闲空间以及空闲空间的百分比,如下所示。 select ddf.tablespace_name,sum(ddf.bytes) total_space,sum(dfs.b

51、ytes) free_space, round(nvl(sum(dfs.bytes),0)/sum(ddf.bytes)*100),2) pct_free from dba_free_space dfs,dba_data_files ddf where ddf.tablespace_name=dfs.tablespace_name (+) group by ddf.tablespace_name order by ddf.tablespace_name; 计算表空间每个数据文件实际的最小空间以及对应的文件名,其大小与磁盘操作系统中显示的不同,如下所示。该语句运行需要较长时间。 Select s

52、ubstr(df.file_name,1,70) filename,max(de.block_id* (de.bytes/de.blocks)+de.bytes)/1024 min_size from dba_extents de,dba_data_files df where de.file_id=df.file_id group by df.file_name;,Oracle-SGA概述,SGA (System Global Area)是Oracle Instance的 基本组成部分,在实例启动时分配。是一组包含一个Oracle实例的数据和控制信息的共享内存结构。主要是用于存储数据库信息的

53、内存区,该信息为数据库进程所共享(PGA不能共享的)。它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。 SGA几个很重要的特性:1、SGA的构成数据和控制信息,我们下面会详细介绍;2、SGA是共享的,即当有多个用户同时登录了这个实例,SGA中的信息可以被它们同时访问(当涉及到互斥的问题时,由latch和enquence控制);3、一个SGA只服务于一个实例,也就是说,当一台机器上有多个实例运行时,每个实例都有一个自己的SGA尽管SGA来自于OS的共享内存区,但实例之间不能相互访问对方的SGA区。,SGA组

54、成部分,主要包括: 1.数据库高速缓存(the database buffer cache) 2.重演日志缓存(the redo log buffer) 3.共享池(the shared pool) 4.数据字典缓存(he data dictionary cache)以及其它各方面的信息,1.数据高速缓冲区(Data Buffer Cache) 在数据高速缓冲区中存放着Oracle系统最近使用过的数据块(即用户的高速缓冲区),当把数据写入数据库时,它以数据块为单位进行读写,当数据高速缓冲区填满时,则系统自动去掉一些不常被用访问的数据。如果用户要查的数据不在数据高速缓冲区时,Oracle自动从磁

55、盘中去读取。数据高速缓冲区包括三个类型的区: 1) 脏的区(Dirty Buffers):包含有已经改变过并需要写回数据文件的数据块。2) 自由区(Free Buffers):没有包含任何数据并可以再写入的区,Oracle可以从数据文件读数据块区。3) 保留区(Pinned Buffers):此区包含有正在处理的或者明确保留用作将来用的区。 2.Redo Log Buffer Cache缓存对于数据块的所有修改。 主要用于恢复其中的每一项修改记录都被称为redo 条目。利用Redo条目的信息可以重做修改。 3. Shared Pool用于缓存最近被执行的SQL语句和最近被使用的数据定义。 它主

56、要由两个内存结构构成:Library cache和Data dictionary cache 修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;,Libray Cache缓存最近被执行的SQL和PL/SQL的相关信息。实现常用语句的共享,使用LRU算法进行管理,由以下两个结构构成:Shared SQL area、Shared PL/SQL area、Data Dictionary Cache、Data dictionary cache缓存最近被使用的数据库定义。它包括关于数据库文件、表、索引、列、用户、权限以及其它数据库对象的信息。在语法分析阶段

57、,Server Process访问数据字典中的信息以解析对象名和对存取操作进行验证。数据字典信息缓存在内存中有助于缩短响应时间。 4.数据字典缓存(the data dictionary cache) 它包括的信息有:数据库文件,表,索引,列,用户,权限和其他数据对象,在解析间段,服务器进程查看数据字典来决定对象名称和有效的访问的信息,缓存数据字典信息来提高请求反应时间,大小是由共享池的大小来决定的。,Oracle-PGA,PGA(Process Global Area),是server process一段私有内存区,它包含有全局变量,数据结构和一些控制信息。在Oracle8i 中,PGA调整

58、非常复杂,要调整SORT_AREA_SIZE、HASH_AREA_SIZE、BITMAP_MERGE_AREA_SIZE、 CREATE_BITMAP_AREA_SIZE等参数。在ORACLE9I中,只需要调整 PGA_AGGREGATE_TARGET。 -PGA_AGGREGATE_TARGET初始化设置 PGA_AGGREGATE_TARGET的值应该基于Oracle实例可利用内存的总量来设置,这个参数可以被动态的修改。假设Oracle实例可分配4GB的物理内存,剩下的内存分配给操作系统和其它应用程序。你也许会分配80的可用内存给Oracle实例,即3.2G。现在必须在内存中划分SGA和P

59、GA区域。 在OLTP系统中,典型PGA内存设置应该是总内存的较小部分(例如20),剩下80分配给SGA。 OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20% 在DSS系统中,由于会运行一些很大的查询,典型的PGA内存最多分配70的内存。DSS:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%,在这个例子中,总内存4GB,DSS系统,你可以设置PGA_AGGREGATE_TARGET为1600MB,OLTP则为655MB。 -配置PGA自动管理 不用重启DB,直接在线修改。 SQL alter sy

60、stem set workarea_size_policy=auto scope=both; System altered. SQL alter system set pga_aggregate_target=512m scope=both; System altered. SQL show parameter workarea NAME TYPE VALUE- - -workarea_size_policy string AUTO -这个设置成AUTOSQL show parameter pga NAME TYPE VALUE- - -pga_aggregate_target big int

61、eger 536870912 SQL,-监控自动PGA内存管理的性能 V$PGASTAT:这个视图给出了一个实例级别的PGA内存使用和自动分配的统计。 SQL set lines 256SQL set pages 42SQL SELECT * FROM V$PGASTAT; NAME VALUE UNIT- - -aggregate PGA target parameter 536870912 bytes -当前PGA_AGGREGATE_TARGET的值 aggregate PGA auto target 477379584 bytes -当前可用于自动分配了的PGA大小,不应该比PGA_A

62、GGREGATE_TARGET 小 global memory bound 26843136 bytes -自动模式下工作区域的最大大小,Oracle根据工作负载自动调整。 total PGA inuse 6448128 bytestotal PGA allocated 11598848 bytes -PGA的最大分配 maximum PGA allocated 166175744 bytestotal freeable PGA memory 393216 bytes -PGA的最大空闲大小 PGA memory freed back to OS 69074944 bytestotal PGA

63、 used for auto workareas 0 bytes -PGA分配给auto workareas的大小 maximum PGA used for auto workareas 1049600 bytestotal PGA used for manual workareas 0 bytesmaximum PGA used for manual workareas 530432 bytesover allocation count 1118 -实例启动后,发生的分配次数,如果这个值大于0,就要考虑增加pga的值 bytes processed 114895872 bytesextra

64、bytes read/written 4608000 bytescache hit percentage 96.14 percent -命中率 16 rows selected.,-V$PGA_TARGET_ADVICE SQL SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb, ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc, ESTD_OVERALLOC_COUNT FROM v$pga_target_advice; The output of this query might look like the following: TARGET_MB CACHE_HIT_PERC ESTD_OVERALLOC_COUNT- - -63 23 367125 24 30250 30 3375 39 0500 58 0600 59 0700 59 0800 60 0900 60 01000 61 01500 67 02000 76 03000 83 04000 85 0 可以看出当TARGET_MB 为375M是ESTD_OVERALLOC_COUNT=0,所以我们可以将PGA_AGGREGATE_TARGET设置

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!