服务器 频道

oracle 10g 新特性中文笔记三

  【IT168 服务器学院】asmm简化了sga的配置.过去,你要手工指定分配给数据库buffer cache,shared pool,java pool和large pool的大小.
  
  这通常都是一个挑战.如果设置不够大,会导致性能很差,和内存溢出错误,如果设置过大,会导致浪费内存.
  
  这个特性可以让你指定所有sga组件的总大小.oracle数据库有周期的重新分配这些内存.
  
  在以前的版本中,你不能对sga的总大小进行控制,因为内存的固定的,对其它的内部元数据进行分配,除了这个总大小就是用户指定的sga参数,额外的内出通常是10到20m.
  
  新的sga初始化参数sga_target报告sga所有的内存,包括自动设置组件的,手工设置组件还有启动的时候的其它内部分配.
  
  数据库控制和asmm
  
  你可以使用db control来配置asmm
  
  1.点管理
  
  2.在实例部分选内存参数
  
  3.选sga
  
  4.在asmm点enable,然后输入总的sga大小.
  
  手工配置
  
  自动管理的只有四个部分
  
  db buffer cache
  shared pool
  large pool
  java pool
  
  你可以通过设置sga_target来配置asmm.
  
  如果你为sga_target设置了非零值,下面四个内存池是自动配置大小的:
  
  database buffer cache
  shared pool
  large pool
  java pool
  
  如果你把sga_target设置为零,asmm关闭了.默认的值就是0.
  
  在过去的版本中的单独参数没有作废.
  
  下面的参数还是手工设置大小的:
  
  log buffer
  other buffer caches(keep/recycle,other block sizes)
  streams pool
  fixed sga和其它的内部分配的
  
  自动调整sga参数的行为
  
  当sgs_target没有设置或设置为零的时候
  
  -自动调整的参数向以前那样
  
  -例外:shared_pool_size
  
  select sum(bytes)/1024/1024 from v$sgastat
  where pool= ''shared pool'';
  当sga_target设置了
  
  -默认的自动设置的参数为0
  
  -如果非零值就是下限
  
  如果sga_target没有设或等于零,自动调整的sga参数就向以前的一样.然而,shared_pool_size是个例外:内部分布的元数据(例如用在进程和会话数据)现在已经包括在shared_pool_size参数中.这样,你为了分配这些内存,当升级你的oracle 10g数据库的时候需要加大你的shared_pool_size参数.例如,如果你在以前的版本中的共享池是256m,你的内部分配是32m,那为了得到同样的效果,在你的10g数据库中要设置为288m.上面的查询计算包括内部分配的shared_pool的大小.在运行升级之前,你首先要进行这次查询.
  
  当sga_target设为非0,自动调整的参数默认都是0.他们的大小都是通过asmm算法自动设置的.例如,sga_target设为8g,shared_pool_size是1g,这样就告诉asmm算法不会把共享池设为1g以下,尽管更大的值更好.你也可以使用下面的查询看自动调整组件的大小.
  
  select component,current_size/1024/1024
  from v$sga_dynamic_components;
  
  手工调整sga参数的行为
  
  一些组件不是自动调整的:
  
  -keep 和recycle 缓冲区
  
  -块倍数的缓冲
  
  -log 缓冲
  
  -streams池
  
  这些参数是用户指定的
  
  精确的控制这些组件的大小
  
  使用v$parameter视图
  
  select name,value,isdefault
  from v$parameter
  where name like ''%size'';
  
  重新设置sga_target的大小
  
  sga_target初始化参数
  
  是动态的
  
  最大可以是sga_max_size的大小
  
  可以减少到所有组件的最小值
  
  sga_target影响仅仅是自动调整的组件
  
  sga_target是动态参数,可以通过db control或alter system命令修改.
  
  sga_target最大可以是sga_max_size的大小.它可以减少到任一个自动调整的组件到达了最小值,要么是用户指定的最小值,
  
  要么是内部决定的最小值.
  
  如果你增加sga_target的大小,增加的内存根据自动调整的测量分布到自动调整的组件上.
  
  如果你减小sga_target的大小,内存就通过自动调整测量从一个或多个自动调整组件上取消.这样,sga_target的变化仅影响自动调整组件的大小.
  
  取消自动共享内存管理
  
  设置sga_target为零取消自动调整
  
  自动参数设置为他们的值
  
  sga的大小不影响
  
  你可以动态的设置sga_target为零来取消自动共享内存管理.这个时候,所有的自动调整的参数都是相应组件当前的大小,即使用户早期设置了不同的非0值.
  
  手工的改变动态sga参数的大小
  
  对于自动调整的参数,手工的改变它的大小:
  
  如果新的值的比当前的值大,立刻就会生效.
  
  如果新的值比当前值小,就会改变到最小值
  
  手工改变参数的大小影响sga的可调部分
  
  当重新设置了sga_target的大小的时候,只有新值比当前组件的值大的时候才会立刻改变.如果你设置sga_target为8g,设置shared_pool_size为2g,你确信为了容纳必要的内存,共享池至少2g.当你把共享池调为1g的时候,不会立刻改变共享池的大小.它只会告诉自动内存调整算法在需要的时候,会把共享池改为1g.另外,如果一开始共享池是1g,你把它设置为2g,那么马上就生效.在重新改变操作中使用的内存是从一个或几个其它的自动调整的组件中得到了,手工的组件不受影响.
  
  手工改变大小的组件也可以动态的修改,但是他们的不同就是马上就是设置的值.这样,如果手工组件的值增加,额外的内存就是从一个或多个自动调整的组件中获得的.如果手工组件的值减少了,释放出来的内存就给了自动调整大小的组件.
  
  自动优化统计收集:概览
  
  oracle8i提供dbms_stats包
  
  dba决定怎么去收集统计
  
  dba决定什么时候去收集统计
  
  oracle9i决定怎么去收集统计
  
  统计可以使用单个命令仅此收集
  
  dba决定什么时候去收集统计
  
  oracle10g完全自动收集统计的
  
  dba不用去收集统计
  
  默认就进行表监控
  
  为了查询优化器产生更好的执行计划,在对象上必要有合法的统计.在过去,统计收集(或让作业去做)是典型的dba的责任.另外,有必要对改变的对象进行跟踪,来看什么时候有必要进行统计收集.如果对象的统计很陈旧或没有统计,就可能产生无效的sql执行计划.
  
  在oracle9i(假定使用了监控)下面的dbms_status命令可以用来产生相应的统计"
  
  dbms_stats.gather_schema_stats(schema_name,options=>''GATHER AUTO'');
  
  这个命令收集优化的统计,包括柱状图,对那些对象那些当前的统计是陈旧的.然后,你必须打开监控,并且有计划的执行这个命令.
  
  在oracle10g中,自动优化统计收集自动这些任务,减少了你的收集统计的必要.
  
  这个特性减少了由于sql语句统计失效或陈旧而导致性能很差的可能性,通过提高查询优化器的最家的输出提高了sql执行的性能.
  
  GATHER_STATS_JOB
  
  默认的,在数据库创建的时候就创建了gather_stats_job,执行dbms_stats.gather_database_stats_job_proc过程,使用schedular.
  
  默认的定义了两个窗口.
  
  WEEKENIGHT_WINDOW定义在下午10点到上午六点.从周一到周五.
  
  WEEKEND_WINDOW定义从上午12电到周一12点.
  
  默认的,MAINTENANCE_WINDOW_GROUP组包含这两个窗口也已经邓菁来源.
  
  gather_stats_job使用特定的计划任务叫auto_tasks_job_class.这个类是自动创建的,而且跟特性的资源消费者组联系,这个消费者组叫做auto_task_consumer_group.这样确保任务使用auto_task_consumer_group.如果你想控制gather_stats_job的资源使用,你之需要为maintenance_window_group定义一个资源管理者组来为auto_task_cousumer_group分配资源.
  
  为了让gather_stats_job工作正常,你必须确定statistics_level初始化参数设置为typical.
  
  改变gather_stats_job的计划任务
  
  你可以为定义的管理窗口来自定义开放时间.例如,你可以改变他们的时间间隔和重复的频度.你也可以添加资源计划到这些窗口中,来控制gather_stats_job使用的资源.
  
  从db control主页,点击管理标签,然后在scheduler部分点击windows链接.就让你到了scheduler windows页.这里你可以选中一个窗口,并且可以点edit来修改它的特性.在这页,你还可以打开或关闭特定的窗口.只要你在下拉框为特定的窗口选择相应的行为,点ok就可以了.
  
  锁定统计
  
  阻止自动收集
  
  主要用在可变的表中
  
  -没有统计的锁定,意味着动态的取样.
  
  -锁定代表值的统计
  
  在oracle10g,你可以看到特定表的统计,通过新的dbms_stats包的lock_table_stats过程.你可以锁定一个表的统计,来阻止自动统计收集,这样你就可以使用动态的取样.你也可以在某个时间点锁定可变的表的统计,当它满了的时候.
  
  你可以可以使用lock_schema_stats跑在sechma基本锁定统计.
  
  你可以查看user/all/dba_tab_statistics视图来看stattype_locked列来看一个表是不是锁定了.
  
  你也可以使用unlock_table_stats过程来锁定特定表的统计.
  
  使用dbms_stats包
  
  新的force参数
  
  不考虑统计的锁定
  
  在10g,dbms_status包delete_*_status,import_*_status,restore_*_status,set_*_stats新的参数就是force.
  
  你可以使用force为ture,覆盖了统计,即使他们锁定了
  
  自动统计收集应该考虑的事情
  
  你在下面的情况还是应该手工收集.
  
  在批操作之后
  
  当使用外表的时候
  
  收集系统统计
  
  收集固定对象的统计.
  
  优化器统计的历史
  
  无论什么时候,优化统计在被dbms_status包修改之后,老的版本自动的保存,可以将来恢复.统计可以使用dbms_stats的restore过来来进行恢复.这个过程使用时间戳作为参数,把统计也是作为时间戳来恢复的.如果新的统计导致不是非常好的的执行计划,你想使用以前的统计值,这是非常有用的.
  
  你也可以使用dba_optstat_operation视图看所有的dbms_stats操作执行在schema和数据库基本的起始时间.
  
  dba_tab_stats_history视图默认包含过去31天的表统计修改的历史.这意味你可以恢复到最近31天的任一个时间.老的数据自动的被清除.
  
  管理历史优化统计
  
  restore_table_stats恢复特定时间戳的表的统计.它也恢复相关的索引和列的统计.如果表的统计在特定的时间点是锁定的,那么这个过程也锁定这个统计.
  
  restroe_schema_stats恢复指定时间戳的一个schema的索引的表的统计.
  
  restore_database_stats恢复指定时间戳的数据库的所有表的统计.
  
  restore_fixed_objects_stats恢复指定时间戳的所有固定表的统计.你必须有sysdba,或analyze any dictionary系统权限去执行这个过程.
  
  restore_system_stats恢复指定时间戳的系统的统计
  
  使用alter_stats_history_retention过程去配置保持时间.
  
  get_stats_history_retention给出当年的统计历史保留时间的值.
  
  sget_stats_history_availablity给出你的统计历史的最老的时间戳.
  
  如果没有启动自动清除,你可以手工的使用purge_stats来清除旧的版本的统计.
  
  自动undo保持时间调整
  
  前期调整
  
  undo保持时间是为最长时间的查询调整的
  
  每30秒收集一次查询持续时间
  
  反作用调整
  
  由于空间的压力,这个保持时间会慢慢的变低
  
  最老的没有过期的extent首先使用
  
  undo保持时间不会比下面的两个小:undo_retention或15分钟.
  
  默认是启动的
  
  默认的,oracle10g通过收集数据库统计,例如最长时间的查询和undo产生率来自动调整undo保持时间.
  
  这些统计是常规的收集来决定undo保留时间的非常好的值.
  
  你可以通过设置undo_retention参数来影响自动调整.默认的是900秒.如果你不设置值,或设为零,那么oracle10g自动的为当前的undo表空间调整值,900秒为最小的.如果你设的不是零,那么oracle10g继续使用自动调整保持时间,你设定的值为最小值.
  
  尽管你有足够的undo空间,这个特性减少了你运行长查询的快照太老的发生可能性.
  
  自动checkpoint调整
  
  书上有错误.
  
  10g无特别的改动,应该跟9i一样.
  
  第五章 管理体系结构
  
  目标
  
  完成本课,你应该能:
  描述自动工作负载资料库(AWR)的各种不同的组件
  使用活动会话历史
  定义AWR快照基线
  对服务端的警告订阅应用程序
  解释自动任务特征
  描述顾问咨询框架
  
  AWR
  
  AWR是新的管理体系结构的中心元素,它为了发现问题和自我调整,为oracle内部服务组件提高了采集,处理,维护和访问性能统计数据.
  
  AWR 概览
  
  AWR的体系结构就是为oracle 10g组件提供了采集维护和使用统计信息来发现问题和自我调整的服务.
  
  AWR的体系结构包括下面两个主要的部分:
  
  在内存中的统计收集工具.这个统计为了性能的原因存在内存中
  
  AWR快照代表了这个工具的永久部分.AWR快照通过数据字典和db control可以访问.
  
  
  统计由于下面几个原因而永久的存储
  
  统计需要在实例崩溃的时候也能保存.
  
  为了基准的比较有些分析需要历史数据
  
  内容溢出.由于内存不够,当旧的统计被新的统计覆盖的时候,被替换的部分可以恢复为了以后的使用.
  
  新的后台进程叫mmon,有规律的把统计的内存版本传送到磁盘上.
  
  有了AWR,oracle数据库提供了自动捕捉历史统计数据的方法,不需要dba的干预.
  
  AWR的数据
  
  新的基准统计
  sql和优化器统计
  os统计
  等待事件
  时间统计
  衍生值
  活动会话历史
  咨询结果
  快照统计
  数据库特性使用
  
  awr为在内存中收集各种统计提供了新的工具,然而,不是所有的存在的统计都转为使用它.在10g,下面的统计是使用awr统计工具进程收集的:
  
  决定访问和使用数据库段统计的对象统计
  
  用来高效确定基于cpu,使用时间和解析统计的最高的sql语句的sql统计
  
  为高水平性能分析的新的等待事件接口
  
  新的基于花费了多少活动事件的时间
  
  一些当前收集在v$sysstat,v$sesstat的统计
  
  一些包括自我学习和调整的oracle优化器统计
  
  操作系统统计
  
  活动会话历史,代表最近会话的历史.
  
  衍生值提供了一定基准统计的改变的速率
  
  这些统计的部分是以快照的形式存在磁盘上的.Awr提供了看这些快照统计的数据字典视图.
  
  另外,swr还存储各种顾问建议的会话结果和数据库特性使用的统计.
  
  活动会话历史
  
  ASH保留最近的会话活动.swr每过60分钟就进行一次快照,所以最近的一次快照大概是一个小时作用,这样awr就没有足够的信息来进行当前的分析.典型的情况下,当前的分析需要最近的五到十分钟的详细信息.
  
  因为记录会话的活动是非常昂贵的,ash每秒采样V$session,记录会话等待的事件.不活动的会话不会被采样.这个采样工具是非常有效的,因为它直接访问oracle10g内部结构.
  
  ash设计为在内存中的滚动的,在需要的时候早期的信息是会被覆盖的.ash可以通过v$active_session_history视图来访问.这个实例每个样本的每个活动会话有一行.
  
  由于它的大小,把所有的ash数据写到磁盘上是不可接受的.一般是在写到磁盘的时候过滤这个数据.这是通过mmon自动完成的和mmnl在缓冲满了的时候.
  
  基本统计和衍生值
  
  基本的统计代表了原始数据的收集.例如,在系统启动之后计算物理读的次数是基本的统计.
  
  衍生值是从基本的统计得到的二级统计.大部分衍生值都跟中oracle数据库活动变化的速率.
  
  例如,最近60分钟的系统平均物理读时间就是衍生值.衍生值是被内部客户端组件用来系统监控监控,问题检查和自我调节.
  
  例如,addm有个规则,需要系统最近60分钟的平均物理读.另外一个组件也许需要基于相同的基本统计的不同的衍生值:
  
  内存顾问也许需要高峰时间的物理读计数.oracle10g执行系统,会话,文件和等待事件统计的衍生值.
  
  衍生值有衍生值的号,每个衍生值都有衍生名.要想看与衍生值相关的视图,参见oracle 数据库参考.
  
  保留衍生值的主要好处就是当一个组件要即使某些活动的变化率,数据已经有的.以前,你不得不在运行你的工作负载之前或之后来为特定的基本统计即使改变的速率去捕捉统计.有了衍生值,你所需要的就是运行你的工作然后选择相应的衍生值.
  
  工作负载仓库
  
  工作负载仓库是sys所以的保留永久系统性能统计的收集.这个仓库存在sysaux表空间中,是sysaux的主要部件之一.
  
  快照是在一定时间捕捉的一套性能统计.快照用来计算统计变化的速率.每个快照都有快照序列号,在awr是唯一的.
  
  默认的每60分钟收集一次快照.
  
  你可以通过修改interval参数 调整这个频率.因为内部的顾问咨询依赖这些快照,这个参数的调整会影响诊断的精确度.
  
  例如,如果你把interval设置为四个小时,那么你就会丢失60分钟之内的峰值.
  
  在rac环境,每个快照包含集群的所有的节点.每个节点的快照数据有相同的snap_id,但考实例id来区分.大概的,rac中的快照在同一时间捕捉的.
  
  你也可以使用db control来进行手工的快照.手工的快照支持系统产生的自动快照.手工的快照可以在你要捕捉的系统行为的两个时间点跟自动的不一致的时候.
  
  统计的级别
  
  你可以通过statistics_level初始化参数控制统计的捕捉.这里有三种类型的捕捉:
  
  basic:awr统计的计算和衍生值关闭.
  
  typical:只有部分的统计收集.他们代表需要的典型监控oracle数据库的行为.
  
  all:所有可能的统计都被捕捉.这个级别的捕捉应该在很少的情况下,比如你要更多的sql诊断信息的时候才使用.
  
  awr 快照基线
  
  基线是一种机制,这样你可以在重要时间的快照信息集做标记.一个基线定义在一对快照之间,快照通过他们的快照序列号识别.每个基线有且只有一对快照.
  
  基线可以用用户提供的名字也可以用系统的标识符来标识.你可以通过执行dbms_workload_repository.create_baseline过程来创建基线,和知道名称和这对快照的名称.基线的标识就分配给新创建的基线.基线的标识在整个数据库的生命周期是唯一的.
  
  基线用来保留快照的数据.这样属于一个基线的快照会保留到这个基线删除的时候.
  
  通常你可以从以前的代表性的时间来设置基线,用来对现在的系统行为进行比较.你也可以从db control中使用基线来设置基于阈值的警告.
  
  你可以从dba_hist_snapshot或db control中来取到snap_id.
  
  awr快照清除策略
  
  你可以通过设置保留时间来控制历史awr统计数据.总的来说,快照是以时间顺序来自动删除的.属于基线的快照会等到这个快照删除的时候才会删除.
  
  典型的系统中,s如果数据保留七天的话,awr收集的数据大概要专200-300m的空间.空间的消耗主要依赖系统的活动会话的个数.
  
  通过使用modify_snapshot_setting过程,你可以控制:
  
  通过修改retention时间参数有多少awr信息被保留.默认的是七天,最小的值是一天.如果把retention设置为零,自动清除就关闭了.如果awr发现sysaux空间不够,它通过删除那些最老部分的快照来重新使用这些空间.同时,也会给dba发一条警告,告诉sysaux空间不够了.
  
  通过修改interval参数系统是自动产生快照的频率.最小的值是10分钟,默认的是60分钟.典型的值是10,20,30,60,120等等.把interval设为0关闭自动捕捉快照.
  
  db control和awr
  
  db control容许你为捕捉快照来配置retention和interval参数.你可以通过在db control主页的管理标签来访问awr页.
  
  然后典型workload部分的awr链接.
  
  在awr页,你可以
  
  编写workload 资料库设置
  
  看创建的快照的详细信息,也可以手工创建新的
  
  创建基线也教保留快照集
  
  awr报表
  
  awr有个报表生成机制,可以对存储在workload资料库的统计产生汇总报表.这个分析对一段时间的统计做的.这个报表生成机制很像statspack.
  
  报表生产的接口就是sqlplus脚本awrrpt.sql.
  
  这个脚本产生同样的报告,给出对一段时间你的系统的整体行为的信息.这个报表可以是html也可以是text文件.
  
  运行这个脚本必须要select any dictionary权限.这个脚本提示你输入选项如怎么和在哪里生成这个报表:
  
  首先,你需要指明你要生成html还是text格式的
  
  要选择快照的天数:输入天术,和你最近的快照,可选的,你可以使用dba_hist_snapshot表来看你要用哪个snap_id.
  
  开始snap_id和终止snap_id,这个快照对定义你的报表产生的时间间隔.
  
  文件名称,报告写的用户指定的文件.
  
  statspack和awr
  
  在过去,你可以手工的使用statspack来获得历史数据.你也可以继续在oracle10g中使用statspack,但是如果你要使用workload资料库,那你需要更改你的应用程序代码.
  
  statspack用户应该转到10g的workload 资料库.
  
  这里不支持数据从statspack移植到workload资料库.同样,也没有视图来模拟statspack.
  
  服务端产生的警告
  
  服务端的警告oracle服务器可以自动的发现警告情况.发现一个问题,oracle会给你发送警告信息和可能的补救措施.
  
  服务端产生的警告:概览
  
  一个主要的dba任务就是监控数据库系统监控来看瓶颈和提高系统的性能.oracle 10g接管了这些任务,如果有任何性能问题或资源分配问题,自动的通知你,给你补救措施的建议.
  
  随着新的后来进程mmon的引进,内部的组件可以制定常规的监控行为.
  
  发现问题的组件会为你产生警告信息.同样,前台进程也会发现不训斥的情况,通过mmon引发紧急行为.
  
  这个行为轮流产生发送给你的警告信息.在这里两种情况下,这些警告信息以可靠的和及时的方式产生.
  
  这个警告信息给出了问题的描述和怎么解决它的建议.
  
  另外,oracle数据库在workload资料库保留了衍生值的历史.这些信息可以被自我调整组件使用.
  
  在以前的版本中.很多性能的衍生值都是由em维护.服务端的警告可以由oracle数据库本身更加有效的产生.
  
  警告模型体系结构
  
  警告条件发现是基于内部定义的或自定义的阈值,或某种事件发生.oracle数据库自动的收集大量的衍生值给em来进行计算.
  
  em警告和服务器产生的警告的主要不同在于,衍生值的及时和阈值的确认由mmon进程完成,不像em进行,可以直接访问sga.
  
  服务器产生的警告放入sys的预定义的队列qlert_que中.db control是alert_que的主要消费者.根据db control的设置,你可以设置
  
  email或bp通知.
  
  服务器产生的警告总是显示在db control主页上.
  
  alert_que是个多消费者队列.这样,作为第三方的客户端,你可以订阅这个队列.
  
  在所有的订阅者没有退定的时候,这个警告不会清除.如果你退出这个队列,你就看不到了,但是别的订阅者还可以看到.
  
  服务端警告的类型
  
  这里有两种类型:阈值和非阈值
  
  大多数服务端警告配置为对你的数据库衍生值设置警告或严重警告的阈值.你可以为120多个衍生值定义阈值.例如
  
  每秒物理读
  
  每秒用户提交
  
  sql服务响应时间
  
  除了表空间使用衍生值,这个是数据库相关的,其它的衍生值是实例相关.阈值告警也称为状态的警告.这些警告会在警告条件清除后自己的清除.状态的警告在dba_outstanding_alerts中,如果清除了就进入dba_alert_history.
  
  当突出的警告的严重级别更新了,就又会发出新的警告.当这个问题的条件清除了,这个突出的警告就会移动到警告历史中.根据workload资料库快照的清除策略来清除警告历史.
  
  其它的服务器端的警告对应相应的数据库事件,例如snapshot too old错误,recovery区低于自由空间,可恢复的会话悬挂.这些非阈值的警告,就是无状态的告警.无状态的告警直接进入历史表.清除无状态的告警仅仅在db control环境下有意义,因为db control把无状态的告警存在它自己的资料库中.
  
  out-of-box服务器端产生的告警
  
  默认的,下面的服务告警是打开的
  
  表空间使用(85%告警,97%严重错误)
  
  快照太老
  
  recovery 区低于free space
  
  可恢复的会话挂起
  
  db control 使用模型
  
  服务器端的告警的基本使用模型是这样的:
  
  如果需要,你可以为服务器端的衍生值设置阈值.你可以通过db control或plsql过程来做
  
  你可以通过db control设置通知规则(例如,email地址或中断期限)
  
  当产生警告的时候,db control在警告窗口显示警告.db control给注册的管理员发生通知
  
  当你收到告警的时候,你可以按照警告给出的建议来纠正错误.
  
  db control的警告界面
  
  如果你使用db control,服务端的警告显示在数据库的主页.服务器端的警告的行为跟em相似.
  
  除非了以前支持的,db control还让你可以基于给定的基线来设置阈值或任意两对快照.
  
  大多警告会有相关建议的名称,可以给你更多详细的建议.每个相应的告警信息,db control都会有个链接到相应的建议.
  
  设置告警阈值
  
  db home-->manage metrics--> edit threshold
  
  这里你可以修改衍生阈值
  
  告警通知
  
  db control home page-->preference-->general--> notification --> rule
  ---> database availability and critical states --> edit-->
  edit notification rule database availability and critical states.
  
  衍生值的详细历史
  
  db control home page --> related links --> all metrics
  
  衍生值和告警视图
  
  衍生值由mmon有规律的计算并且保留在内存中一个小时.这些在内存中的系统基本的衍生值可以通过v$sysmetric 和v$sysmetric_histroy视图进行访问.
  
  磁盘上的衍生值的是通过awr的自动快照机制老收集所有的衍生值.这些可以通过dba_hist_*来访问.
  
  dba_outstanding_alerts描述了oracle数据库认为是突出的警告
  
  dba_alert_history代表了不在突出的有时间限制的历史告警
  
  dba_threshold给你实例定义的阈值
  
  v$alert_types给你每个告警原因类型的信息
  
  pl/sql接口和阈值设定
  
  dbms_server_alert包用来设置衍生值的阈值.
  
  set_threshold定义给定衍生值的阈值
  
  get_threshold读出给定衍生值的设置.
  
  告警消费 手工配置
  
  如果你选择使用你的工具而不是db control来显示告警,你需要订阅,读alert_que,在为告警设置了阈值之后就显示了告警通知.
  
  要创建和订阅这个alert_que的代理,可以使用dbms_aqadm包的create_aq_agent和add_subscriber过程.
  
  接下来,你要为订阅代理指定数据库用户,因为只有一个订阅代理的用户可以访问安全alert_que的信息,你也需要给这个用户分配相应的权限.使用dbms_aqadm报的enable_db_access和grant_queue_privilege过程.
  
  可选的,你可以使用dbma_aq.register过程注册,当警告放入alert_que队列的时候来接受到异步的通知.这个通知可以是emal,http帖子和pl/sql的形式.
  
  要读告警信息,你可以使用dbms_aq_enqueue过程.在信息移出队列之后,使用dbms_server_alert.expand_message过程来详细描述信息.
  
  自动常规管理任务
  
  通过使用调度任务,你可以委派oracle数据库一些需要让你的数据库保持运行良好的重复性的任务.例如,收集优化器统计信息等
  
  作业调度概念
  
  我们简单的看看10g支持自动任务的新的作业调度的功能
  
  管理窗口的定义.当定义了窗口的时候,它有个名字和时间间隔用来为调度的作业定义什么时候是活动的.可选的,它有资源管理计划,在window启动的时候自动使用了.当窗口结束,资源计划恢复到window开始的时候.
  
  可以把作业给一个窗口或窗口组.作业运行在第一个匹配的窗口.
  
  job类的概念,把使用相同资源的分组比如消费者组在给定类或给定数据库服务名由所有的作业使用.job类的作业将跟指定的服务有密切关系.
  
  暂停作业的概念,这个作业不会在作业调度中,除非有enable了.你可以在enable之前修改disable作业的参数.
  
  自动日常管理任务就是基于上面的概念的
  
  dbca和自动化的任务
  
  dbca有新的一页可以让你指定一个新的自动日常管理任务.dbca支持使用oracle推荐的备份战略的备份作业.
  
  使用em添加新的任务
  
  db control home page --> administration --> scheduler --> jobs ----> create
  
  使用pl/sql添加新的任务
  
  公共管理体系结构:顾问咨询框架
  
  基于服务器的顾问:作为新的体系的一部,创建了多个基于服务器的顾问.这些顾问都是设计围绕公共结构,并且使他们更容易管理.例如
  
  addm是根本的oracle数据库调整解决方案.addm自动的发现oracle内的瓶颈,并且还给修改他们的推荐.
  
  顾问框架
  
  addm:自顶向下的实例分析,发现问题和潜在的原因,给出问题的建议.addm可以潜在的调用其它顾问.
  
  sql tuning 顾问:为sql语句提供优化建议
  
  sql access advisor:处理seema的和问题和决定非常好的访问路径(例如索引还是物化视图)
  
  pga 顾问:为工作区给出抢修的统计,提成pga的优化建议
  
  sga顾问:负责调整sga的大小.
  
  segment 顾问 :监控对象空间问题和分析增长趋势
  
  undo advisor 给出需要支持回闪到指定时间的参数和需要的额外的空间
  
  顾问体系结构的主要优点
  
  所有的顾问使用同一接口
  
  所有的顾问都是使用workload 仓库的数据.
  
  典型的顾问调整会话
  
  1.创建顾问任务
  
  2.调整相应的任务参数
  
  3.执行分析
  
  4.看结果
  
  db control 和顾问
  
  db control --> related links --> advisor central 链接
  
  dbms_advisor包
  
  这个包在10个中是全新的.它包含顾问模块的所有常量和过程声明
  
  要执行这个过程,必须要有advisor权限.这个权限容许对顾问过程和视图的完全访问.
  
  数据自动的改变
  
  advisor视图提供了到资料库数据库的只读访问.视图定义为提供任务相关的信息,例如任务参数,工作负载,推荐.
  
  每个视图都有dba和user版本.用户视图容许你看你拥有的顾问数据库,dba视图就包括所有的advisor用户的顾问数据.看需要有跨schema的权限来对他们进行访问.如果增加不是owner的话.
  
  dbms_advisor包 get_task_report函数..
  
  使用pl/sql的例子
  
  1.使用dbms_advisor.create_task过程创建典型的addm类型的advisor任务
  
  2.使用dbms_advisor.set_task_parameter设置任务的参数,例如起始快照.
  
  3.使用dbms_advisor.execute_task来执行
  
  4.使用dbms-advisor.get_task_report来得到分析的结果
0
相关文章