Oracle10g数据库基础知识培训教材_第1页
Oracle10g数据库基础知识培训教材_第2页
Oracle10g数据库基础知识培训教材_第3页
Oracle10g数据库基础知识培训教材_第4页
Oracle10g数据库基础知识培训教材_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

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、和物理存储结构。逻辑存储结构与操作系统平台无关;物理存储结构与操作系统平台有关。从物理上看,数据库是由控制文件、数据文件、重做日志文件、初始化参数文件等组成的;从逻辑上看,数据库是由表空间组成的。表空间是最大的逻辑存储单位,块是最小的逻辑单位,逻辑存储结构中的块对应于操作系统中的块。逻辑存储结构l 许多初始化参数都是针对逻辑存储结构来定义的。l 逻辑存储结构包括表空间、段、区、块。逻辑存储结构之间的关系是:多个块组成区,多个区组成段、多个段组成表空间、多个表空间组成逻辑数据库。l 一个区只能存在一个数据文件中,一个段中的各个区可以分别在多个数据文件中。组成区的块是连续的。.1表空间表空间是最大

5、的逻辑单位,一个数据库由多个表空间组成,一个表空间可以包含多个数据文件,一个数据文件只能属于一个表空间。ORACLE自动创建的表空间包括:SYSTEM系统表空间、SYSAUX辅助系统表空间、SYSAUX辅助系统表空间、TEMP临时表空间、UNDOTBS1重做表空间、USERS用户表空间等。当SYSTEM表空间被创建为一个本地管理的表空间时,TEMP表空间就是必不可少的,否则他是可选的。SYTEM和SYSAUX表空间值存放系统信息,不存放非系统信息。.2段l 段用于存储表空间中某一个特定的、具有独立存储结构的的数据库对象的数据,它由一个或多个连续的区组成。l ORACLE中可用的段类型:TABL

6、E表段、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、他列的数据会一起存放在表段中;否则数据就会被存储到二进制大对象段中。.3区区是由物理上连续存放的块构成。由一个或多个区组成段。一个区只能属于一个数据文件。当在数据库中创建带有实际存储结构的方案对象时,ORACLE将为该方案对象分配若干个区,以便组成一个对应的段,来为该方案对象提供初始的存储空间。当段中已分配的区都写满后,ORACLE就要在该方案对象所在的表空间中为该段分配下一个新的空白区,以便容纳更多的数据。.4块l 块是最小的数据管理单位。即数据管理中输入输出的最小单位。相应的,操作系统执行输入输出操作的最小单位是操作系统块。块的大小是操作系统块大小的整数倍。l 块大小是一个表空间的属性。S

12、YSTEM和SYSAUX表空间具有相同的标准的块大小,这个大小是在创建数据库时由DB_BLOCK_SIZE初始化参数指定的。在创建数据库之后这个初始化参数值将不能再改变。l 在ORACLE 9I前,同一个数据库中的所有表空间必须使用相同大小的块;从ORACLE 9I开始,允许表空间使用各自不同的块大小,这个大小是在创建该表空间时用BLOCK integer K子句指定的。如果不适用该子句,则可以使用DB_BLOCK_SIZE初始化参数指定的块大小。在使用非标准块之前,必须先为非标准的块分配相应的数据告诉缓存。物理存储结构数据库的物理存储文件有:控制文件、数据文件、重做日志文件、密码文件、参数文

13、件和归档重做日志文件等。逻辑存储结构只有创建、删除的操作;而物理存储结构除了创建、删除之外,还有一个最重要的将其移动到另外一个位置的操作。.1控制文件l 控制文件是一个很小的二进制文件。在装载数据库时,ORACLE将读取控制文件中的信息,以便判断数据库的状态,获得数据库的物理结构信息及物理文件的使用权。因此,控制文件对于数据库的成功装在,以及其后的打开都是至关重要的。只有控制文件正常才能装载、打开数据库,否则不能。l 在数据库运行的过程中,每当出现数据库检查点(checkpoint)或修改数据库结构之后,ORACLE就会修改控制文件的内容。DBA可以通过OEM工具修改控制文件中的部分内容,但是

14、不应该认为的修改控制文件中的内容,否则会破坏控制文件。l 应该定期对数据库的控制文件进行备份,并将备份保存在不同的硬盘上;另外,处于安全考虑,可以创建多个控制文件,互为镜像进行复用。.2数据文件l 数据文件是实际存储插入到数据库表中的实际的操作系统文件。数据文件的大小与它们所存储的数据量的小小直接相关,会自动增大,但删除其中的数据,数据文件的大小不会减少,只能使其有更多的空闲区。l 一个表空间在物理上对应于若干个数据文件,而一个数据文件只能属于一个表空间。l 在创建表空间时,ORACLE会同时为该表空间创建第一个数据文件。处SYSTEM表空间之外,任何表空间都可以由联机状态切换到脱机状态。当表

15、空间进入脱机状态时,组成该表空间的数据文件也就进入脱机状态了。也可以将表空间中的某一个数据文件单独的设置为脱机状态,以便进行数据库的备份或恢复。正在使用的联机数据文件是不能备份的。.3重做日志文件l 当用户对数据库进行修改时,ORACLE实际上是在内容中进行修改,过一段时间后,再几种将内存中的修改结果成批的吸入上面的数据文件中。l 如果在将内存中的修改结果写入到数据文件之前发生故障,导致计算机或数据库崩溃,那么,这些修改结果就会被遗失。ORACLE是用重做日志文件来随时保存这些修改结果的,即ORACLE随时将内存中的修改结果保存到重做日志文件中。“随时”表示在将数据修改结果写入数据文件之前,可

16、能已经分好几次写入重做日志文件了。因此,即使发生故障导致数据库崩溃,ORACLE也可以利用重做日志文件中的信息来恢复丢失的数据。只要某项操作的重做信息没有丢失,就可以利用这些重做信息来重现该操作。l 因为ORACLE是以循环方式来使用重做日志文件的,所以每个数据库至少需要2个以上重做日志文件。当第一个重做日志文件被写满之后,后台进程LGWR开始写入第二个重做日志文件。当第二个重做日志文件写满后,又开始写入第一个重做日志文件。l 当循环使用的重做日志文件比较多、比较大时,可以记录的重做日志就比较多。还可以启动自动归档功能,将即将被覆盖的重做日志文件中的内容存储到另外的归档文件总,以便不丢失任何重

17、做日志,得以恢复任何数据。.4参数文件l 参数文件也被称为初始化参数文件,用于存储SGA、可选的ORACLE特性和后台进程的配置参数。从ORACLE 9I开始,它有2中类型:文本参数文件PFILE和服务器参数文件SPFILE。这两种参数文件的作用都相同,可以使用其中之一来配置例程和数据库选项。文本参数文件可以使用文本编辑器进行编辑;服务器参数文件是二进制文件,不能直接用文本编辑器进行编辑。l 当数据库启动时,并在创建例程或读取控制文件之前,会先读取参数文件,并按期中的参数进行例程的配置。默认使用的是SPFILE。.5口令文件口令文件是个二进制文件,用于验证特权用户。特权用户是指具有SYSOPE

18、R或SYSDBA权限的特殊数据库用户。这些用户可以启动例程、关闭例程、创建数据库、执行备份恢复等操作。创建ORACLE数据库,默认的特权用户是SYS。口令文件的默认位置是%ORACLE_HOME%database,命令格式为PWD<SID>.ora。.6预警文件预警文件按时间顺序记录了由服务器进程、后台进程写入的消息和错误。查看预警文件就可以查看到是否有ORACLE内部错误、块损坏错误,以及非默认的初始化参数,还可以监视特权用户的操作,监视数据库的物理结构的变化。预警文件的位置由初始化参数background_dump_dest确定。命名格式为<SID>_alert.l

19、og。.7后台进程跟踪文件后台进程跟踪文件用来记录后台进程的警告或错误消息。每个后台进程都有相应的跟踪文件。后台进程跟踪文件的位置由初始化参数background_dump_dest确定。命名格式为<SID>_<PROCESS>_<SPID>.trc。.8服务器进程跟踪文件l 该文件用来记录服务器进行的相关信息,跟踪SQL语句,诊断SQL语句性能,做出相应的性能调整规划。当使用该类型跟踪文件来跟踪SQL语句时,必须先激活SQL跟踪。服务器进程跟踪文件的位置由初始化参数user_dump_dest来确定。命名格式为<SID>_ora_<SPI

20、D>.trc。l 激活SQL跟踪的办法是在初始化参数文件中,或是在启动会话时,将参数sql_trace设置成TRUE。.9归档日志文件非活动的重做日志文件的备份。通过使用归档日志文件,可以保留所有历史重做记录。只有在归档模式下才会生成归档日志文件。.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

22、 structure(内存结构)与background process(后台进程);l 内存是用来保存指令代码和缓存数据的。内存是用来保存指令代码和缓存数据的。要运行一个软件程序,必须先要在内存中为其指令代码和缓存数据申请,划分出一个区域,再将其从磁盘上读入,放置到内存,然后才能执行。内存结构是oracle体系结构中最为重要的一部分,内存也是影响数据库性能的第一因素。内存的大小,速度直接影响数据库的运行速度。l 内存结构分为两部分:SGA(System Global Area)区与PGA(Program Global Area)区。2.2.1系统全局区(SGA)l 使用内存最多的是sga,同时

23、也是影响数据库性能的最大参数。l sga是是一块用于加载数据、对象并保存运行状态和数据库控制信息的一块内存区域,在数据库实例启动时分配,当实例关闭时释放,每个实例都用于自己的sga区。l 当数据库启动到nomount状态时,sga区已经分配,同时启动后台进程。.1数据高速缓存区l 据高速缓存保存的是最近从数据文件中读取的数据块,其中的数据可以被所有用户共享.数据高速缓存由许多大小相等的缓存块组成,这些数据可能是被修改过,也可能未经修改。(buffer cache)主要由2个参数决定db_block_buffers和db_block_size, 他们相乘就是buffer cache的数值。l o

24、racle为buffer cache提供了多缓冲池技术,根据不同数据的同步访问方式,将buffer cache分为default,keep,recycle池3部分。对于经常使用的数据,可以在建表时就指定其存在keep池中;对于经常一次性读取使用的数据,可以将其存放在recycle池中;keep池中的数据倾向于一直保存,recycle池中的数据倾向于即时老化,而default池则存放于指定存储池的数据,按照lru算法管理。默认情况下,所有表都使用default池,它的大小就是数据缓存区buffer cache的大小,由初始化参数db_cache_size决定。如果在创建数据表或修改数据表时,指定

25、storage(buffer_pool 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列表中的脏缓存块写入数据文件。已经被写入数据文件的脏缓存块将变成空

28、闲缓存块,并被放入lru列表中。执行完这项工作后,再重新开始搜索,这样就可以找到足够的空闲缓存块了。.2重做日志高速缓存区当使用insert等操作时,oracle都会为这些操作写成重做记录。重做日志高速缓存就是用于存储重做记录的缓存。重做日志并不时直接写入磁盘的,而是首先被写入重做日志高速缓存,当重做日志高速缓存中的重做记录达到一定数量后,再由lgwr写入重做日志文件中。当出现重做日志文件切换时,由arch将重做日志文件中的数据写入归档日志文件中,以做备份。参数为log_buffer,此参数为静态参数,open后不能设置。.3共享池l 保存了最近执行的sql语句,plsql程序和数据字典信息,

29、是堆sql语句和plsql程序进行语法分析,编译,执行的内存区。它主要由数据字典缓存,库缓存组成,参数为shared_pool_size。l 共享池大小由shared_pool_size决定,太小,运行sql语句,plsql程序占用的时间会长,而影响数据库的性能。.3.1数据字典缓存在oracle数据库的运行过程中,oracle会频繁对数据字典中的表,视图进行访问,以便确定操作的数据库对象是否存在,是否具有合适的权限等信息。为了提高访问的效率,oracle在共享池的数据字典缓存中保存了最常使用的数据字典信息,如数据库用户的帐户,数据库的结构信息等。在数据字典缓存中保存的是一条一条的记录,而其它

30、缓存区中保存的是数据块。.3.2库缓存l oracle dbms在执行用户进程提交的各种sql语句,plsql程序之前,先要对其进行语法上的解析,对象上的确认,权限上的判断,操作上的优化等一系列操作,并生成执行计划。这一系列操作会占用一定的系统资源。l 如果多次执行相同sql语句,plsql程序代码,都要进行这一系列操作的话,就会浪费系统资源。库缓存的目的就是用于保存最近解析过的sql语句和plsql程序。这样,oracle在执行一条sql语句,一段plsql程序前,首先在库缓存中进行搜索,查看他们是否已经被解析过。如果有,oracle就利用库缓存中的解析结构和执行计划来执行,而不必再重复对它

31、们进行解析了。这样就会明显提高执行速度。.4大池用于需要大那促的操作提供相对应的内存空间,以便提高这些操作的性能。大池是一个可选的内存结构。dba可以根据实际需要来决定是否再sga区中创建大池。需要大池的操作:数据库备份和恢复,具有大量排序操作的sql语句。并行化的数据库操作。如果没有大池,上述操作所需的内存空间将占据共享池内存。由于这些操作所占据的内存比较多,会导致影响到共享池的使用效率,这时候,就应该考虑在sga区中创建大池,在大池中为这些操作分配内存。.5 java池对java语言的支持,用于存放java代码,java语句的语法分析表等。程序全局区(PGA)程序全局区(PGA,Progr

32、amGlobalArea)是存储区中的一个区域。用户进程连接到数据库,并创建一个对应的会话时,由oracle为服务进程分配的,专门用于当前用户会话的内存区。这个内存区是非共享的,只有服务进程本身才能访问它自己的pga区,而sga区则是所有服务进程都可以共享的内存区。 具体又分成四个区:1、排序区:用于存放排序操作所产生的临时数据,它是影响pga区大小的主要因素,其大小由初始化参数sort_area_size定义。2、会话区:保存会话所具有的权限,角色,性能统计信息。3、游标区:当运行使用游标语句时,oracle会在共享池中为该语句分配上下文区,游标实际上是指向该上下文区的指针。游标区在打开游标

33、时创建,关闭游标时释放。因此在编写使用游标的程序时,应尽量避免反复地打开和关闭游标。4、堆栈区:保存会话中的绑定变量,会话变量以及sql语句运行时的内存结构等信息。后台进程系统为了使性能最佳和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。这些后台进程存在于操作系统中,在实例启动时自动启动,只要数据库还在运行,后台进程一直存在。常用后台进程包括:.1数据库写入进程DBWR 作用:管理数据高速缓存区,以便服务进程总能找到空闲缓存块,用于保存从数据文件中读取的数据块。在满足一定条件时,将dirty列表中的最近未被访问的脏缓存块成批地写入数据文件,以便获得更多的空闲缓存块。使用lru算法

34、将最近正在使用的缓存块继续保留在lru列表中,以免重新读取数据文件才能获得这些缓存块中的数据。通过延迟写来优化磁盘读写操作。启动条件:当dirty列表中的脏缓存块达到一定数量。当服务进程在lru列表中查找了一定数量的缓存块,但还没有查找到空闲缓存块。dbwr进程出现超时,即大约3秒未启动dbwr进程。当出现检查点,lgwr进程通知dbwr进行写操作。dbwr进程的数目不应该超过系统cpu的数目,因为每个处理器同时只能运行一个dbwr进程。.2日志写入程式LGWR 负责管理重做日志高速缓存区的一个后台进称,用于将重做记录从重做日志高速缓冲区写入重做日志文件。每个例程只有一个lgwr进程。启动lg

35、wr进程的条件:用户通过commit语句提交当前事务。重做日志高速缓存被写满三分之一。dbwr进程需要未检查点清楚脏缓存块,即将脏缓存块写入数据文件。lgwr进程出现超时,即大约3秒未启动lgwr进程。.3检查点CKPT l 检查点是一个事件。当该时间发生时,数据高速缓存中的脏缓存块被写入数据文件,同时oracle将对控制文件和数据文件的文件头的同步序号进行修改,记录下当前数据库的结构和状态,以保证数据的同步。通常情况下,检查点发生在重做日志文件切换时。在执行了一个检查点后,oracle知道所有已提交事务对数据库所做的更改已经全部被写入到硬盘中了。此时数据库处于一个完整状态。在发生数据库崩溃后

36、,只需要将数据库恢复到一个检查点执行时刻即可。因此,缩短检查点执行的间隔,可以缩短数据库恢复时所需要的时间。其作用:更新控制文件与数据文件,使其同步。出发dbwr进程,使其将脏缓存块写入数据文件。l oracle有3种检查点:数据库检查点:在每一次重做日志文件切换时,执行数据库检查点。此时dbwr进程将数据高速缓存中所有的脏缓存块写入数据文件中。表空间检查点:在将一个表空间设置未脱机状态时,执行一个表空间检查点。此时dbwr进程只会把数据高速缓存中的与该表空间相关的脏缓存块写入数据文件。时间检查点:即每间隔多长时间执行一次检查。.4系统监视SMON 在例程启动时负责对数据库进行恢复。清理不再使

37、用的临时段。将各个表空间的空闲碎片合并在一起,使之更容易分配。.5进程监视PMON 作用:恢复中断或失败的用户进程,服务进程。清除非正常中断的进程留下的孤儿会话。回退未提交事务。释放进程所占用的各种资源。监视服务进程和调度进程,如果它们失败,则自动重新启动他们。.6归档进程ARCH 负责在重做日志文件切换后将已经写满的重做日志文件复制到归档日志文件中,以防止循环写入重做日志文件时将其覆盖。(只有数据库运行在归档模式下archivelog,arch进程才被启用),要启动arch进程,需要将初始化参数archive_log_start设置为true。arch进程启动后,数据库将具有自动归档功能。但

38、即使数据库运行在归档模式下,如果archive_log_start参数设置为false,arch进程也就不会被启动。这时,当重做日志文件全部被写满后,数据库将被挂起,等待dba进行手工归档。当arch进程正在归档一个重做日志文件时,任何其他进程都不能访问这个重做日志文件。.7恢复进程RECO 用于解决分布式数据库中的故障问题。RECO进程试图访问存在疑问的分布式事务的数据库并解析这些事务。只有在平台支持DistributedOption(分布式选项)中的DISTRIBUTED_TRANSACTIONS参数大于零时才创建这个进程。.8封锁进程LCKn 当采用Oracle并行服务器选项时,多个LC

39、K(锁定进程)后台进程(命名为LCK0LCK9)用于解决内部实例的锁定问题。LCK进程的个数由GC_LCK_PROCS参数决定。2.3数据字典l 数据字典是“信息的信息”,是存储在数据库中的所有对象信息的知识库,Oracle通过数据字典来管理和展现数据库信息。l 数据字典是一组表和视图结构,存放在SYSTEM表空间中。l 数据字典分为两大类:一种为基表,另一种为数据字典视图。Oracle服务器在数据库创建时自动生成基表。由于基表中所存的数据就像天书一样,几乎没什么人能看懂,因此这些基表很少有人直接访问。数据字典视图则是把数据字典基表中的信息转换为人们较为容易理解的形式,它们包含了用户名、用户的

40、权限、对象名、约束和审计等方面的信息。 Oracle数据字典内容包括:1、数据库中所有模式对象的信息,如表、视图、簇、及索引等。2、分配多少空间,当前使用了多少空间等。3、列的缺省值。4、约束信息的完整性。5、Oracle用户的名字。6、用户及角色被授予的权限。7、用户访问或使用的审计信息。8、其它产生的数据库信息。数据字典视图分类主要包括三大类,它们分别用前缀来区别,其前缀分别为USER、ALL和DBA。1、USER_* :有关用户所拥有的对象的信息,即用户自己创建的对象的信息。2、ALL_* :有关用户可以访问的对象的信息,即用户自己创建的对象的信息及授权至PUBLIC的帐户用户所拥有的对

41、象的信息。3、DBA_* :有关整个数据库中对象的信息。这里的*可以为TABLES、INDEXES、VIEWS、OBJECTS等。查看这类数据字典视图的结构:desc user_tables;desc all_tables;desc dba_tables;可以看出,这三类数据字典视图的列几乎是相同的,只是以前缀为ALL和DBA开始的数据字典视图中比USER中多了一列OWNER。l 其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$或GV$开头的。由于当数据库运行的时候它们会不断进行更新,所以称它们为动态数据字典。l V$视图是基于X$虚拟视图的。V$视图是SYS用户所拥有的,在

42、缺省状况下,只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到        USER_和ALL_视图,但不能看到DBA_视图。使用数据字典可以通过查询数据字典dictionary或v$fixed_table来得到Oracle数据库中所有的数据字典视图。数据字典dictionary中只有两列:table_name 和 comments,在comments列中给出了数据字典(系统表)的简单解释。v$fixed_table只是列出数据字典的名和类型等,并未给出任何解释。例子:select *

43、 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 user_indexes; -当前用户拥有哪些索引。select view_n

44、ame from user_views; -当前用户拥有哪些视图。select object_name from user_objects; -当前用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列等。select * from user_users; -当前用户的基本信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。select * from v$instance; -描述当前数据库下的活动的实例的信息。select * from v$session; -描述当前数据库下存在的会话的详细信息。 2.4 Oracle与OPEN-3000系统O

45、racle 数据库是OPEN-3000系统用户数据的存储中心,存储数据包括:1、采样数据:按照采样周期对遥测、遥信定时存储数据入Oracle;2、统计数据:极值统计等报表统计类数据;3、历史告警:机器、设备、网络运行告警系统,遥测、遥信告警信息,厂站、RTU、通道等装置告警信息;4、电网模型:数据库定义,三遥,厂站通道信息,公式总加计算等5、文件数据:制作的画面(参展图、潮流图、曲线画面等)、报表以execl或html格式进行存储;6、根据PDR需要进行前置机报文的存储。PS:画面中的贴片、像素图未存入Oracle中。两种典型的数据库安装方式数据库服务器:至少有两台,冗余配置,安装O

46、racle服务端版本的服务器。当前两种主要数据库安装方式:单机版、RAC版。.1单机版配置两台数据库服务器上分别单独安装一份Oracle数据库,此方式Oracle数据存放在服务器硬盘上,1个数据库对应1个实例(即1个数据库只由1个管理、访问),结构如下:DATABASE1DATABASE2实例1实例2两台单机版数据库,每台机器一个数据库,一个实例.2 RAC版配置Oracle Real Application Server,真正应用集群,简称Oracle RAC ,是Oracle的并行集群,位于不同服务器系统的Oracle实例同时访问同一个Oracle数据库,节点之间通过私有网络进行通信,所有

47、的控制文件、联机日志和数据文件存放在共享的设备上,能够被集群中的所有节点同时读写。结构如下:安装步骤:操作系统(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两个脚本启动、停止数据库。启动数据库脚本内容如下:l

48、snrctl stop“停止监听”lsnrctl start“启动监听”sqlplus /nolog <<EOF“只启动Sql*plus,不进行连接”connect / as sysdba“以数据库管理员身份连接,即sys用户”startup“启动数据库”EOF关闭数据库脚本内容如下:lsnrctl stopsqlplus /nolog <<EOFconnect / as sysdbashutdown immediate“立即关闭数据库”EOFshutdown命令具有四种参数1、Normal: 等待所有已连接的会话session主动退出之后再关闭数据库。2、Immedi

49、ate:等待所有已连接的会话执行完当前的SQL语句之后关闭数据库。3、Transaction:等待所有已连接会话执行完当前事务之后关闭数据库。4、Abort:不做任何等待,立刻关闭数据库。l 其中Normal参数一般不用,因为需要等待其他用户主动退出,因此何时关闭数据库是无法预料的。一般经常使用的是immediate和transaction参数。对OPEN-3000系统来说,因为没什么用户自定义的处理,因此使用immediate参数来关闭数据库就可以了。l 需要特别提醒的是,轻易不要用abort参数来关闭数据库,使用abort参数时,因为数据库被立刻关闭,如果此时有用户正进行数据更新操作,数据

50、库中的内容将无法预料。只用当数据库已经崩溃,无法正常关闭时,才使用abort参数来强制关闭数据库,就像电脑上只用死机时才按reset键一样。3.2 RAC版启动、关闭RAC数据库启动、关闭是与双机软件启动、停止联系在一起的。1、AIX HACMP(IBM)启动:smitty clstart停止: smitty clstop2、HP-UX MC/Service Guard(HP)启动:cmruncl停止:cmhaltc四、 SQL语言入门结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程

51、化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。然而,有些复杂的业务流程要求相应的程序来描述,这种情况下4GL就有些无能为力了。PL/SQL的出现正是为了解决这一问题,PL/SQL是一种过程化语言,属于第三代语言,它与C、 C+、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。4.1 SQL分类:大致分为三大类: DML(Data Manipulation Language)数据操纵语言由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。常见的DML语言中的命令:SEL

52、ECT,DELETE,UPDATE,INSERT DDL (Data Definition Language )数据库定义语言用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束,DDL不需要commit,不可撤销。常见的DDL语言中的命令:CREATE,ALTER,DROP,TRUNCATE DCL(Data Control Language)数据库控制语言数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:1)GRANT:赋于权限SQL> GRANT SELECT O

53、N 表名 TO 用户名;2) REVOKE:回收权限SQL> REVOKE SELECT ON 表名 FROM 用户名;3) ROLLBACK WORK TO SAVEPOINT:回退到某一点。回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK;4) COMMIT WORK:提交在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。(1)显式提交:用COMMIT命令直接完

54、成的提交为显式提交。其格式为:SQL>COMMIT;(2) 隐式提交:用SQL命令间接完成的提交为隐式提交。这些命令是:ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。(3) 自动提交若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:SQL>SET AUTOCOMMIT ON;4.2常用数据类型:4.2.1 Char(n) 类型l 存储固定长度的字符,如果字符长度不够会在右边补空格。比如:n

55、ame char(10),当给name赋值为'zhangsan'时会在右边补充2个空格。char类型的容量为12000bytes,没有指定则默认长度为1。 varchar2(n) 类型l 存储长度可变的字符,和char类型的不同,它不会自动补充空格,且定义时必须指定长度。存储容量为14000 bytes。 Nchar/Nvarchar类型l 和Char/Varchar类型类似,不过用于存储多字节字符,即UNICODE字符数据。 Date类型l 用于存储公元前4712-1-1至公元4712-12-31,存储长度为7 bytes,日期格式由nls_date_format参数指定,如

56、dd-MM-YY,通过Oracle内部函数to_date进行转换,如:to_date(2011-01-01 00:00:00,yyyy-mm-dd hh24:mis:ss) Long类型l 和varchar类似用于存储可变字符数据,但容量最大到2GB,该类型目的是为了保持向后兼容。后续版本的数据库建议采用LOB类型,不再推荐使用Long类型。 RAW类型l 用于存储原始的二进制数据,最大长度为2000bytes,目的也是为了向后兼容,后续版本建议采用LOB类型。 Number(p,s)类型l 存储最大精度38位10进制数。NUMBER是以十进制格式进行储存的,它便于储存,但是电脑会自动将它转换

57、为二进制运算。p是精度 (precision),s是刻度范围(scale)。精度最大值为38,scale的取值范围为-84到127 。p、s可以省略,例如NUMBER(5)、NUMBER。定点数的精度(p)和刻度 (s)遵循以下规则:1、当s>0时(s表示小数点右边的数字的个数):2、当一个数的整数部分的长度 > p-s 时,Oracle就会报错3、当一个数的小数部分的长度 > s 时,Oracle就会舍入。4、当s<0时(s表示小数点左边的数字的个数):5、Oracle就对小数点左边的s个数字进行舍入。6、当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入 Real类型l 最大精度63位二进制,近似18位十进制。 Double precision/Float类型l 最大精度都是126位二进制,近似38位十进制。 Int、integer、smallint类型l 最大精度都是近似38位十进制 l Real、int、integer、smal

温馨提示

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

评论

0/150

提交评论