目录
1.11g的物理结构和逻辑结构
2.全局系统区SGA和程序全局区PGA
3. 9i中的自动PGA管理
4. 10g中的自动SGA管理和MMAN进程和MMON进程
5. 11g中的AMM配置和MMAN进程
6.11g默认表空间的结构和特点
1.11g的物理结构和逻辑结构
1.1 Oracle服务器由Oracle数据库和Oracle实例组成。Oracle数据库里的是看得见的,这些数据存放在数据文件里,也就是存放在内存中,是具有物理概念的。而Oracle实例指的是内存结构和后台进程的集合。相当于C++把数据封装起来的类一样,是具有逻辑概念的。内存结构包含全局系统区SGA和程序全局区PGA,后台进程包括PMON,SMON、CKPT、LGWR、ARC等.
实例启动时,先分配好内存再启动后台进程。
主要物理文件包括3类:数据文件,日志文件,控制文件。 非主要物理文件包括:参数文件、密码文件,告警和跟踪文件、归档日志文件、备份文件。丢失主要物理文件,数据库无法运行。控制文件是记录数据库物理结构的二进制文件。日志文件记录了对数据库的所有修改信息,用于数据恢复。select * from v$datafile 可以开数据文件信息,v$controlfile控制文件信息,v$logfile日志文件信息。在SQL_PLUS窗口输入 show parameter spfile ;查看参数文件信息。$ORACLE_HOME/database/PWD%ORACLE_SID%.ora为密码文件
show param dump_dest来查询告警跟踪文件;show parameter log_archive_format查询归档日志文件
1.2 逻辑结构是看不见的。为便于管理,Oracle在逻辑层面上划分,一个数据库由多个表空间组成;一个表空间由多个段组成;一个段由多个区组成,一个区由多个数据块组成。数据块是存储、读写数据的最小单位。
表空间由一个或多个数据文件.dbf 组成。一个数据文件只能属于一个表空间。v$tablespace,v$datafile联合查询可以查看表空间信息。 如果段存放的是数据信息就叫数据段,如果这个段存放回滚信息就叫回滚段,类似的还有索引段,临时段。段扩展会再分配一个区,一个区只能存储于一个数据文件中;数据块默认是8k(8192)字节,db_block_size,show param db_block_size 尽管只需要几个字节的数据,也会把整个数据块数据都取下来。
2.全局系统区SGA和程序全局区PGA
2.1SGA:
一般情况下,SGA使用Oracle整个内存的80%,而PGA使用Oracle内存的20%。Oracle实例启动时分配SGA,服务器进程(Server Process)启动时分配PGA.。数据库信息存储于SGA,由多个数据库进程共享。
SGA内存又包含了6个部分:共享池,数据缓冲区、日志缓冲区、Large池、stream流池、JAVA池。
共享池是SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。共享池由库缓存和数据字典缓存组成,它的内存大小直接影响了数据库的性能。编译后的语句就会放进共享池中,之后如果重复执行的SQL,就会先查共享池里是否有已经好的语句。如果有 则直接执行,可以省去了编译的步骤。相当于JAVA里面的 .class文件。也就是说只要执行的SQL语句发生了更新,更新的部分要重新编译一遍。
数据缓冲区:所有用户共享,用于存储从磁盘数据文件中读入的数据。因为 用户直接从硬盘存取频繁地IO会导致速度会非常慢,所以,Oracle设立了一块内存,名为数据缓冲区。先把IO的数据存入数据缓冲区中,然后用户在从这块内存中读取数据。用户每次需要读入写入数据时,会从这块内存中查找,有则直接取出,没有则让数据缓冲区载入硬盘数据,再从中读取。读写内存要比读写磁盘的速度快得多。写入硬盘也是一样的:先从硬盘数据读入数据缓冲区,用户更改数据缓冲区,数据缓冲区再写入硬盘。数据缓冲区能加快提取速度,数据缓冲区的大小直接影响了Oracle的读取数据的速度。
日志缓冲区:读写入在线日志文件时,会把信息写入日志缓冲区中,数据缓冲区的原理类似。由于日志不是执行SQL的必要条件,所以日志缓冲区对Oracle性能影响较小。
Large池:为了进行大的后台进程操作而分配的内存空间,如备份恢复、大型IO操作、并行查询等
Stream池: 为Stream应用而分配的内存空间
JAVA池:为JAVA应用而分配的内存空间
2:.2 PGA
PGA包含了单个服务器进程所需的数据和控制信息。排序的数据也在PGA中存放。
实例进程包含了3中类型:用户进程、服务器进程、后台进程。
用户进程位于客户端,在用户运行一个应用程序时准备向数据库服务器发送交互请求时创建。PGA是在用户进程连接到数据库并创建一个会话时自动分配的。有几个用户连接数据库,就有多少个服务器进程在服务器上创建,每个用户对应了自己的用户进程,用户进程和服务器进程一 一对应。服务器进程所占用的空间位于PGA,PGA资源各不共享。
专有连接:9i和9i以后用的是专有连接。每个用户对应了自己的用户进程,用户进程和服务器进程一 一对应。对专有连接来说,用户在启动了一个应用程序与服务器交互,就是在客户端上创建了一个用户进程,与oracle服务器端成功连接后,会在服务器端生成一个服务器进程,该服务器进程作为用户进程的代理进程,代替客户端执行各种命令并把结果返回给客户端。用户进程一旦终止,服务器进程也立刻中止。
共享连接:8i和8i以前用的是共享连接。一个用户可以对应多个服务器进程。一个服务器进程可以对应多个用户进程。
2.3 后台进程:
会话指的是用户与Oracle服务器的单个连接。会话信息可以: select * from v$session where username='[用户名]'; 来查看
Oracle实例启动时,会创建一系列后台进程,必须创建的后台进程被称为必备进程,4个,PMON,SMON,DBWn。CKPT。
PMON进程监控进程:用来清理出现的故障进程,施放所有的当前挂起的锁定,施放故障进程所使用的资源。比如用户进程中断,就其对应的服务器进程就会发生故障,这个服务器进程的清理就由PMON来做。
SMON系统监控进程:在实例失败,重新打开数据库时自动恢复实例。整理数据文件的自由空间,将相邻区域结合起来,施放不再使用的临时段。 9i之前是手动管理自由空间,9i和9i之后是自动管理。实例失败指的是程序中断(程序返回值不为0),比如服务器关机。重启启动服务器时,实例的恢复就有SMON完成。
DBWn数据写入进程:管理数据缓存区的进程。把最近使用过的数据保留在内存,将修改后的缓冲数据写入数据文件中就是DBWn在做。比如,用户发送update命令,会把对应的数据从硬盘移入数据缓冲区中,改完数据后再写入数据文件中。
LGWR日志写入进程:和DBWn原理类似,只不过是管理日志缓冲区的进程。将缓冲数据写入日志文件,系统一般有多个日志文件,该进程通常以循环的方式将日志写入日志文件。
CKPT检查点进程。CheckPoint,为了在实例崩溃后尽快恢复实例所设定的进程,CheckPoint分为完全检查点和增量检查点。完全检查点只有下面两种情况下被触发:,一个是用户发出 alter system checkpoint ,第二个是除了shutdowon abort以外的方式关闭数据库。增量检查点只有下面两种情况下被触发:每个3秒触发一次,在线日志切换时触发。
ARCn进程:当数据库日志状态为ArchiveLog模式时,ARCn会在LogSwitch时自动把Redo Log File 复制到指定目录下。即归档日志文件。用来把在线日志文件 归档成 归档日志文件。
MMAN进程:10g出现,用于自动SGA管理,11g中的MMAN用于自动内存管理。
MMON进程:10g出现,用于自动统计信息收集。
查询进程信息示例如 :select * from v$process where program like '%DBW%'
3. 9i中的自动PGA管理
自动PGA管理的前提是设置初始化参数workarea_size_policy为AUTO。在专有连接下,数据库管理员根据数据库的负载情况,估计所有的Session大概是需要消耗的PGA的总大小,然后把该值设置成初始化参数pga_aggregare_target.。Oracle就会自动调整每个session的PGA的大小。每个用户的PGA大小都是一样的,操控的是PGA上的服务器进程的大小。
在一般情况下服务器进程所需要的资源大小是不断变化的,有些服务器进程需要的资源小,有些服务器进程需要的资源大。我们很难进行手动的管理,9i以后,可以自动PGA管理来完成。
4. 10g中的自动SGA管理和MMAN进程和MMON进程
ASMM自动SGA管理(Automatic Share Memory Management),10g的时候出现,可以不用9i那样具体分配SGA中的每一个部分大小。初始化参数 statistics_level为TYPICAL或ALL时才可以启动ASMM, 用sga_target来定义了整个SGA的大小。因此10g以后有了新的后台进程MMAN来进行自动SGA管理。MMON进程,用于自动统计信息收集。
5. 11g中的AMM配置和MMAN进程
11g出现了AMM(自动内存管理),需要初始化参数statistics_level为TYPICAL或ALL时才可以启动AMM。初始化参数Menory_target定义了整个内存大小(SGA和PGA的总大小),新的Memory_max_target来定义了整个内存大小可以达到的最大值。如果使用AMM自动内存管理,sga_target和pga_aggregate_target的值应该设置成0
查看修改这些参数:
打开SQL_PLUS命令窗口:查询参数命令 show param [参数名,自动模糊查询]
修改参数命令:alter system set [参数名全名] =[值];
修改成功后重启数据库后即可生效。
6.11g默认表空间的结构和特点
11g的默认默认表空间包含了SYSTEM、SYSAUX、TEMP、UNDOtbs1、USERS、EXAMPLE。
SYSTEM 是系统表空间,存放系统的最基本信息; SYSAUX在10g中才引入,是SYSTEM的辅助表空间,用来减少SYSTEM的负荷所设立的。把一些其他表空间的一些组件放在了SYSAUX表空间里了,比如以前SYSTEM中的LogMiner、Logical Standby,DRSYS表空间里的Oracle Text 等;TEMP是临时表空间,当分配的空间无法完成排序时,就会在TEMP表空间用磁盘排序的方式(效率低)来排序;UNDO类型的表空间,保存用户DML(增删改)操作,修改前的数据;USERS 是系统默认的永久性表空间,创建表的时候,没有指定表空间时就会放入默认表空间USERS,当然数据库的默认表空间是可以被修改的;EXAMPLE是数据库测试用例所涉及的表所属表空间。