Oracle数据库日常使用知识.pptx
文本预览下载声明
Oracle数据库日常使用知识I
DBA:郑声音
Oracle数据库基础规范
Oracle内存结构
Oracle数据库对象设计
Oracle SQL语句注意事项
Oracle内存结构
Oracle的内存配置与oracle性能息息相关。关于内存的配置,是最影响Oracle性能的配置。内存还直接影响到其他两个重要资源的消耗:CPU和IO。
每个Oracle数据库都是由Oracle?Instance(实例)与数据库(数据文件,控制文件、重做日志文件)组成,其中所谓实例就是用户同数据库交互的媒介,用户通过于一个实例相连来操作数据库。而实例又是由统一的内存结构(SGA,PGA)和一批内存驻留进程组成。实例在操作系统中用ORACLE_SID来标识,在Oracle中用参数INSTANCE_NAME来标识,?它们两个的值是相同的。数据库启动时,系统首先在服务器内存中分配系统全局区(SGA),构成了Oracle的内存结构,然后启动若干个常驻内存的操作系统进程,即组成Oracle的进程结构,内存区域和后台进程合称为一个Oracle实例。
SGA
SGA(System Global Area)是一组为系统分配的共享的内存结构。如果多个用户连接到同一个数据库实例,在实例的SGA中,数据可以被多个用户共享。当数据库实例启动时,SGA的内存被自动分配;当数据库实例关闭时,SGA内存被回收。SGA是占用内存最大的一个区域,同时也是影响数据库性能的重要因素。
PGA
PGA(Program Global Area程序全局区)是一块包含一个服务进程的数据和控制信息的内存区域。它是Oracle在一个服务进程启动时创建的,是非共享的。一个Oracle进程拥有一个PGA内存区。一个PGA也只能被拥有它的那个服务进程所访问,只有这个进程中Oracle代码才能读写它。
内存管理_PGA自动管理
Oracle9i引入pga_aggregate_target,可以自动对PGA进行调整。
PGA内存管理模式设置
参数workarea_size_policy设为MANUAL,使用手动管理方式。
参数workarea_size_policy设为AUTO,并且pga_aggregate_target不为0时,启用自动内存管理。
内存管理_ASMM
10g引入了Oracle自动共享内存管理(简称ASMM)后,相比以前的手动调整各种内存组件,在自动管理方面前进了一大步。DBA只需要定义sga_target和sga_max_target就可以了,其他的各种事情就交给oracle自己去搞定了。
内存管理_AMM
11g引入了Oracle自动内存管理(简称AMM),只需要定义memory_target和memory_max_target就可以了,oracle会自动分配pga和sga中的各个组件。一切变得更简单了。
设置规则
Memory_Max_Target=Memory_Target=(Sga_Target+Pga_Aggregate_Target);
同时,MEMORY_TARGET受限于系统的/dev/shm。既 /dev/shm=MEMORY_MAX_TARGET。
AMM配置场景
场景一:
设置memory_target的同时,设置sga_target及pga_aggregate_target参数;
该情况下设置的sga_target与pga_aggregate_target之和不能大于memory_target;
当memory_targetsga_target + pga_aggregate_target的情况下,sga与pga才可能发生扩展和收缩。
AMM配置场景
场景二:
设置memory_target的同时,设置sga_target而未设置pga_aggregate_target参数;
该情况下Oracle会自动调优以上2个参数值,pga_aggregate_target的初始值为(memory_target-sga_target);
没有硬性设置pga_aggregate_target情况下,故而sga与pga内存区域有较大的灵活性去扩展和收缩。且更倾向于sga的扩展。
AMM配置场景
场景三:
设置memory_target的同时,设置了pga_aggregate_target而未设置sga_target;
该情况下Oracle会自动调优以上2个参数,sga_target的初始值为min(memory_target-pga_aggregate_target , sga_max_size),注意这里说的是初始值;
没有硬性地设置sga_target的情况下,故而sga与pga内存区域有较大的灵活性去扩展和收缩。更倾向于pga的扩展。
AMM配置场景
场景四:
仅
显示全部