Oracle10g数据库基础知识培训教材Word格式.docx

上传人:b****1 文档编号:3771707 上传时间:2023-05-02 格式:DOCX 页数:38 大小:184.65KB
下载 相关 举报
Oracle10g数据库基础知识培训教材Word格式.docx_第1页
第1页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第2页
第2页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第3页
第3页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第4页
第4页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第5页
第5页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第6页
第6页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第7页
第7页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第8页
第8页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第9页
第9页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第10页
第10页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第11页
第11页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第12页
第12页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第13页
第13页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第14页
第14页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第15页
第15页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第16页
第16页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第17页
第17页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第18页
第18页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第19页
第19页 / 共38页
Oracle10g数据库基础知识培训教材Word格式.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Oracle10g数据库基础知识培训教材Word格式.docx

《Oracle10g数据库基础知识培训教材Word格式.docx》由会员分享,可在线阅读,更多相关《Oracle10g数据库基础知识培训教材Word格式.docx(38页珍藏版)》请在冰点文库上搜索。

Oracle10g数据库基础知识培训教材Word格式.docx

物理存储结构与操作系统平台有关。

从物理上看,数据库是由控制文件、数据文件、重做日志文件、初始化参数文件等组成的;

从逻辑上看,数据库是由表空间组成的。

表空间是最大的逻辑存储单位,块是最小的逻辑单位,逻辑存储结构中的块对应于操作系统中的块。

2.1.1逻辑存储结构

●许多初始化参数都是针对逻辑存储结构来定义的。

●逻辑存储结构包括表空间、段、区、块。

逻辑存储结构之间的关系是:

多个块组成区,多个区组成段、多个段组成表空间、多个表空间组成逻辑数据库。

●一个区只能存在一个数据文件中,一个段中的各个区可以分别在多个数据文件中。

组成区的块是连续的。

2.1.1.1表空间

表空间是最大的逻辑单位,一个数据库由多个表空间组成,一个表空间可以包含多个数据文件,一个数据文件只能属于一个表空间。

ORACLE自动创建的表空间包括:

SYSTEM系统表空间、SYSAUX辅助系统表空间、SYSAUX辅助系统表空间、TEMP临时表空间、UNDOTBS1重做表空间、USERS用户表空间等。

当SYSTEM表空间被创建为一个本地管理的表空间时,TEMP表空间就是必不可少的,否则他是可选的。

SYTEM和SYSAUX表空间值存放系统信息,不存放非系统信息。

2.1.1.2段

●段用于存储表空间中某一个特定的、具有独立存储结构的的数据库对象的数据,它由一个或多个连续的区组成。

●ORACLE中可用的段类型:

TABLE表段、TABLEPARTITION表分区段、INDEX索引段、INDEXPARTITION索引分区段、CLUSTER簇段、ROLLBACK回退段、DETERREDROLLBACK延迟回退段、UNDO撤销段、TEMPORARY临时段、CACHE高速缓存段、LOB二进制大对象段、LOBINDEX二进制大对象索引段

●段的增大过程是通过增加区的个数而实现的(每次增加一个区)。

每个区的大小是块的整数倍。

(1)表段

表段存储表的所有数据。

当用户创建表时,就会在该用户的默认表空间中为该表分配一个与表名相同的表段,以便将来存储该表的所有数据。

(2)表分区段

表分区段用于存储分区表的所有数据。

当用户创建分区表时,就会在该用户的默认表空间中为该表的每个分区分配一个表分区段。

通过将一个达标的数据分散到不同的表分区段中,就能降低I/O次数,提高性能。

(3)索引段

索引段存储索引的所有数据。

当用户用CREATEINDEX语句创建索引,或在定义约束而自动创建索引时,就会在该用户的默认表空间中为该索引分配一个与索引名相同的索引段。

(4)索引分区段

如果为分区表创建分区索引,则会为每个区分区索引分配一个索引分区段,其功能与表分区段相同。

(5)临时段

临时段存储排序所产生的临时数据。

临时数据首先会被暂存到排序区(属于PGA区)中,当排序区不足以暂存这些临时数据时,则会在该用户的临时表空间中自动创建一个临时段,用于暂存这些临时数据,排序结束时,临时段会自动消除。

执行以下操作时会产生临时数据:

CREATEINDEX,SELECT..ORDERBY,SELECT...GROUPBY,SELECTDISTINCT...,SELECT...UNION,SELECT...INTERSECT,SELECT...MINUS,ANALYZE命令。

在ORACLE中,每个用户都有一个用户分配临时段的临时表空间。

临时表空间一般通用,所有的用户的默认临时表空间都是TEMP表空间。

也可以创建另外的临时表空间,然后在创建用户时或创建用户之后,指定其临时表空间。

建议使用专用的临时表空间作为用户的临时表空间。

(6)回退段

回退段存储数据修改之前的位置和值。

利用这些信息,可以回退未提交的事务,维护数据库的读一致性,并能从例程的崩溃中进行恢复。

回退段的原理与实现是一项十分复杂的技术,已经面临淘汰。

自ORACLE9I来,增加了UNDO(撤销或还原)表空间,并增加了自动撤销管理功能来代替回退段的功能,即用撤销表空间代替回退段,但功能相同。

建议使用自动撤销管理功能中的撤销段,不要使用手动撤销管理的回退功能。

(7)撤销段

撤销表空间用于分配撤销段。

撤销段也用于存储数据修改之前的位置和值。

默认的撤销表空间由初始化参数UNDO_TABLESPACE指定的。

撤销表空间是循环使用的,已提交的撤销记录可能被覆盖,但可以用初始化参数UNDO_RETENTION指定撤销记录在撤销段中的保留时间。

即使在ORACLE中设置初始化参数UNDO_MANAGEMENT为AUTO,即启动自动撤销管理功能,也会在SYSTEM表空间中保留一个SYSTEM回退段,以便存放和处理由ORACLE系统事务产生的撤销数据。

在创建数据库后,运行SQL.BSQ脚本时会自动创建SYSTEM回退段,DBA不需要对它进行任何的维护和管理,也不能删除它。

(8)二进制大对象段

二进制大对象段用于存储LOB数据类型列中的数据,如:

文档,图像,音频,视频等。

创建表时,可以定义LOB数据类型的列,ORACLE会为此自动分配对应的二进制大对象段。

对于LOB列来说,如果数据长度少于40000字节,则与其他列的数据会一起存放在表段中;

否则数据就会被存储到二进制大对象段中。

2.1.1.3区

区是由物理上连续存放的块构成。

由一个或多个区组成段。

一个区只能属于一个数据文件。

当在数据库中创建带有实际存储结构的方案对象时,ORACLE将为该方案对象分配若干个区,以便组成一个对应的段,来为该方案对象提供初始的存储空间。

当段中已分配的区都写满后,ORACLE就要在该方案对象所在的表空间中为该段分配下一个新的空白区,以便容纳更多的数据。

2.1.1.4块

●块是最小的数据管理单位。

即数据管理中输入输出的最小单位。

相应的,操作系统执行输入输出操作的最小单位是操作系统块。

块的大小是操作系统块大小的整数倍。

●块大小是一个表空间的属性。

SYSTEM和SYSAUX表空间具有相同的标准的块大小,这个大小是在创建数据库时由DB_BLOCK_SIZE初始化参数指定的。

在创建数据库之后这个初始化参数值将不能再改变。

●在ORACLE9I前,同一个数据库中的所有表空间必须使用相同大小的块;

从ORACLE9I开始,允许表空间使用各自不同的块大小,这个大小是在创建该表空间时用BLOCKinteger[K]子句指定的。

如果不适用该子句,则可以使用DB_BLOCK_SIZE初始化参数指定的块大小。

在使用非标准块之前,必须先为非标准的块分配相应的数据告诉缓存。

2.1.2物理存储结构

数据库的物理存储文件有:

控制文件、数据文件、重做日志文件、密码文件、参数文件和归档重做日志文件等。

逻辑存储结构只有创建、删除的操作;

而物理存储结构除了创建、删除之外,还有一个最重要的将其移动到另外一个位置的操作。

2.1.2.1控制文件

●控制文件是一个很小的二进制文件。

在装载数据库时,ORACLE将读取控制文件中的信息,以便判断数据库的状态,获得数据库的物理结构信息及物理文件的使用权。

因此,控制文件对于数据库的成功装在,以及其后的打开都是至关重要的。

只有控制文件正常才能装载、打开数据库,否则不能。

●在数据库运行的过程中,每当出现数据库检查点(checkpoint)或修改数据库结构之后,ORACLE就会修改控制文件的内容。

DBA可以通过OEM工具修改控制文件中的部分内容,但是不应该认为的修改控制文件中的内容,否则会破坏控制文件。

●应该定期对数据库的控制文件进行备份,并将备份保存在不同的硬盘上;

另外,处于安全考虑,可以创建多个控制文件,互为镜像进行复用。

2.1.2.2数据文件

●数据文件是实际存储插入到数据库表中的实际的操作系统文件。

数据文件的大小与它们所存储的数据量的小小直接相关,会自动增大,但删除其中的数据,数据文件的大小不会减少,只能使其有更多的空闲区。

●一个表空间在物理上对应于若干个数据文件,而一个数据文件只能属于一个表空间。

●在创建表空间时,ORACLE会同时为该表空间创建第一个数据文件。

处SYSTEM表空间之外,任何表空间都可以由联机状态切换到脱机状态。

当表空间进入脱机状态时,组成该表空间的数据文件也就进入脱机状态了。

也可以将表空间中的某一个数据文件单独的设置为脱机状态,以便进行数据库的备份或恢复。

正在使用的联机数据文件是不能备份的。

2.1.2.3重做日志文件

●当用户对数据库进行修改时,ORACLE实际上是在内容中进行修改,过一段时间后,再几种将内存中的修改结果成批的吸入上面的数据文件中。

●如果在将内存中的修改结果写入到数据文件之前发生故障,导致计算机或数据库崩溃,那么,这些修改结果就会被遗失。

ORACLE是用重做日志文件来随时保存这些修改结果的,即ORACLE随时将内存中的修改结果保存到重做日志文件中。

“随时”表示在将数据修改结果写入数据文件之前,可能已经分好几次写入重做日志文件了。

因此,即使发生故障导致数据库崩溃,ORACLE也可以利用重做日志文件中的信息来恢复丢失的数据。

只要某项操作的重做信息没有丢失,就可以利用这些重做信息来重现该操作。

●因为ORACLE是以循环方式来使用重做日志文件的,所以每个数据库至少需要2个以上重做日志文件。

当第一个重做日志文件被写满之后,后台进程LGWR开始写入第二个重做日志文件。

当第二个重做日志文件写满后,又开始写入第一个重做日志文件。

●当循环使用的重做日志文件比较多、比较大时,可以记录的重做日志就比较多。

还可以启动自动归档功能,将即将被覆盖的重做日志文件中的内容存储到另外的归档文件总,以便不丢失任何重做日志,得以恢复任何数据。

2.1.2.4参数文件

●参数文件也被称为初始化参数文件,用于存储SGA、可选的ORACLE特性和后台进程的配置参数。

从ORACLE9I开始,它有2中类型:

文本参数文件PFILE和服务器参数文件SPFILE。

这两种参数文件的作用都相同,可以使用其中之一来配置例程和数据库选项。

文本参数文件可以使用文本编辑器进行编辑;

服务器参数文件是二进制文件,不能直接用文本编辑器进行编辑。

●当数据库启动时,并在创建例程或读取控制文件之前,会先读取参数文件,并按期中的参数进行例程的配置。

默认使用的是SPFILE。

2.1.2.5口令文件

口令文件是个二进制文件,用于验证特权用户。

特权用户是指具有SYSOPER或SYSDBA权限的特殊数据库用户。

这些用户可以启动例程、关闭例程、创建数据库、执行备份恢复等操作。

创建ORACLE数据库,默认的特权用户是SYS。

口令文件的默认位置是%ORACLE_HOME%database,命令格式为PWD<

SID>

.ora。

2.1.2.6预警文件

预警文件按时间顺序记录了由服务器进程、后台进程写入的消息和错误。

查看预警文件就可以查看到是否有ORACLE内部错误、块损坏错误,以及非默认的初始化参数,还可以监视特权用户的操作,监视数据库的物理结构的变化。

预警文件的位置由初始化参数background_dump_dest确定。

命名格式为<

_alert.log。

2.1.2.7后台进程跟踪文件

后台进程跟踪文件用来记录后台进程的警告或错误消息。

每个后台进程都有相应的跟踪文件。

后台进程跟踪文件的位置由初始化参数background_dump_dest确定。

_<

PROCESS>

SPID>

.trc。

2.1.2.8服务器进程跟踪文件

●该文件用来记录服务器进行的相关信息,跟踪SQL语句,诊断SQL语句性能,做出相应的性能调整规划。

当使用该类型跟踪文件来跟踪SQL语句时,必须先激活SQL跟踪。

服务器进程跟踪文件的位置由初始化参数user_dump_dest来确定。

_ora_<

●激活SQL跟踪的办法是在初始化参数文件中,或是在启动会话时,将参数sql_trace设置成TRUE。

2.1.2.9归档日志文件

非活动的重做日志文件的备份。

通过使用归档日志文件,可以保留所有历史重做记录。

只有在归档模式下才会生成归档日志文件。

2.1.2.10监听程序日志文件、跟踪文件

记录监听程序的启动时间、正在监听的端口、正在运行在哪台计算机上、已经建立了哪些连接等信息。

其默认位置是%ORACLE_HOME%\NETWORK\log,命名格式为listenerX.log,其中listenerX为程序的名称。

2.2实例(Instance)

●数据库实例也称作服务器,是用来访问数据库文件集的存储结构及后台进程的集合.在更多的情况下,数据库实例也被叫做Oracle服务(OracleService)。

在Oracle服务没有被启动之前,用户是无法访问数据库的。

●一个数据库可以被多个实例访问(称为真正的应用群集选项)。

●决定实例的大小及组成的各种参数或者存储在名称init.ora的初始化文件中,或者隐藏在数据库内部的服务器参数文件中.通过spfile引用该文件,spfile存储在spfile.ora文件中。

●Oracle体系结构的基本概念实例中实例启动时读取初始化文件,数据库系统管理员可以修改该文件,对初始化文件的修改只有在下次启动时才有效。

●实例分为两部分:

memorystructure(内存结构)与backgroundprocess(后台进程);

●内存是用来保存指令代码和缓存数据的。

内存是用来保存指令代码和缓存数据的。

要运行一个软件程序,必须先要在内存中为其指令代码和缓存数据申请,划分出一个区域,再将其从磁盘上读入,放置到内存,然后才能执行。

内存结构是oracle体系结构中最为重要的一部分,内存也是影响数据库性能的第一因素。

内存的大小,速度直接影响数据库的运行速度。

●内存结构分为两部分:

SGA(SystemGlobalArea)区与PGA(ProgramGlobalArea)区。

2.2.1系统全局区(SGA)

●使用内存最多的是sga,同时也是影响数据库性能的最大参数。

●sga是是一块用于加载数据、对象并保存运行状态和数据库控制信息的一块内存区域,在数据库实例启动时分配,当实例关闭时释放,每个实例都用于自己的sga区。

●当数据库启动到nomount状态时,sga区已经分配,同时启动后台进程。

2.2.1.1数据高速缓存区

●据高速缓存保存的是最近从数据文件中读取的数据块,其中的数据可以被所有用户共享.数据高速缓存由许多大小相等的缓存块组成,这些数据可能是被修改过,也可能未经修改。

(buffercache)主要由2个参数决定db_block_buffers和db_block_size,他们相乘就是buffercache的数值。

●oracle为buffercache提供了多缓冲池技术,根据不同数据的同步访问方式,将buffercache分为default,keep,recycle池3部分。

对于经常使用的数据,可以在建表时就指定其存在keep池中;

对于经常一次性读取使用的数据,可以将其存放在recycle池中;

keep池中的数据倾向于一直保存,recycle池中的数据倾向于即时老化,而default池则存放于指定存储池的数据,按照lru算法管理。

默认情况下,所有表都使用default池,它的大小就是数据缓存区buffercache的大小,由初始化参数db_cache_size决定。

如果在创建数据表或修改数据表时,指定storage(buffer_poolkeep)或者stroage(buffer_poolrecycle)语句,就设置了这张表使用keep或者recycle缓存区。

这两个缓冲区大小参数是:

db_keep_chche_size和db_recycle_cache_size来决定。

●各缓冲池的设置,可以通过查询v$buffer_pool得到:

selectid,name,block_size,current_size,target_sizefromv$buffer_pool;

缓存块分三种:

1、脏缓存块:

脏缓存块中保存的是已经被修改过的缓存块

2、空闲缓存块:

等待被写入数据

3、命中缓存块:

保存的是最近正在被访问的缓存块。

命中缓存块将始终被保留的数据高速缓存中,不会被写入数据文件。

oracle通过两个列表来管理上述缓存块:

1、dirty列表保存已经被修改但还没有被写入数据文件的脏缓存块。

2、lru(leastrecentlyused)列表保存所有空闲缓存块,命中缓存块,以及还没有被移入dirty列表中的脏缓存块。

可以将lry列表看成一个队列,当数据高速缓存中某个缓存块被访问后,这个缓存块就会被移动到lru列表的头部,而其他缓存块就会向lru列表的尾部移动。

放在尾部的缓存块最先被移出lru列表。

基本流程:

oracle在将数据文件中的数据块复制到数据高速缓存中之前,必须先在数据高速缓存中找到空闲缓存块以便容纳该数据块。

所以oracle将从lru列表的尾部开始搜索,知道找到所需要的空闲缓存为止。

在搜索lru列表时,如果先搜索到的时脏缓存块,就将其移入dirty列表中,然后继续搜索;

如果搜索到的时空闲缓存块,就将数据库写入其中,然后再将该缓存块移动到lru列表的头部。

如果能够搜索到足够的空闲缓存块,既能将所有数据块都写入到对应的空闲缓存块中,则该搜索写入过程结束。

如果没有搜索到足够的空闲缓存块,即不能将所有数据块都写入到对应的空闲缓存块,则oracle将先停止lru列表搜索,激活dbwr进程,开始将dirty列表中的脏缓存块写入数据文件。

已经被写入数据文件的脏缓存块将变成空闲缓存块,并被放入lru列表中。

执行完这项工作后,再重新开始搜索,这样就可以找到足够的空闲缓存块了。

2.2.1.2重做日志高速缓存区

当使用insert等操作时,oracle都会为这些操作写成重做记录。

重做日志高速缓存就是用于存储重做记录的缓存。

重做日志并不时直接写入磁盘的,而是首先被写入重做日志高速缓存,当重做日志高速缓存中的重做记录达到一定数量后,再由lgwr写入重做日志文件中。

当出现重做日志文件切换时,由arch将重做日志文件中的数据写入归档日志文件中,以做备份。

参数为log_buffer,此参数为静态参数,open后不能设置。

2.2.1.3共享池

●保存了最近执行的sql语句,plsql程序和数据字典信息,是堆sql语句和plsql程序进行语法分析,编译,执行的内存区。

它主要由数据字典缓存,库缓存组成,参数为shared_pool_size。

●共享池大小由shared_pool_size决定,太小,运行sql语句,plsql程序占用的时间会长,而影响数据库的性能。

2.2.1.3.1数据字典缓存

在oracle数据库的运行过程中,oracle会频繁对数据字典中的表,视图进行访问,以便确定操作的数据库对象是否存在,是否具有合适的权限等信息。

为了提高访问的效率,oracle在共享池的数据字典缓存中保存了最常使用的数据字典信息,如数据库用户的帐户,数据库的结构信息等。

在数据字典缓存中保存的是一条一条的记录,而其它缓存区中保存的是数据块。

2.2.1.3.2库缓存

●oracledbms在执行用户进程提交的各种sql语句,plsql程序之前,先要对其进行语法上的解析,对象上的确认,权限上的判断,操作上的优化等一系列操作,并生成执行计划。

这一系列操作会占用一定的系统资源。

●如果多次执行相同sql语句,plsql程序代码,都要进行这一系列操作的话,就会浪费系统资源。

库缓存的目的就是用于保存最近解析过的sql语句和plsql程序。

这样,oracle在执行一条sql语句,一段plsql程序前,首先在库缓存中进行搜索,查看他们是否已经被解析过。

如果有,oracle就利用库缓存中的解析结构和执行计划来执行,而不必再重复对它们进行解析了。

这样就会明显提高执行速度。

2.2.1.4大池

用于需要大那促的操作提供相对应的内存空间,以便提高这些操作的性能。

大池是一个可选的内存结构。

dba可以根据实际需要来决定是否再sga区中创建大池。

需要大池的操作:

数据库备份和恢复,具有大量排序操作的sql语句。

并行化的数据库操作。

如果没有大池,上述操作所需的内存空间将占据共享池内存。

由于这些操作所占据的内存比较多,会导致影响到共享池的使用效率,这时候,就应该考虑在sga区中创建大池,在大池中为这些操作分配内存。

2.2.1.5java池

对java语言的支持,用于存放java代码,java语句的语法分析表等。

2.2.2程序全局区(PGA)

程序全局区(PGA,ProgramGlobalArea)是存储区中的一个区域。

用户进程连接到数据库,并创建一个对应的会话时,由oracle为服务进程分配的,专门用于当前用户会话的内存区。

这个内存区是非共享的,只有服务进程本身才能访问它自己的pga区,而sga区则是所有服务进程都可以共享的内存区。

具体又分成四个区:

1、排序区:

用于存放排序操作所产生的临时数据,它是影响pga区大小的主要因素,其大小由初始化参数sort_area_size定义。

2、会话区:

保存会话所具有的权限,角色,性能统计信息。

3、游标区:

当运行使用游标语句时,oracle会在共享池中为该语句分配上下文区,游标实际上是指向该上下文区的指针。

游标区在打开游标时创建,关闭游标时释放。

因此在编写使用游标的程序时,应尽量避免反复地打开和关闭游标。

4、堆栈区:

保存会话中的绑定变量,会

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2