《Oracle10g数据库基础知识培训教材(共39页).doc》由会员分享,可在线阅读,更多相关《Oracle10g数据库基础知识培训教材(共39页).doc(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上Oracle 10g数据库基础知识一、 Oracle数据库简介 数据库技术是20世纪60年代后期产生并发展起来的,是信息技术中发展最快的领域之一。按照数据模型的不同,可以把数据库系统划分为层次数据库、网状数据库、关系数据库和面向对象数据库等。Oracle是关系数据库系统的杰出代表和领跑者。Oracle数据库管理系统的发展过程是一个不断创新的过程。 数据库领域的Oracle代表两个含义:一个是IT界著名的Oracle(甲骨文)公司,另一个就是甲骨文公司的产品Oracle数据库管理系统的简称。目前,Oracle产品覆盖了大、中、小型机等几十种机型,Oracle数据库管理系
2、统已成为世界上使用最广泛的关系数据库系统之一,成为这一领域的领导者与标准制订者。Oracle数据库产品一直占据着数据库市场龙头老大的地位,远远领先于其他公司。 Oracle 10g是Oracle公司为迎接“网格计算”时代的来临而提供的数据库解决方案。2003年9月8日,Oracle公司总裁拉里埃里森在旧金山Oracle用户大会上宣布了全球首个企业网格计算中间件Oracle数据库10g。 Oracle从“i”到“g”的演进:网格是建立在Internet和Web技术和分布计算技术上的,软硬件一体化的新一代网络计算的基础设施,它采用开放、标准的协议,通过对大规模分散资源的有效共享,为动态参与的、由多
3、机构所形成的虚拟组织(virtual organization,VO)协同完成某类应用,提供可扩展的、安全的、一致的、不同等级质量的服务。二、 Oracle 10g的体系结构数据库的体系结构是从某一角度来分析与考察数据库的组成、工作流程与原理以及数据在数据库中的组织与管理机制。Oracle系统体系结构是整个Oracle服务器系统的框架,是管理和应用Oracle数据服务器的基础和核心。Oracle系统体系结构由两部分组成:存储和实例。存储结构包括逻辑结构、物理结构。实例是维系物理结构和逻辑结构的核心。 2.1存储结构ORACLE数据库的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构与操作系
4、统平台无关;物理存储结构与操作系统平台有关。从物理上看,数据库是由控制文件、数据文件、重做日志文件、初始化参数文件等组成的;从逻辑上看,数据库是由表空间组成的。表空间是最大的逻辑存储单位,块是最小的逻辑单位,逻辑存储结构中的块对应于操作系统中的块。2.1.1逻辑存储结构l 许多初始化参数都是针对逻辑存储结构来定义的。l 逻辑存储结构包括表空间、段、区、块。逻辑存储结构之间的关系是:多个块组成区,多个区组成段、多个段组成表空间、多个表空间组成逻辑数据库。l 一个区只能存在一个数据文件中,一个段中的各个区可以分别在多个数据文件中。组成区的块是连续的。2.1.1.1表空间表空间是最大的逻辑单位,一个
5、数据库由多个表空间组成,一个表空间可以包含多个数据文件,一个数据文件只能属于一个表空间。ORACLE自动创建的表空间包括:SYSTEM系统表空间、SYSAUX辅助系统表空间、SYSAUX辅助系统表空间、TEMP临时表空间、UNDOTBS1重做表空间、USERS用户表空间等。当SYSTEM表空间被创建为一个本地管理的表空间时,TEMP表空间就是必不可少的,否则他是可选的。SYTEM和SYSAUX表空间值存放系统信息,不存放非系统信息。2.1.1.2段l 段用于存储表空间中某一个特定的、具有独立存储结构的的数据库对象的数据,它由一个或多个连续的区组成。l ORACLE中可用的段类型:TABLE表段
6、、TABLE PARTITION表分区段、INDEX索引段、INDEX PARTITION索引分区段、CLUSTER簇段、ROLLBACK回退段、DETERRED ROLLBACK延迟回退段、UNDO撤销段、TEMPORARY临时段、CACHE高速缓存段、LOB二进制大对象段、LOBINDEX二进制大对象索引段l 段的增大过程是通过增加区的个数而实现的(每次增加一个区)。每个区的大小是块的整数倍。(1)表段表段存储表的所有数据。当用户创建表时,就会在该用户的默认表空间中为该表分配一个与表名相同的表段,以便将来存储该表的所有数据。(2)表分区段表分区段用于存储分区表的所有数据。当用户创建分区表时
7、,就会在该用户的默认表空间中为该表的每个分区分配一个表分区段。通过将一个达标的数据分散到不同的表分区段中,就能降低I/O次数,提高性能。(3)索引段索引段存储索引的所有数据。当用户用CREATE INDEX语句创建索引,或在定义约束而自动创建索引时,就会在该用户的默认表空间中为该索引分配一个与索引名相同的索引段。(4)索引分区段如果为分区表创建分区索引,则会为每个区分区索引分配一个索引分区段,其功能与表分区段相同。(5)临时段临时段存储排序所产生的临时数据。临时数据首先会被暂存到排序区(属于PGA区)中,当排序区不足以暂存这些临时数据时,则会在该用户的临时表空间中自动创建一个临时段,用于暂存这
8、些临时数据,排序结束时,临时段会自动消除。执行以下操作时会产生临时数据:CREATE INDEX,SELECT.ORDER BY,SELECT.GROUP BY,SELECT DISTINCT.,SELECT.UNION,SELECT.INTERSECT,SELECT.MINUS,ANALYZE命令。在ORACLE中,每个用户都有一个用户分配临时段的临时表空间。临时表空间一般通用,所有的用户的默认临时表空间都是TEMP表空间。也可以创建另外的临时表空间,然后在创建用户时或创建用户之后,指定其临时表空间。建议使用专用的临时表空间作为用户的临时表空间。(6)回退段回退段存储数据修改之前的位置和值。
9、利用这些信息,可以回退未提交的事务,维护数据库的读一致性,并能从例程的崩溃中进行恢复。回退段的原理与实现是一项十分复杂的技术,已经面临淘汰。自ORACLE 9I来,增加了UNDO(撤销或还原)表空间,并增加了自动撤销管理功能来代替回退段的功能,即用撤销表空间代替回退段,但功能相同。建议使用自动撤销管理功能中的撤销段,不要使用手动撤销管理的回退功能。(7)撤销段撤销表空间用于分配撤销段。撤销段也用于存储数据修改之前的位置和值。默认的撤销表空间由初始化参数UNDO_TABLESPACE指定的。撤销表空间是循环使用的,已提交的撤销记录可能被覆盖,但可以用初始化参数UNDO_RETENTION指定撤销
10、记录在撤销段中的保留时间。即使在ORACLE中设置初始化参数UNDO_MANAGEMENT为AUTO,即启动自动撤销管理功能,也会在SYSTEM表空间中保留一个SYSTEM回退段,以便存放和处理由ORACLE系统事务产生的撤销数据。在创建数据库后,运行SQL.BSQ脚本时会自动创建SYSTEM回退段,DBA不需要对它进行任何的维护和管理,也不能删除它。(8)二进制大对象段二进制大对象段用于存储LOB数据类型列中的数据,如:文档,图像,音频,视频等。创建表时,可以定义LOB数据类型的列,ORACLE会为此自动分配对应的二进制大对象段。对于LOB列来说,如果数据长度少于40000字节,则与其他列的
11、数据会一起存放在表段中;否则数据就会被存储到二进制大对象段中。2.1.1.3区区是由物理上连续存放的块构成。由一个或多个区组成段。一个区只能属于一个数据文件。当在数据库中创建带有实际存储结构的方案对象时,ORACLE将为该方案对象分配若干个区,以便组成一个对应的段,来为该方案对象提供初始的存储空间。当段中已分配的区都写满后,ORACLE就要在该方案对象所在的表空间中为该段分配下一个新的空白区,以便容纳更多的数据。2.1.1.4块l 块是最小的数据管理单位。即数据管理中输入输出的最小单位。相应的,操作系统执行输入输出操作的最小单位是操作系统块。块的大小是操作系统块大小的整数倍。l 块大小是一个表
12、空间的属性。SYSTEM和SYSAUX表空间具有相同的标准的块大小,这个大小是在创建数据库时由DB_BLOCK_SIZE初始化参数指定的。在创建数据库之后这个初始化参数值将不能再改变。l 在ORACLE 9I前,同一个数据库中的所有表空间必须使用相同大小的块;从ORACLE 9I开始,允许表空间使用各自不同的块大小,这个大小是在创建该表空间时用BLOCK integer K子句指定的。如果不适用该子句,则可以使用DB_BLOCK_SIZE初始化参数指定的块大小。在使用非标准块之前,必须先为非标准的块分配相应的数据告诉缓存。2.1.2物理存储结构数据库的物理存储文件有:控制文件、数据文件、重做日
13、志文件、密码文件、参数文件和归档重做日志文件等。逻辑存储结构只有创建、删除的操作;而物理存储结构除了创建、删除之外,还有一个最重要的将其移动到另外一个位置的操作。2.1.2.1控制文件l 控制文件是一个很小的二进制文件。在装载数据库时,ORACLE将读取控制文件中的信息,以便判断数据库的状态,获得数据库的物理结构信息及物理文件的使用权。因此,控制文件对于数据库的成功装在,以及其后的打开都是至关重要的。只有控制文件正常才能装载、打开数据库,否则不能。l 在数据库运行的过程中,每当出现数据库检查点(checkpoint)或修改数据库结构之后,ORACLE就会修改控制文件的内容。DBA可以通过OEM
14、工具修改控制文件中的部分内容,但是不应该认为的修改控制文件中的内容,否则会破坏控制文件。l 应该定期对数据库的控制文件进行备份,并将备份保存在不同的硬盘上;另外,处于安全考虑,可以创建多个控制文件,互为镜像进行复用。2.1.2.2数据文件l 数据文件是实际存储插入到数据库表中的实际的操作系统文件。数据文件的大小与它们所存储的数据量的小小直接相关,会自动增大,但删除其中的数据,数据文件的大小不会减少,只能使其有更多的空闲区。l 一个表空间在物理上对应于若干个数据文件,而一个数据文件只能属于一个表空间。l 在创建表空间时,ORACLE会同时为该表空间创建第一个数据文件。处SYSTEM表空间之外,任
15、何表空间都可以由联机状态切换到脱机状态。当表空间进入脱机状态时,组成该表空间的数据文件也就进入脱机状态了。也可以将表空间中的某一个数据文件单独的设置为脱机状态,以便进行数据库的备份或恢复。正在使用的联机数据文件是不能备份的。2.1.2.3重做日志文件l 当用户对数据库进行修改时,ORACLE实际上是在内容中进行修改,过一段时间后,再几种将内存中的修改结果成批的吸入上面的数据文件中。l 如果在将内存中的修改结果写入到数据文件之前发生故障,导致计算机或数据库崩溃,那么,这些修改结果就会被遗失。ORACLE是用重做日志文件来随时保存这些修改结果的,即ORACLE随时将内存中的修改结果保存到重做日志文
16、件中。“随时”表示在将数据修改结果写入数据文件之前,可能已经分好几次写入重做日志文件了。因此,即使发生故障导致数据库崩溃,ORACLE也可以利用重做日志文件中的信息来恢复丢失的数据。只要某项操作的重做信息没有丢失,就可以利用这些重做信息来重现该操作。l 因为ORACLE是以循环方式来使用重做日志文件的,所以每个数据库至少需要2个以上重做日志文件。当第一个重做日志文件被写满之后,后台进程LGWR开始写入第二个重做日志文件。当第二个重做日志文件写满后,又开始写入第一个重做日志文件。l 当循环使用的重做日志文件比较多、比较大时,可以记录的重做日志就比较多。还可以启动自动归档功能,将即将被覆盖的重做日
17、志文件中的内容存储到另外的归档文件总,以便不丢失任何重做日志,得以恢复任何数据。2.1.2.4参数文件l 参数文件也被称为初始化参数文件,用于存储SGA、可选的ORACLE特性和后台进程的配置参数。从ORACLE 9I开始,它有2中类型:文本参数文件PFILE和服务器参数文件SPFILE。这两种参数文件的作用都相同,可以使用其中之一来配置例程和数据库选项。文本参数文件可以使用文本编辑器进行编辑;服务器参数文件是二进制文件,不能直接用文本编辑器进行编辑。l 当数据库启动时,并在创建例程或读取控制文件之前,会先读取参数文件,并按期中的参数进行例程的配置。默认使用的是SPFILE。2.1.2.5口令
18、文件口令文件是个二进制文件,用于验证特权用户。特权用户是指具有SYSOPER或SYSDBA权限的特殊数据库用户。这些用户可以启动例程、关闭例程、创建数据库、执行备份恢复等操作。创建ORACLE数据库,默认的特权用户是SYS。口令文件的默认位置是%ORACLE_HOME%database,命令格式为PWD.ora。2.1.2.6预警文件预警文件按时间顺序记录了由服务器进程、后台进程写入的消息和错误。查看预警文件就可以查看到是否有ORACLE内部错误、块损坏错误,以及非默认的初始化参数,还可以监视特权用户的操作,监视数据库的物理结构的变化。预警文件的位置由初始化参数background_dump_
19、dest确定。命名格式为_alert.log。2.1.2.7后台进程跟踪文件后台进程跟踪文件用来记录后台进程的警告或错误消息。每个后台进程都有相应的跟踪文件。后台进程跟踪文件的位置由初始化参数background_dump_dest确定。命名格式为_.trc。2.1.2.8服务器进程跟踪文件l 该文件用来记录服务器进行的相关信息,跟踪SQL语句,诊断SQL语句性能,做出相应的性能调整规划。当使用该类型跟踪文件来跟踪SQL语句时,必须先激活SQL跟踪。服务器进程跟踪文件的位置由初始化参数user_dump_dest来确定。命名格式为_ora_.trc。l 激活SQL跟踪的办法是在初始化参数文件中
20、,或是在启动会话时,将参数sql_trace设置成TRUE。2.1.2.9归档日志文件非活动的重做日志文件的备份。通过使用归档日志文件,可以保留所有历史重做记录。只有在归档模式下才会生成归档日志文件。2.1.2.10监听程序日志文件、跟踪文件记录监听程序的启动时间、正在监听的端口、正在运行在哪台计算机上、已经建立了哪些连接等信息。其默认位置是%ORACLE_HOME%NETWORKlog,命名格式为listenerX.log,其中listenerX为程序的名称。2.2实例(Instance)l 数据库实例也称作服务器, 是用来访问数据库文件集的存储结构及后台进程的集合. 在更多的情况下,数据库
21、实例也被叫做Oracle服务(OracleService)。在Oracle服务没有被启动之前,用户是无法访问数据库的。l 一个数据库可以被多个实例访问(称为真正的应用群集选项)。l 决定实例的大小及组成的各种参数或者存储在名称init.ora的初始化文件中, 或者隐藏在数据库内部的服务器参数文件中. 通过spfile引用该文件, spfile存储在spfile.ora文件中。l Oracle体系结构的基本概念实例中实例启动时读取初始化文件, 数据库系统管理员可以修改该文件, 对初始化文件的修改只有在下次启动时才有效。l 实例分为两部分: memory structure(内存结构)与backg
22、round process(后台进程);l 内存是用来保存指令代码和缓存数据的。内存是用来保存指令代码和缓存数据的。要运行一个软件程序,必须先要在内存中为其指令代码和缓存数据申请,划分出一个区域,再将其从磁盘上读入,放置到内存,然后才能执行。内存结构是oracle体系结构中最为重要的一部分,内存也是影响数据库性能的第一因素。内存的大小,速度直接影响数据库的运行速度。l 内存结构分为两部分:SGA(System Global Area)区与PGA(Program Global Area)区。2.2.1系统全局区(SGA)l 使用内存最多的是sga,同时也是影响数据库性能的最大参数。l sga是是
23、一块用于加载数据、对象并保存运行状态和数据库控制信息的一块内存区域,在数据库实例启动时分配,当实例关闭时释放,每个实例都用于自己的sga区。l 当数据库启动到nomount状态时,sga区已经分配,同时启动后台进程。2.2.1.1数据高速缓存区l 据高速缓存保存的是最近从数据文件中读取的数据块,其中的数据可以被所有用户共享.数据高速缓存由许多大小相等的缓存块组成,这些数据可能是被修改过,也可能未经修改。(buffer cache)主要由2个参数决定db_block_buffers和db_block_size, 他们相乘就是buffer cache的数值。l oracle为buffer cach
24、e提供了多缓冲池技术,根据不同数据的同步访问方式,将buffer cache分为default,keep,recycle池3部分。对于经常使用的数据,可以在建表时就指定其存在keep池中;对于经常一次性读取使用的数据,可以将其存放在recycle池中;keep池中的数据倾向于一直保存,recycle池中的数据倾向于即时老化,而default池则存放于指定存储池的数据,按照lru算法管理。默认情况下,所有表都使用default池,它的大小就是数据缓存区buffer cache的大小,由初始化参数db_cache_size决定。如果在创建数据表或修改数据表时,指定storage(buffer_po
25、ol keep)或者stroage(buffer_pool recycle)语句,就设置了这张表使用keep或者recycle缓存区。这两个缓冲区大小参数是:db_keep_chche_size和db_recycle_cache_size来决定。l 各缓冲池的设置,可以通过查询v$buffer_pool得到:select id,name,block_size,current_size,target_size from v$buffer_pool;缓存块分三种:1、脏缓存块:脏缓存块中保存的是已经被修改过的缓存块2、空闲缓存块:等待被写入数据3、命中缓存块:保存的是最近正在被访问的缓存块。命中缓
26、存块将始终被保留的数据高速缓存中,不会被写入数据文件。oracle通过两个列表来管理上述缓存块:1、dirty列表保存已经被修改但还没有被写入数据文件的脏缓存块。2、lru (least recently used)列表保存所有空闲缓存块,命中缓存块,以及还没有被移入dirty列表中的脏缓存块。可以将lry列表看成一个队列,当数据高速缓存中某个缓存块被访问后,这个缓存块就会被移动到lru列表的头部,而其他缓存块就会向lru列表的尾部移动。放在尾部的缓存块最先被移出lru列表。基本流程:oracle在将数据文件中的数据块复制到数据高速缓存中之前,必须先在数据高速缓存中找到空闲缓存块以便容纳该数据
27、块。所以oracle将从lru列表的尾部开始搜索,知道找到所需要的空闲缓存为止。在搜索lru列表时,如果先搜索到的时脏缓存块,就将其移入dirty列表中,然后继续搜索;如果搜索到的时空闲缓存块,就将数据库写入其中,然后再将该缓存块移动到lru列表的头部。如果能够搜索到足够的空闲缓存块,既能将所有数据块都写入到对应的空闲缓存块中,则该搜索写入过程结束。如果没有搜索到足够的空闲缓存块,即不能将所有数据块都写入到对应的空闲缓存块,则oracle将先停止lru列表搜索,激活dbwr进程,开始将dirty列表中的脏缓存块写入数据文件。已经被写入数据文件的脏缓存块将变成空闲缓存块,并被放入lru列表中。执
28、行完这项工作后,再重新开始搜索,这样就可以找到足够的空闲缓存块了。2.2.1.2重做日志高速缓存区当使用insert等操作时,oracle都会为这些操作写成重做记录。重做日志高速缓存就是用于存储重做记录的缓存。重做日志并不时直接写入磁盘的,而是首先被写入重做日志高速缓存,当重做日志高速缓存中的重做记录达到一定数量后,再由lgwr写入重做日志文件中。当出现重做日志文件切换时,由arch将重做日志文件中的数据写入归档日志文件中,以做备份。参数为log_buffer,此参数为静态参数,open后不能设置。2.2.1.3共享池l 保存了最近执行的sql语句,plsql程序和数据字典信息,是堆sql语句
29、和plsql程序进行语法分析,编译,执行的内存区。它主要由数据字典缓存,库缓存组成,参数为shared_pool_size。l 共享池大小由shared_pool_size决定,太小,运行sql语句,plsql程序占用的时间会长,而影响数据库的性能。2.2.1.3.1数据字典缓存在oracle数据库的运行过程中,oracle会频繁对数据字典中的表,视图进行访问,以便确定操作的数据库对象是否存在,是否具有合适的权限等信息。为了提高访问的效率,oracle在共享池的数据字典缓存中保存了最常使用的数据字典信息,如数据库用户的帐户,数据库的结构信息等。在数据字典缓存中保存的是一条一条的记录,而其它缓存
30、区中保存的是数据块。2.2.1.3.2库缓存l oracle dbms在执行用户进程提交的各种sql语句,plsql程序之前,先要对其进行语法上的解析,对象上的确认,权限上的判断,操作上的优化等一系列操作,并生成执行计划。这一系列操作会占用一定的系统资源。l 如果多次执行相同sql语句,plsql程序代码,都要进行这一系列操作的话,就会浪费系统资源。库缓存的目的就是用于保存最近解析过的sql语句和plsql程序。这样,oracle在执行一条sql语句,一段plsql程序前,首先在库缓存中进行搜索,查看他们是否已经被解析过。如果有,oracle就利用库缓存中的解析结构和执行计划来执行,而不必再重
31、复对它们进行解析了。这样就会明显提高执行速度。2.2.1.4大池用于需要大那促的操作提供相对应的内存空间,以便提高这些操作的性能。大池是一个可选的内存结构。dba可以根据实际需要来决定是否再sga区中创建大池。需要大池的操作:数据库备份和恢复,具有大量排序操作的sql语句。并行化的数据库操作。如果没有大池,上述操作所需的内存空间将占据共享池内存。由于这些操作所占据的内存比较多,会导致影响到共享池的使用效率,这时候,就应该考虑在sga区中创建大池,在大池中为这些操作分配内存。2.2.1.5 java池对java语言的支持,用于存放java代码,java语句的语法分析表等。2.2.2程序全局区(P
32、GA)程序全局区(PGA,ProgramGlobalArea)是存储区中的一个区域。用户进程连接到数据库,并创建一个对应的会话时,由oracle为服务进程分配的,专门用于当前用户会话的内存区。这个内存区是非共享的,只有服务进程本身才能访问它自己的pga区,而sga区则是所有服务进程都可以共享的内存区。 具体又分成四个区:1、排序区:用于存放排序操作所产生的临时数据,它是影响pga区大小的主要因素,其大小由初始化参数sort_area_size定义。2、会话区:保存会话所具有的权限,角色,性能统计信息。3、游标区:当运行使用游标语句时,oracle会在共享池中为该语句分配上下文区,游标实际上是指
33、向该上下文区的指针。游标区在打开游标时创建,关闭游标时释放。因此在编写使用游标的程序时,应尽量避免反复地打开和关闭游标。4、堆栈区:保存会话中的绑定变量,会话变量以及sql语句运行时的内存结构等信息。2.2.3后台进程系统为了使性能最佳和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。这些后台进程存在于操作系统中,在实例启动时自动启动,只要数据库还在运行,后台进程一直存在。常用后台进程包括:2.2.3.1数据库写入进程DBWR 作用:管理数据高速缓存区,以便服务进程总能找到空闲缓存块,用于保存从数据文件中读取的数据块。在满足一定条件时,将dirty列表中的最近未被访问的脏缓存块成批
34、地写入数据文件,以便获得更多的空闲缓存块。使用lru算法将最近正在使用的缓存块继续保留在lru列表中,以免重新读取数据文件才能获得这些缓存块中的数据。通过延迟写来优化磁盘读写操作。启动条件:当dirty列表中的脏缓存块达到一定数量。当服务进程在lru列表中查找了一定数量的缓存块,但还没有查找到空闲缓存块。dbwr进程出现超时,即大约3秒未启动dbwr进程。当出现检查点,lgwr进程通知dbwr进行写操作。dbwr进程的数目不应该超过系统cpu的数目,因为每个处理器同时只能运行一个dbwr进程。2.2.3.2日志写入程式LGWR 负责管理重做日志高速缓存区的一个后台进称,用于将重做记录从重做日志
35、高速缓冲区写入重做日志文件。每个例程只有一个lgwr进程。启动lgwr进程的条件:用户通过commit语句提交当前事务。重做日志高速缓存被写满三分之一。dbwr进程需要未检查点清楚脏缓存块,即将脏缓存块写入数据文件。lgwr进程出现超时,即大约3秒未启动lgwr进程。2.2.3.3检查点CKPT l 检查点是一个事件。当该时间发生时,数据高速缓存中的脏缓存块被写入数据文件,同时oracle将对控制文件和数据文件的文件头的同步序号进行修改,记录下当前数据库的结构和状态,以保证数据的同步。通常情况下,检查点发生在重做日志文件切换时。在执行了一个检查点后,oracle知道所有已提交事务对数据库所做的
36、更改已经全部被写入到硬盘中了。此时数据库处于一个完整状态。在发生数据库崩溃后,只需要将数据库恢复到一个检查点执行时刻即可。因此,缩短检查点执行的间隔,可以缩短数据库恢复时所需要的时间。其作用:更新控制文件与数据文件,使其同步。出发dbwr进程,使其将脏缓存块写入数据文件。l oracle有3种检查点:数据库检查点:在每一次重做日志文件切换时,执行数据库检查点。此时dbwr进程将数据高速缓存中所有的脏缓存块写入数据文件中。表空间检查点:在将一个表空间设置未脱机状态时,执行一个表空间检查点。此时dbwr进程只会把数据高速缓存中的与该表空间相关的脏缓存块写入数据文件。时间检查点:即每间隔多长时间执行
37、一次检查。2.2.3.4系统监视SMON 在例程启动时负责对数据库进行恢复。清理不再使用的临时段。将各个表空间的空闲碎片合并在一起,使之更容易分配。2.2.3.5进程监视PMON 作用:恢复中断或失败的用户进程,服务进程。清除非正常中断的进程留下的孤儿会话。回退未提交事务。释放进程所占用的各种资源。监视服务进程和调度进程,如果它们失败,则自动重新启动他们。2.2.3.6归档进程ARCH 负责在重做日志文件切换后将已经写满的重做日志文件复制到归档日志文件中,以防止循环写入重做日志文件时将其覆盖。(只有数据库运行在归档模式下archivelog,arch进程才被启用),要启动arch进程,需要将初
38、始化参数archive_log_start设置为true。arch进程启动后,数据库将具有自动归档功能。但即使数据库运行在归档模式下,如果archive_log_start参数设置为false,arch进程也就不会被启动。这时,当重做日志文件全部被写满后,数据库将被挂起,等待dba进行手工归档。当arch进程正在归档一个重做日志文件时,任何其他进程都不能访问这个重做日志文件。2.2.3.7恢复进程RECO 用于解决分布式数据库中的故障问题。RECO进程试图访问存在疑问的分布式事务的数据库并解析这些事务。只有在平台支持DistributedOption(分布式选项)中的DISTRIBUTED_T
39、RANSACTIONS参数大于零时才创建这个进程。2.2.3.8封锁进程LCKn 当采用Oracle并行服务器选项时,多个LCK(锁定进程)后台进程(命名为LCK0LCK9)用于解决内部实例的锁定问题。LCK进程的个数由GC_LCK_PROCS参数决定。2.3数据字典l 数据字典是“信息的信息”,是存储在数据库中的所有对象信息的知识库,Oracle通过数据字典来管理和展现数据库信息。l 数据字典是一组表和视图结构,存放在SYSTEM表空间中。l 数据字典分为两大类:一种为基表,另一种为数据字典视图。Oracle服务器在数据库创建时自动生成基表。由于基表中所存的数据就像天书一样,几乎没什么人能看
40、懂,因此这些基表很少有人直接访问。数据字典视图则是把数据字典基表中的信息转换为人们较为容易理解的形式,它们包含了用户名、用户的权限、对象名、约束和审计等方面的信息。2.3.1 Oracle数据字典内容包括:1、数据库中所有模式对象的信息,如表、视图、簇、及索引等。2、分配多少空间,当前使用了多少空间等。3、列的缺省值。4、约束信息的完整性。5、Oracle用户的名字。6、用户及角色被授予的权限。7、用户访问或使用的审计信息。8、其它产生的数据库信息。2.3.2数据字典视图分类主要包括三大类,它们分别用前缀来区别,其前缀分别为USER、ALL和DBA。1、USER_* :有关用户所拥有的对象的信
41、息,即用户自己创建的对象的信息。2、ALL_* :有关用户可以访问的对象的信息,即用户自己创建的对象的信息及授权至PUBLIC的帐户用户所拥有的对象的信息。3、DBA_* :有关整个数据库中对象的信息。这里的*可以为TABLES、INDEXES、VIEWS、OBJECTS等。查看这类数据字典视图的结构:desc user_tables;desc all_tables;desc dba_tables;可以看出,这三类数据字典视图的列几乎是相同的,只是以前缀为ALL和DBA开始的数据字典视图中比USER中多了一列OWNER。l 其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$或G
42、V$开头的。由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典。l V$视图是基于X$虚拟视图的。V$视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到 USER_和ALL_视图,但不能看到DBA_视图。2.3.3使用数据字典可以通过查询数据字典dictionary或v$fixed_table来得到Oracle数据库中所有的数据字典视图。数据字典dictionary中只有两列:table_name 和 comments,在comments列中给出了数据字典(系统表)的简单解释。v$fixed_tabl
43、e只是列出数据字典的名和类型等,并未给出任何解释。例子:select * from dictionary; -该用户可使用的所有表,有些表并非它所拥有。select * from dict; -功能同上。dict是dictionary的同义词。select * from user_table; -当前用户拥有的所有的表。select * from user_catalog; -功能同上,但它只显示所拥有表的名字和类型,比使用user_tables更简单。select * from cat; -功能同上。cat是user_catalog的别名。select index_name from use
44、r_indexes; -当前用户拥有哪些索引。select view_name from user_views; -当前用户拥有哪些视图。select object_name from user_objects; -当前用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列等。select * from user_users; -当前用户的基本信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。select * from v$instance; -描述当前数据库下的活动的实例的信息。select * from v$session; -描述当前数据库下存在的会
45、话的详细信息。2.4 Oracle与OPEN-3000系统Oracle数据库是OPEN-3000系统用户数据的存储中心,存储数据包括:1、采样数据:按照采样周期对遥测、遥信定时存储数据入Oracle;2、统计数据:极值统计等报表统计类数据;3、历史告警:机器、设备、网络运行告警系统,遥测、遥信告警信息,厂站、RTU、通道等装置告警信息;4、电网模型:数据库定义,三遥,厂站通道信息,公式总加计算等5、文件数据:制作的画面(参展图、潮流图、曲线画面等)、报表以execl或html格式进行存储;6、根据PDR需要进行前置机报文的存储。PS:画面中的贴片、像素图未存入Oracle中。2.4.1两种典型
46、的数据库安装方式数据库服务器:至少有两台,冗余配置,安装Oracle服务端版本的服务器。当前两种主要数据库安装方式:单机版、RAC版。2.4.1.1单机版配置两台数据库服务器上分别单独安装一份Oracle数据库,此方式Oracle数据存放在服务器硬盘上,1个数据库对应1个实例(即1个数据库只由1个管理、访问),结构如下:DATABASE1DATABASE2实例1实例2两台单机版数据库,每台机器一个数据库,一个实例2.4.1.2 RAC版配置Oracle Real Application Server,真正应用集群,简称Oracle RAC ,是Oracle的并行集群,位于不同系统的Oracle
47、实例同时访问同一个Oracle数据库,节点之间通过私有进行,所有的控制文件、联机日志和数据文件存放在共享的设备上,能够被集群中的所有节点同时读写。结构如下:安装步骤:操作系统(OS)OS patchC/C+编译器HACMP(IBM)/ MC/Service Guard(HP) 操作系统双机软件Oracle crs (Oracle双机软件)Oracle软件Oracle patch三、 启动和关闭数据库单机版和RAC版数据库的启动、关闭有所区别。3.1单机版启动、关闭启动和关闭数据库一般采用Oracle的Sql*plus工具。启动与关闭应当分别在数据库服务器的Oracle用户下执行startdb和stopdb两个脚本启动、停止数据库。3.1.1启动数据库脚本内容如下:lsnrctl stop“停止监听”lsnrctl start“启动监听”sqlplus /nolog EOF“只启动Sql*plus,不进行连接”connect / as sysdba“以数据库管理员身份连接,即sys用户”startup“启动数据库”EOF3.1.2关闭数据库脚本内容如下:lsnrctl stopsqlplus /nolog EOFconnect / as sysdbashutdown imme