逍遥一派 发表于 2015-1-16 22:33:01

MSSQL网页设计chapter10:监控和调剂数据库

你看出了作者的深度?深处半米!当初是冲那么多的大牛给他写序才买的,后来才发现无啥内容,作者也只是才用几年的新手,百花了几十两银子,再次感叹当今社会的虚伪与浮躁监控|数据|数据库第10章:监控和调剂数据库目标
本章向您先容经由过程企业办理器实行的一些监控和调剂操纵。
主题
本章会商了以下内容:
自动监控数据库诊断息争决功能成绩利用SQLTuningAdvisor利用SQLAccessAdvisor利用MemoryAdvisor检察屏幕截图
将鼠标移到这个图标上,显现一切的屏幕截图。您还能够将鼠标移到各个图标上,以只检察与该图标相干的屏幕截图。
自动监控数据库
前往主题列表

警报匡助您自动地监控数据库。年夜多半警报是在凌驾特定的量度阈值时收回的公告。您能够为每个警报设置临界和告诫阈值。这些阈值即为界限值,假如凌驾了这些界限值,则唆使体系处于非预期的形态。



在这一部分中,您将实行以下义务:
创立具有指定阈值的表空间和表触宣布空间的空间利用率警报设置量度阈值设置公告创立具有指定阈值的表空间和表
前往主题列表

起首创立包括有一个20MB的数据文件的一个新的表空间。将当地办理这个表空间,并利用主动段空间办理(ASSM)。然后您在这个新的表空间中创立一个新的表。这个表将把EnableRowMovement选项设为yes,以同意表中的空间接纳。实行以下操纵:
1.
单击数据库主页上的Administration链接。




2.
单击Tablespaces链接。




3.
单击Create按钮。




4.
输出TBSALERT作为表空间称号,然后单击Add,为表空间界说一个数据文件。




5.
输出tbsalert.dbf作为数据文件名,并输出20MB作为文件巨细。单击Continue。




6.
单击Thresholds,指定空间利用率告诫和临界阈值程度。




7.
单击SpecifyThresholds,bypercentused。设置数据库局限的默许空间利用率阈值。为Warning%输出60,为Critical%输出68。单击OK。




8.
单击Database导览栏,前往Administration属性页面。




9.
单击Tables链接。




10.
单击Create。




11.
单击Continue。




12.
在Name域中输出employees1。指定SYSTEM作为形式,TBSALERT作为表空间。单击DefineUsing下拉列表,选择SQL。在CreateTableAs域中输出select*fromhr.employees,然后单击Options。




13.
为EnableRowMovement选择Yes,然后单击OK,完成表的创立。




14.
表已创立完成。单击Database导览栏。




触宣布空间空间利用率警报
前往主题列表

您如今将更新表,触发空间使用率警报。实行以下操纵:
1.
翻开SQL*Plus会话,然后实行以下命令:



sqlplussystem/oracle
2.
将以下SQL命令拷贝并粘贴到SQL*Plus会话中,以摹拟EMPLOYEES1表上的用户举动:

beginforiin1..1000loopinsertintoemployees1select*fromhr.employees;commit;endloop;end;/




3.
转至EnterpriseManager窗口。单击Database导览栏,前往到Administration页面,然后单击Tablespaces链接。




4.
注重,TBSALERT表空间利用百分率增添了。




5.
回切到SQL*Plus窗口,并将以下命令拷贝并粘贴到SQL*Plus会话中,,以摹拟EMPLOYEES1表上的更多用户举动:

deleteemployees1wheredepartment_id=50;

beginforiin1..500loopinsertintoemployees1select*fromhr.employees;commit;endloop;end;/




6.
转至EnterpriseManager窗口。革新扫瞄器(关于LinuxMozilla,从菜单栏当选择View,然后选择Reload)。注重,TBSALERT表空间的空间利用百分率增添了。




7.
回切到SQL*Plus窗口,并将以下命令拷贝并粘贴到SQL*Plus会话中,,以摹拟EMPLOYEES1表上的更多用户举动:

beginforiin1..500loopinsertintoemployees1select*fromhr.employees;commit;endloop;end;/






8.
将以下SQL命令拷贝并粘贴到SQL*Plus会话中,以摹拟EMPLOYEES1表上的用户举动:

deleteemployees1wheredepartment_id=30;commit;

deleteemployees1wheredepartment_id=100;commit;

deleteemployees1wheredepartment_id=50;commit;

deleteemployees1wheredepartment_id=80;commit;exit






9.
转至EnterpriseManager窗口。革新扫瞄器(关于LinuxMozilla,从菜单栏当选择View,然后选择Reload)。注重,TBSALERT表空间的空间利用率如今已凌驾了临界阈值程度(68%)。




10.
在您守候空间利用率警报显现在EnterpriseManager主页上时,请细心检察表段统计数据。单击Database导览栏,然后单击Tables链接。




11.
要查找SYSTEM.EMPLOYEES1表,请在Schema域中输出system,在ObjectName域中输出emp。单击Go。




12.
单击EMPLOYEES1链接。




13.
单击Segments。




14.
注重EMPLOYEES1表中华侈空间的百分率。您大概可以经由过程接纳表中未利用的空间来办理表空间空间利用率警报。

在统一页面上,您能够为SpaceUsageTrend指定一个日期局限,然后单击Refresh按钮,以计划EMPLOYEES1表将来的空间利用率。由于在EMPLOYEES1表上没有充足的举动汗青记录,以是您在空间利用率剖析图中将看不到十分成心义的数据。单击Database导览栏,然后单击Home页面标签。




15.
单击Refresh按钮几回,直到您看到一个白色的x和数字1紧邻着ProblemTablespaces呈现。向下转动至Alerts表。




16.
您将看到一个TablespacesFull警报。单击Tablespaceisfull链接。




设置量度阈值
前往主题列表

Oracle供应了一组事后界说的量度,个中一些量度一入手下手就具有为它们界说的阈值。您将事后为TBSALERT表空间的表空间利用率界说一个量度。要检察一切的量度,请实行以下操纵:
1.
单击RelatedLinks地区中的ManageMetrics。




2.
单击EditThresholds。




3.
向下转动至TablespaceSpaceUsed(%),然后选择这个量度。向上滚回到窗口顶部。




4.
单击SpecifyMultipleThresholds。




5.
关于TBSALERT表空间,将告诫阈值修正为70,将临界阈值修正为80。然后单击OK。




6.
修正完成。单击OK,将数据保留到数据库中。




7.
更新乐成。单击路径式导航栏中的Database导航项。




设置公告
前往主题列表

当呈现必要您干涉的事务时,您能够选择性地供应公告。默许地,临界形态的警报(如DatabaseDown、GenericAlertLogErrorStats和TablespaceUsed)都设置为供应公告。实行以下操纵:
1.
单击Database主页顶部的Setup。




2.
单击NotificationMethods。




3.
在OutgoingMailserver域中输出<您的邮件服务器>,在IdentifySenderAs域中输出dbaalert,在SendersEmail域中输出notify01@oracle.com,然后单击Apply。




4.
更新乐成。单击页面顶部的Preferences。




5.
单击General选项中E-mailAddresses的AddAnotherRow。




6.
输出notify01@oracle.com作为电子邮件地点,单击Apply。然后单击Database。




诊断息争决功能成绩
前往主题列表

在呈现数据库功能成绩时,必要您举行诊断和改正。偶然用户埋怨功能迟缓会使您注重到成绩。其他的时分,您大概注重到主页上的HostCPU图中的功能尖峰。

在一切情形下,主动数据库诊断监控器(ADDM)都将标志这些成绩,它默许每60分钟实行一次自上而下的体系剖析,并在OracleEnterpriseManager主页上呈报它发明的成绩。ADDM每60分钟主动运转一次,和主动事情负载信息库(AWR)收罗的快照同步产生。它的输入包括了它确认的每一个成绩的申明和倡议操纵。
天生功能成绩查找了局使用ADDM办理发明的功能成绩天生功能成绩查找了局
前往主题列表

为了演示ADDM怎样事情,您要天生一本性能成绩查找了局。在本文中,您将创立一个守候行锁的会话。要实行某些如更新和删除的操纵,会话必需锁住该行。实行以下步骤,天生功能成绩查找了局:
1.
翻开终端窗口,实行以下命令:



sqlplushr/hrcreatetableempasselect*fromemployees;deleteemp;




2.
再翻开一个终端窗口,并实行以下命令,创立一个行锁抵触:

sqlplushr/hrdeleteemp;




3.
单击EnterpriseManager窗口中的Performance。




4.
您将看到会话守候值十分高。守候约莫10分钟,然后向下转动至窗口底部。




5.
您如今将创立快照来捕捉功能成绩。单击Snapshots。




6.
单击Create,创立快照。




7.
单击Yes,创立野生快照。




8.
正在创立快照。




9.
一旦快照创立完成,请单击路径式导航栏中的database导航项,然后单击home。




10.
如今经由过程主页的Alert部分的一个警报,检测到了一本性能成绩。




使用ADDM办理发明的功能成绩
前往主题列表

当碰到功能成绩时,您可使用ADDM来办理它。实行以下操纵:
1.
单击警报DatabaseTimeSpentWaiting。




2.
注重倡议的操纵是运转ADDM来猎取更多的关于体系的功能剖析。单击AdditionalAdvice。




3.
确保从列表当选择了您创立的快照。注重SQLstatementswerefoundwaitingforrowlockwaits将影响体系凌驾86%的数据库工夫。单击列表中的这本性能成绩查找了局。




4.
您看到懂得决该功能成绩必要接纳的操纵。单击ViewRationale。




5.
您将看到引发成绩的特定SQLID。单击Close。




6.
要办理功能成绩,请单击路径式导航栏中的Database导航项。




7.
单击Performance。




8.
向下转动,然后选择AdditionalMonitoringLinks下的BlockingSessions。




9.
确保选择了第一流其余HR,然后单击KillSession。




10.
单击Yes,停止会话。




11.
会话停止。单击路径式导航栏中的Database导航项,然后单击Home。




12.
注重警报已消散。




利用SQLTuningAdvisor
前往主题列表

数据库办理员或操纵员实行以下义务来呼应性地监控并诊断数据库功能成绩:
检察数据库守候反省DatabaseWait类的TOPSQL使用SQL调剂参谋工具调剂SQL语句检察SQL语句的SQL实行细节检察数据库守候
前往列表
您将起首启动几个事情负载会话。然后您将检察数据库事情负载。创立一个称号为$HOME/wkdir的目次。下载perflab.tar文件,并将文件解紧缩至$HOME/wkdir目次中。实行以下步骤:
1.
翻开一个命令行窗口,然后运转以下OS剧本:

./setup_perflab.sh

注重:这个剧本运转将消费约莫4分钟。


2.
回切到EnterpriseManager窗口。选择Administration链接。




3.
在题目为Workload的部分中,单击AutomaticWorkloadRepository链接。




4.
断定已为该数据库收罗了几快照。检察Snapshots下的数目和最初一次ADDM快照收罗的工夫。应当有最少三个快照。单击路径式导航栏中的Database导航项。




5.
单击Performance链接。




6.
在Performance窗口中检察Sessions:WaitingandWorking图。显现一个暗示数据库以后事情负载的图表。(向图表添补数据大概要花一分钟)用ADDM快照收罗的数据来添补这个图表。图表的边上是图例。每个图例项目具有分歧的色彩。您能够从图中疾速断定占用最多工夫的项目是黄色的,即用户I/O。单击UserI/O链接。




7.
在ActiveSessionsWaiting:UserI/O图表下有两个饼图。检察右边的饼图TopWaitingSQL。这显现占尽年夜多半的守候(53%)是由一条SQL语句酿成的。检察右侧的饼图TopWaitingSessions。这个饼图显现以后最活泼的几个会话守候的工夫几近占不异的百分比。






反省DatabaseWait类的TOPSQL
前往列表

如之前的义务所示,有一条SQL语句招致了年夜部分的数据库守候。在这个义务中,您将深切懂得基本缘故原由。实行以下操纵:
1.
从ActiveSessionsWaiting:UserI/O页面中,单击页面中部的TopSQL。




2.
在呈现的具体页面上,检察WaitEventsforTopSQL表,该表按举动(%)排序。您能够看到TopSQL语句将其年夜部分工夫消费在了dbfilescatteredread举动上。单击具有最高举动百分比的SQL语句的SQLID。




3.
显现这条SQL语句的实行企图。单击CurrentStatistics标签。




4.
显现这条SQL语句的统计数据。单击ExecutionHistory标签。




5.
显现这条SQL语句的统计剖析图表。CPU和ElapsedTime图表显现在一段工夫上实行这条SQL语句的CPU利用率。选择SecondsPerExecution,单击Go,显现这条SQL语句的每次实行利用的工夫和资本。




6.
从显现的图表中,能够断定CPU资本利用率在增添,实行这条SQL语句消费的工夫也在增添。单击TuningHistory标签。




7.
显现之前为这条SQL语句供应的调剂倡议。以后没有倡议。您如今筹办好了利用SQLTuningAdvisor来调剂SQL语句。




使用SQL调剂参谋工具调剂SQL语句
前往列表

正如在上一个关于呼应式调剂的部分中断定的那样,方针SQL语句必要调剂。SQL调剂参谋工具将为您调剂实行企图。实行以下操纵:
1.
单击RunSQLTuningAdvisor。




2.
在ScheduleAdvisor窗口中,确保选择了Scope下的Comprehensive,功课将当即布置。单击OK。




3.
SQLTuningAdvisor将创立一个义务,以剖析SQL语句,义务一旦完成,将显现一组调剂倡议。




4.
单击ViewRecommendations。




5.
单击NewExplainPlan按钮,检察倡议的修正。




6.
正如您所看到的,新的注释企图删除全体的表扫描。单击扫瞄器前进按钮,前往上一页。




7.
单击Implement按钮,实行调剂倡议。




8.
呈现一条确认页面,唆使SQLProfile乐成创立。单击路径式导航栏中的Database导航项。




检察SQL语句的SQL实行细节
前往列表

您已实行了调剂倡议,如今检察SQL语句和其实行细节。实行以下步骤。
1.
实行Performance。




2.
向下转动至Sessions:WaitingandWorking图表。守候一分钟,察看用户I/O怎样削减。




利用SQLAccessAdvisor
前往主题列表

SQLAccessAdvisor供应了很多历程,能够挪用这些历程来匡助断定创立和抛弃哪些实体化化视图和索引。它使用基于您的形式的,假定的事情负载,或从实践的事情负载(大概由用户供应、来自OracleTrace或来自SQL高速缓存的内容)中作出决议。

还能够依据分歧的尺度对事情负载举行过滤,如只利用包括这些表的查询,或在这个局限中有优先权的查询。
筹办情况使用SQL高速缓存猎取倡议检察和实行倡议筹办情况
前往列表

实行以下步骤,为利用SQLAccessAdvisor筹办好情况。当Advisor在运转时,实体化视图和索引大概存在,但为了举例的目标,把它们删除,以便您能够看到Advisor的倡议。您还必要设置高速缓存,以便SQLAccessAdvisor可以天生倡议。实行以下操纵:
1.
翻开一个终端窗口,然后实行以下命令,清算情况:

sqlplussystem/
DROPMATERIALIZEDVIEWall_cust_sales_mv;DROPMATERIALIZEDVIEWcosts_mv;DROPMATERIALIZEDVIEWcosts_pm_mv;DROPMATERIALIZEDVIEWcust_sales_mv;DROPMATERIALIZEDVIEWsome_cust_sales_mv;DROPMATERIALIZEDVIEWcust_id_sales_aggr;DROPMATERIALIZEDVIEWsales_cube_mv;DROPMATERIALIZEDVIEWsales_gby_mv;DROPMATERIALIZEDVIEWCUST_TOTAL_SALES_MV;DROPMATERIALIZEDVIEWCUST_SALES_TIME_MV;




2.
如今您必要创立高速缓存。实行以下命令:

altersystemflushshared_pool;grantadvisortosh;connectsh/sh;SELECTc.cust_last_name,sum(s.amount_sold)ASdollars,sum(s.quantity_sold)asquantityFROMsaless,customersc,productspWHEREc.cust_id=s.cust_idANDs.prod_id=p.prod_idANDc.cust_state_provinceIN(Dublin,Galway)GROUPBYc.cust_last_name;SELECTc.cust_id,SUM(amount_sold)ASdollar_salesFROMsaless,customerscWHEREs.cust_id=c.cust_idGROUPBYc.cust_id;selectsum(unit_cost)fromcostsgroupbyprod_id;




使用SQL高速缓存猎取倡议
前往列表

您将利用您方才设置的SQL高速缓存来猎取来自SQLAccessAdvisor的倡议。实行以下操纵:
1.
翻开扫瞄器,输出以下URL:

http://:5500/em

输出sys/
作为SYSDBA,单击Login。




2.
向下转动至主页底部,然后单击RelatedLinks下的AdvisorCentral。




3.
单击SQLAccessAdvisor链接。




4.
确保选中了CurrentandRecentSQLActivity,然后单击ShowAdvancedOptions。




5.
向下转动。在FilterOptions下,选择Filterworkloadbasedontheseoptions。选择OnlythetopresourceconsumingSQLstatements和OnlySQLstatementsexecutedbythefollowingusers。然后在Users域中输出SH,然后单击Next。




6.
选择BothIndexesandMaterializedViews,然后单击Next。




7.
输出义务名OBE,为ScheduleType选择Standard,然后单击Next。




8.
在提要窗口中,单击Submit。




检察和实行倡议
前往列表

如今您能够检察了局,假如您但愿,能够实行它们。实行以下操纵:
1.
确保选择了您的功课,然后单击ViewResult。




2.
单击RecommendationID1,检察倡议的细节。




3.
在这里您能够自界说工具称号、形式和表空间,以实行倡议。向下转动,并将CreateMaterializedView的SchemaName修正为SH,然后单击OK。




4.
当您布置实行时,假如要检察将实行的SQL剧本,能够单击ShowSQL。




5.
向下转动至底部,您将看到创立实体化视图的语句和您刚作的修正。单击OK。




6.
单击ScheduleImplementation,实行倡议。




7.
为JobName输出OBEIMPL,然后单击Submit。




8.
实行功课创立完成而且如今正在运转。单击RunHistory标签。




9.
确保选择了您的功课,然后单击View。




10.
检察提要,然后单击路径式导航栏中的database导航项。




11.
单击MaterializedView。




12.
在Schema域中输出SH,然后单击Go。




13.
注重新创立的实体化视图呈现在列表中。单击路径式导航栏中的Database导航项,然后单击Tables链接。





利用MemoryAdvisor

前往主题列表

在这一部分中,您将自动办理并将一些与Oracle例程内存设置相干的义务主动化。经由过程将内存设置主动化,您有了更多的工夫来处置影响您的企业的使用或商务虚际成绩。

MemoryAdvisor是Oracle数据库外部的一个智能专家体系,它为各类SGA和PGA组件自动断定最优设置。当完成主动化时,Oracle将依据事情负载的需求主动调剂各类池和高速缓存的设置。
启用主动共享内容办理修正总SGA巨细利用PGAAdvisor启用主动共享内存办理
前往列表







实行以下操纵,启用SGA的主动共享内存办理:
2.
向下转动至主页底部,然后单击RelatedLinks下的AdvisorCentral。




3.
选择MemoryAdvisor。




4.
为AutomaticSharedMemoryManagement单击Enable。




5.
单击OK,启用主动共享内存办理。




6.
Oracle服务器如今将依据事情负载的需求主动调剂各类池和高速缓存的设置。




修正总SGA巨细
前往列表







当处于主动共享内存办理形式下时,要修正总的SGA巨细,您将必要确保最年夜的SGA巨细充足年夜。实行以下操纵:
1.
向下转动页面。将MaximumSGASize修正为261MB,然后单击Apply。注重:假如您吸收到一个毛病,那末单击Refresh按钮重试。




2.
单击Yes,确认修正。




3.
供应主机证书和数据库证书。单击OK。




4.
当您修正MaxSGASize参数时,例程必需从头启动。单击Yes,确认数据库重启。




5.
数据库重启历程将入手下手。单击Refresh。




6.
输出sys/
作为SYSDBA,单击Login。




7.向下转动,然后单击AdvisorCentral。



8.单击MemoryAdvisor。



9.将TotalSGASize参数修正为260MB。单击Apply。
注重MaxSGASize参数主动调剂与内存细粒巨细坚持分歧,固然您本来已把它设为261MB,但Oracle服务器主动将其修正为264MB。




10.
一旦您吸收到了确认公告―唆使参数已乐成修正,您还将注重到一些SGA组件的内存分派已主动调剂。




利用PGAAdvisor






前往列表

实行以下操纵,分派与PGA相干的内存:
1.
单击PGA。




2.
单击Advice……




3.
PGAAggregateTargetAdvice图显现在高速缓存中找到数据(以便您不需会见磁盘)的频次。在本文中,应该注重以后的PGAAggregateSize被设为24MB摆布,一切哀求的服务的88%以上都从内存中取得。这还显现溢出局限从12MB摆布入手下手。在12MB时,PGA哀求使用高速缓存的几率约莫为90%。PGAAggregateSize唆使(依据以后的事情负载和数据库中的会话数目),在该数据库中为一切PGA分派的巨细不凌驾24MB。单击OK。




4.
单击PGAMemoryUsageDetails。




5.
本图显现内存巨细哀求的利用率概况和各类PGA内存哀求的实行百分率。单击OK。





将鼠标移到这个图标上,以埋没一切的屏幕截图
上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。

透明 发表于 2015-1-19 16:25:26

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

只想知道 发表于 2015-1-28 08:28:39

这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?

爱飞 发表于 2015-2-5 20:14:12

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

精灵巫婆 发表于 2015-2-13 11:49:06

微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。

再见西城 发表于 2015-3-3 21:03:48

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

兰色精灵 发表于 2015-3-11 13:45:04

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

飘飘悠悠 发表于 2015-3-18 21:23:10

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

若相依 发表于 2015-3-26 18:44:12

如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
页: [1]
查看完整版本: MSSQL网页设计chapter10:监控和调剂数据库