ITPub博客

首页 > 数据库 > Oracle > oracle 10g 新特性中文笔记

oracle 10g 新特性中文笔记

原创 Oracle 作者:mfm088 时间:2006-12-18 15:28:24 0 删除 编辑

第三章 装载和卸载数据

目标
完成本课,您将会:
*在不同的平台传输表空间
*理解数据泵的总体结构
*监控数据泵作业
*使用数据泵来进行导入和导出
*为数据的population创建外部表
*定义外表属性

[@more@]

第三章 装载和卸载数据

目标
完成本课,您将会:
*在不同的平台传输表空间
*理解数据泵的总体结构
*监控数据泵作业
*使用数据泵来进行导入和导出
*为数据的population创建外部表
*定义外表属性

跨平台可传输的表空间

在数据仓库和数据超市之间简化数据的分发.
容许数据库从一个平台移植到另一个平台
支持的平台(略)

跨平台的可传输表空间

在oracle以前的版本中,可传输的表空间的特性可以让表空间在相同的体系结构和操作系统之间迁移.
oracle 10g进一步的让你使用可传输的表空间的特性,在平台之间进行传输.这样简化了从数据仓库到数据超市之间的分发,超市通常是运行在较小的平台上的.它也容许数据库通过重新建立数据字典和传输用户表空间来从一个平台移植到另外一个平台.

为了能够从一个平台到另外一个平台传输数据文件,你需要保证源系统和目标系统运行在支持的平台上.另外支持平台的数目不是很多...
需要相同的字符集.

最小兼容性

源和目标数据库都必须设置compatible为10.0.0或更高
数据文件头是平台相关的
在传输之前,确信所有的只读和脱机文件是平台相关的

两个必须是10g数据库;只读和脱机的意思是文件头无log号和checkpoint号

传输表空间的过程

要从一个平台传输表空间到另外一个平台,这个表空间的数据文件必须转换到源和目标数据库都能认的格式.尽管在10g,磁盘结构都符合公共格式,但是在源和目标数据库用不同的高低位也是可以的.当要传输到不同的高低位的平台的时候,你需要使用rman的convert命令来转换高低位.这个操作既可以在源也可以在目标数据库做.
如果平台的高低位是相同的,那就没有必要做转换了.基本上过程更以前的一致,除非平台使用不同的高低位.


查看平台的高低位

select tp.endian_format
from v$transportable_platform tp,
v$database d
where tp.platform_name = d.platform_name;

数据文件转换:例(略)

CLOB的例外

在转换高低位的时候,clob列是跳过的.
当你select的时候,才转换.
你可以使用create table as select 来进行转换.

动态性能视图的改变

v$database-------> PLATFORM_ID
PLATFORM_NAME
ENDIAN_FORMAT
v$transportable_platform

数据泵概览


高速数据和元数据谦虚的服务器端工具
通过dbms_datapumb调用的结构
提供新一带的export和import工具:expdb,impdb,web页面的接口
包含了原来的exp/imp的全功能


数据泵通用体系结构

DIRECT PATH API(DPAPI) :10g支持直接的path api接口,这样就小化数据转换和在转载和卸载的解析时间.
外表服务:数据泵使用新的ORACLE_DATAPUMP访问驱动这样就让外表了读写包含二进制流文件
DBMS_METADATA包被工作进程用来在所有的元数据的装载和卸载.数据库对象的定义存储是用xml而不是sql.
DBMS_DATAPUMP包包含了为批数据和元数据迁移高速导入和导出工具的api.
Sql*loader客户端已经集成到外表中,这样为外表访问参数提供了自动迁移loader控制文件.
expdp和impdp客户端是瘦客户端,通过调用dbms_datapump包来初始化和监控数据泵操作.今天他们引入了新的功能,他们依然跟以前的exp和imp兼容.
像db control,复制,传输表空间和用户应用程序都能从这样的体系结构中受益.sqlplus也许可以为了对正在进行的操作进行简单的状态查询提供了dbms_datapump客户端

数据泵导出导入概览

作为后台作业提交,失败了可以继续,每个用户只有一个进程,数据写入master表.

数据泵导出导入工具是10g的新工具.尽管他们跟以前的exp/imp很像,但是他们是单独的产品.

data pump export是为卸载数据和元数据到一套操作系统文件叫做dump文件集的工具.数据泵导入是用来把dump文件集的元数据和数据导入要目标系统中.

数据泵api在服务器端访问它的文件而不是在客户端.

这些工具也可以用来在远程数据库导出数据,或直接从源数据库导入到目标数据库.这就是网络模式,这种模式一般在导入数据到只读数据库特别的有用.

在每个数据泵操作的核心是主表(master table),用户运行数据泵作业的时候创建的表.主表维护作业的所有的方便.
在基于文件的导出作业中,主表建立了,在最后一步写到dump文件集中.相反的,把主表导入到当前用户的schema中是基于文件导入操作的第一步,也用在顺序创建所有要导入的对象.

当数据泵作业正常的完成的时候,主表被删.


数据泵导入导出的益处

数据访问方法
直接路径
外表
分离和重新连接到运行长时间的作业
重新启动数据泵作业
细度对象选择
显示的指定版本
并行操作(企业版)
估算导出作业空间消耗
在分步式环境中的网络模式
在导入的时候重新计算承受力

数据泵自动决定数据访问的方式.这些可以是直接路径也可以是外表.
不影响作业可以分离或重新连接到长运行的作业可以让你从多个地方来监控作业.所有停止的数据泵作业可以在不丢失数据的情况下重新启动,尽管足够的原信息仍然没有受到影响.不管这个作业是自愿的还是由于错误不情意的停止都没有关系.
exclude,include,content参数用在细度对象筛选上.
你可以为你要移动的对象知道版本参数来创建dump文件集,这样就会更以前的oracle版本兼容来支持数据泵.这个参数用来保留在以后的版本中.
你也可以使用parallel参数在指定活动执行用来代表这个export的作业服务器进程的最大数.
你也可以使用estimate_only参数来估计导出作业将消耗多少空间.
网络模式可以让你从远程数据库中直接导出为dump文件集.这可以通过数据库连接到源数据库来完成.
在导入的适合,你可以改变目标数据文件的名称,schema,和表空间.


总体实现概览

客户端进程对数据泵api进行调用.一旦作业启动了,客户端就不需要了.多个客户端为了监控或公主作业可以连接或断开这个作业.

当客户端登录到oracle数据库的适合,就创建了shadow进程.它为数据泵api的请求服务.当受到dbms_datapump.open请求的适合,shadow创建作业,这个作业主要包括创建master表,创建为各种进程通讯的aq对象,创建主控制进程.一旦作业运行了,shadow的主要任务通常包括为客户接受get_status请求.如果客户端断开,shadow也就没有了.

主控制进程控制数据泵的执行和顺序.它维护作业的状态,作业的描述,主表的重新启动和dump文件的信息.这个进程名称为DMnn.

接受到start_job的请求之后,主进程就根据parallel参数的值来创建许多工作进程.工作进程执行mcp受到请求的工作,主页是装载和卸载元数据和数据.工作进程的名称是DWnn.

如果外表的路径是作为装载和卸载数据的访问方法,工作进程根据装载和卸载的作业协调许多并行服务器进程.这样使得分区内的装载和卸载成为可能.


数据泵直接路径需要考虑的事项

细度访问控制的表在插入和选择模式是可以用的
lob类有域索引
现在有clustered的表
分区表的全局索引有单一分区的装载
bfile或不透明类型的列
引用完整性约束
有嵌入透明类型的varray列

数据泵支持对表的行数据的两种访问访问
使用直接路径api的直接路径
外表

数据泵自动的为每个表选择最合适的访问方法
当一个表的结构容许它和期望最大的单流性能的时候数据泵就使用直接路径装载和卸载数据.

然后如果上面的条件出现了,或者表含有加密列,或导入的表在装载和卸载的时候分区不一样,数据泵就使用外表而不是直接路径去移动数据.

数据泵文件位置

数据泵文件有三种类型
dump文件
日志文件
sql文件
绝对路径是不支持的
必须使用oracle路径对象
文件优先级
per-file路径
directory参数
data_pump_dir环境变量

dump文件包含要迁移的数据和元数据
log文件记录这个操作相关的信息
sql文件记录sqlfile操作的输出


因为数据泵是基于服务器的而不是客户端的,数据泵文件访问的是oracle的相对路径.为了安全的考虑,是不支持绝对路径的.

per-file路径对象必须为每个dump文件,log文件,sql文件指定.他们是通过冒号分隔的.
数据泵导入导出客户端通过directory参数来指定目录对象.这些路径对象描述了要访问的文件的位置.
你可以定义环境变量data_pump_dir,指定目录对象名而不用directory参数.数据泵客户端如果没有指定显示的路径对象就会去查找这个环境变量.


数据泵文件命名和大小

一个dump文件集可以包含多个文件
dumpfile指定dump 文件的列表
comma分隔的列表
%U模板
dump文件的初始个数依赖于
parallel参数
dumpfile参数
filesize参数决定每个dump文件的大小
已经存在相同的文件名的文件不会覆盖


dumpfile参数指定基于磁盘的dump文件的名称和路径(可选).如果是多个文件,就要用comma分开来列,或不同的dumpfile参数来指定.
文件名称可以包含%U变量来替代,这个表示要产生多个文件.%U变量在结构文件的名称解释成两位的,固长的从01单调递增的整数.如果没有指定dumpfile,默认名称就是expdat.dmp.默认的,dump文件的自动扩展的.

如果指定了filesize,每个文件的都是filesize那么多大,并且是不可以扩展的.如果指定了%U变量,或者需要更多的dump空间,filesize大小的文件自动创建.否则,客户端就说到要添加新文件的信息.

如果模板中指定了%U参数,一开始创建的文件的个数等于parallel参数.

如果跟生成的文件同名文件已经存在,它不会被覆盖.会产生一个错误,导致作业取消.


数据泵工具:接口和模式

数据泵导入导出接口
命令行
参数文件
交互式命令行
db control
数据泵导入导出模式
完全
schema

表空间
传输表空间


命令行可以让你直接在命令行下指定大多数导出参数.
参数文件接口可以在参数文件中让你指定大多数的命令行参数.例外是parfile参数.
交互行会显示导入导出提示,这样你可以输入各种命令.
你也可以在web页面来调用.


数据泵和过滤

细粒度对象选择
数据选择

和以前的exp/imp工具那样,你可以选择包含或忽略索引,触发器,授权和约束.数据泵作业可以包括或排除实际上是任何类型的对象.
exclude参数容许在导入或导出操作中排除任何数据库对象.
include参数容许在操作中只包含指定的对象类型.

content参数容许你请求当前的操作仅仅是元数据,或仅仅是数据,或都有.
query参数跟以前的export工具的方式相同,但有两个地方的改进:可以加表名,也可以在导入的时候使用.


数据泵导入的传输

你可以创建重映射
数据文件使用remap_datafile
表空间使用remap_tablespace
schema使用remap_schema

remap_datefile='c:oradatatbs6.f':'/u01/tbs6.f'

使用transform,你可以排除表和索引
storage和tablespalce子句
只有storage子句

因为对象原数据是作为xml存在dump文件集中的,这样在导入的时候形成ddl的时候就也容许去应用传输.数据泵的导入支持下面几种传输.

remap_datafile在不同文件系统的时候跨平台移动数据库非常有用.
remap_tablespace容许对象从一个表空间移到另外的表空间
remap_schema提供改变对象属主,就像以前的fromuser,touser


监控数据泵作业的视图

V$session_longops;
dba_datapump_jobs;
dba_datapump_sessions;
v$session;

超过六秒的事务就会放入到v$session_longops中.
你可以使用数据字典视图来查看数据泵的信息.
dba_datapump_jobs视图有一个实例或rac多个实例中的活动的数据泵作业.它也显示了所有还没有更活动作业联系的数据泵主表.
你也使用作业信息来连接上活动作业去停止它,改变它的并行度,或监控它的进程.你可以使用从job_name得到的主表信息,去重新启动一个停止的作业,或删除不需要的主表.

dba_datapump_session显示了连接到一个作业的会话信息.v$session_longops中有数据泵作业的入口,指示这个作业的进程,已经有多少m的数据传送了.这个入口包含归结的传输大学,它的定期的更新,反应了数据传送的实际数量.


你也可以访问db control主页维护标签的工具部分来启动数据泵工具.

每个连接,你都有向导帮助你定义数据泵作业的参数.

并行完全导入导出的例子

expdp system/manager full =y
parallel = 4
dumpfile = datadir1: full1%u.dat,
datafir2: full2%u.dat,
datadir3: full3%u.dat,
datadir4: full4%u.dat
filesize = 2g

impdp system/manager
directory = NET_STORAGE_1
parallel = 4
dumpfile = full1%u.dat,full2%u.dat,
full3%u.dat,full4%u.dat

限制的schema导出的例子(略)
网络模式导入的例子(略)


联系到已经存在的作业的例子

注意我们不必指定job名称,因为这样只有一个活动的job.
exp_ts1是默认的作业名称.
每个用户只有有一个作业.

重新启动停止的作业例子

只有数据的unload的例子

外表的population 概览

把数据卸载到外部平滑文件中
处理复杂的etl


在以前的版本中,外表是只读的.然后在10g中,外表也可以被写入.进程不可以对外表进行dml操作也不可以创建索引.但是你可以使用create table as select来populate外表到os无关的文件.


外表的population操作

使用oracle_datapump访问驱动
数据不能被修改
使用oracle_datapump访问驱动,结果文件是只读的.
你可以联合几个文件来导入.

为外表创建的数据文件可以移动或者作为这个数据库或别的数据库的另外一个外表的数据文件使用.然而他们只能由oracle_datapump访问驱动来访问.同样,不同的外表产生的数据文件也可以在另外的外表中指定location子句.这样提供了从多个来源汇集数据的简单方式.唯一的限制就是每个外表的元数据必须相同.

外表并行操作

可以创建多个文件
每个文件只有一个并行进程.
parallel和location影响了并行度.

因为外表可以很大,你可以使用并行操作来卸载数据到外表.当外表操作声明为parallel的时候,就开始并行执行了.
并行度也受到由访问驱动写的并发文件个数限制.
这样,在指定的时间点,决不会有一个以上的进程写一个文件.

location指定的文件的个数应该匹配并行度因为每个i/o服务进程需要它自己的文件.

.....
略.


第四章 自动管理

完成本章,你就会
使用自动数据库诊断监控器
使用自动共享内存管理
使用自动优化统计收集
使用阻挡undo retention调整
使用自动checkpoint调整


oracle10g自动通知你性能和资源分配的问题.另外还给你提供解决问题的建议,oracle10g还能自动为您解决问题.

自动数据库诊断监控概览

数据库中的性能诊断引擎
自动诊断性能问题
提供根本的分析以及推荐的解决方案
确定哪些地方没有问题
集成了所有的组件为各种类型的数据使用.

ADDM是自我诊断的引擎,直接在oracle数据库中,使用医学中的类比,我们可以把addm描述成您的全科医生.

它看你的正个系统,给出诊断,要么要么给出建议的治疗或给你去参考专家.

addm是由oracle数据库自动调用的,执行分析来看系统的主要问题.在许多情况下,addm推荐解决方案一般都得到期待的收益.

addm下钻到问题原因的根本原因,二不是症状,并且报告特定问题对整个系统的影响.如果有推荐,它就会报告期望的收益.

addm
也会把系统没有问题的地方进行文档.这样可以让你很快就可以看到那些地方没有问题,节省了你分析性能的时间.
因为addm使用的方法,它可以用在任何类型的数据库中,oltp,数据仓库,或混合型的.


addm性能监控

默认的,oracle数据库每个小时自动的从sga中捕捉统计信息,然后以快照的形式把它存在awr中.这些存在磁盘上的快照跟statspack快照很相似.然而,他们包含比statspack快照更精确的信息.

另外,addm通过新的mmon进程在每个数据库实例上计划的自动运行,提前的发现问题.每次进行快照的时候,addm触发去对这个时间段,根据最近两次快照进行分析.这样在问题还没有严重的时候就提前监控和发现了瓶颈.

每个addm分析的结果存在awr中,可以通过db control进行访问.


ADDM方法学

addm分析使用从顶向下的分析,集中在识别资源的瓶颈.这主要是通过新的时间统计模式来作的,这个大大的帮助了查看oracle把时间花在哪里.时间是真正的共同流通,在所有的调整组件中.(Time is indeed the common currency used across all tuning components.)
流通時間實際上是用在所有協調組件部分上。 (翻译好难)
这种方法使得addm首先确定最大影响的问题.addm使用树结构来代表所有可能的调整问题.这个树是基于oracle数据库使用的新的等待模型统计.这个分类树是基于几十年的oracle性能调整专家的意见.树的始节点代表症状,往下走到叶子,addm识别主要的性能问题.addm通过使用基于时间的基线(threshold)来遍厉每个节点.如果基于时间的基线(threshold)没有超过特定的节点,addm会剪去响应的子树.这就让addm发现了没有问题的区域.这个树的结构让addm有先的剪去快速识别问题的搜索空间.运行addm分析对系统的影响很小,而且不用三秒就可以完成.

一个很好的例子就是一个系统经历很高的登录率.单凭经验的方法也许是每秒超过10个登录率就是要修理的问题了.然而,许多系统可以运行很高的登录率,而对性能没有显著的影响.使用新的时间模型数据,addm可以报告数量上,登录花了oracle数据库的20%的时间.这些定量的数据可以让你更容易让你确信要处理这个问题.


发现的最头等的性能问题
头等(top)

在以前的oracle数据库版本中,statspacke是不能识别这个表中的以西问题,因为统计中没有粒度.随着10g数据库引入了新的等待时间统计模型,addm可以识别图中列出的头等性能问题.addm比statspack好的另外一点是addm关注于分析头等的性能问题,最影响系统的问题.


数据库control和addm的发现物

通过看你数据库的db control主页,你可以看到诊断总计部分,这会让你看到addm上次自动运行的发现物的数量.

通过点击性能发现物链接,你就链接到了addm页,这里你可以访问最近一次addm运行的详细.


addm分析结果

在addm页,你可以看到最近一次自动运行的详细发现物.数据库时间代表分析时间内这个数据库会话的非空闲时间.每个发现物都有特定的影响百分比.这个影响代表了分析时间过程中,相应的问题消耗的时间跟数据库时间的比.
1.图形显示了平台活动用户的数量在这个点急剧增长了.主要的问题就是等待.
2.这个图标显示了addm输出显示在对于这个时间点,在这个月的底部.你可以点其它的图标看以前的分析结果.
3.这个发现物给你一个你的addm发现的要调节的性能区的简单的总结.通过点击特定的问题,你可以直接进行性能发现详细页.

你也可以点查看报告按钮来得到文本个数的性能详细分析.


Addm推荐

在性能发现物详细页,你可以得到解决相应问题的推荐.
推荐按schema,sql调整,db配置和其它来分类.benefit%列给出如果推荐应用了,你可以在数据库时间上得到最大的降低.

addm考虑系统的许多的变化,它的推荐包括:

硬件的改变.添加cpu或i/o子系统的配置
数据库配置:改变初始化参数
schema改变:表或索引的哈希分区,或只有自动段空间管理.
应用程序改变:为序列或绑定变量使用cache选项
使用其它的建议:对紧迫的对象运行sql调节建议或高负载建议或断建议.


数据库control和addm任务

摩尔的,addm运行的每个oracle数据库快照都存在awr中.然后,你可以创建自己定义的addm任务去分析你指明的启始快照和终止快照这段时间.
要创建addm任务,到database主页,在相关链接部分,点advisor central链接,在advisor central也下面,点addm链接.

选择period start 时间选项,然后点在你要使用作为开始时间点的那个筷子,然后选择终止时间点的快照.
点ok,这就让你进入了addm页,在这里你可以看到新的任务要创建的确定.
在这页的性能分析部分,你可以得到你手工创建任务的结果.

改变addm属性

1.确定statistics_level设置为typical和all
2.addm一定i/o子系统期待的速度来分析i/o性能
a.计算你的i/o子系统的速度
b.设置期待的速度

addm默认的由statistics_level初始化参数控制的.要让addm自动运行,你不能把它设置成basic.默认的设置是typical.
addm依靠dbio_expected addm参数部分的分析i/o性能.
这个dbio_expected代表读一个数据库块的平均时间,单位是微秒.addm默认是10毫秒.对大多现代硬件是个合适的值.如果你的硬件不太一样,考虑不同的值.要决定dbio_expected值,执行下面的步骤.
1.测量你硬件单一数据块的读平均时间.注意这个是随机的i/o,包括你使用标准硬件的查找时间.典型值在5000到2万微秒之间.
2.接下来,设置你的dbio_expected值.例如,你测试的是8000微秒,你影响执行图中的第一个命令,用sys用户.上面的查询告诉你当前的参数.


使用sql得到addm报告

上面的例子显示了使用sql命令的查看最近的addm报告.
要诊断数据库性能问题,如果下面两个条件满足了,addm分析可以在两个awr快照之间进行.
*如果两个快照在创建的时候都没有错误,而且都没有被清除.
*在两个快照之间没有关闭和启动的操作.

第二个例子使用addmrpt.sql脚本.这个脚本可以用来在提供的任意两个awr之间运行addm.这两个快照必须是从同一个实例得到的.

这个脚本识别你的dbid,列出最近三天的快照标识符.这帮助你决定你要分析的快照对.


自动共享内存管理概览

自动适应工作负载变化
最大内存使用
帮助减少内出溢出错误

自动共享内存管理是oracle10g的另外一个自我管理的重要增强.这个功能自动的进行oracle数据库实例共享内存结构的管理,减轻了你手工配置那些组件.除了最大效率的使用内存,这样减少需要额外硬件内存资源的成本,asmm特性通过引进更动态的,弹性的和适应性的内存管理方案大大的简化了数据库管理.

例如,系统在白天运行大的oltp作业(需要大的缓冲),在晚上运行并行批作业(需要大的大池),你也许同时需要配置buffer cache和large pool来容纳你的顶峰需求.
有了asmm,运行oltp的时候,你的buffer cache就会抢到很多的内存为了很高的性能.后来运行dss批作业的时候,内存自动的移动到大池,这样就可以用来进行平行查询超载,而不会减少内存溢出错误.

sga调整原则

基于工作负载,mman在后台间断性的捕捉统计
mman使用不同的内存参考
内存移动到最需要它的地方
推荐使用spfile
-在关数据库的时候组件的大小保存了
-保留的值用来是启动时候的大小
-避免重新去得到这个优化的值

sga_max_size可以改变
初始值都是零,如果设定了,那么就是该值的下限.


asmm使用新的后台进程叫作mman.mman作为sga内存的经济人协调内存组件的大小.sga内存经纪人跟踪组件的大小和进行未完成的调整大小的操作.
sga内存经纪人为了决定内存的分配,观察系统和工作负载.它从不会满足,每格不到几分钟就执行这个检测,这样内存总是分配给它需要的地方.如果没有自动共享内存管理,组件的大小就是预期的他们的单一worst-case的内存需要.
基于工作负载信息,自动共享内存管理:
在后台间断性的捕捉统计
使用不同的内存参考
执行假定分析来决定内存的最好的分配
把内存移动到最需要它的地方
如果使用spfile就会保存组件大小

使用自动共享内存管理的优点

SGA_TARGET为总大小,如果不为零,表示打开自动管理.
SGA_MAX_SIZE最大的sga
SGA_TARGE当前用到的sga

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.


服务端产生的警告

服务端的警告racle服务器可以自动的发现警告情况.发现一个问题,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来得到分析的结果

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/330796/viewspace-884628/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-01-14

  • 博文量
    98
  • 访问量
    1025005