本篇内容介绍了“oracle数据库CPU过高问题举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、环境准备

1、查看当前快照情况

SQL>selectmax(snap_id)fromdba_hist_snapshots;28

2、手工生成一份快照

execdbms_workload_repository.create_snapshot;

3、创建实验表

SQL>createsequences_t3_idminvalue1maxvalue9999999999startwith1incrementby1cache20order;SQL>createtablet3(idnumber,namevarchar2(20),createddate);Tablecreated.SQL>begin2foriin1..5000000loop3insertintot3values(s_t3_id.Nextval,dbms_random.string('u',10),sysdate);4endloop;5end;6/SQL>createsequences_t4_idminvalue1maxvalue9999999999startwith1incrementby1cache20order;SQL>createtablet4(idnumber,namevarchar2(20),createddate);Tablecreated.SQL>begin2foriin1..3000000loop3insertintot4values(s_t4_id.Nextval,dbms_random.string('u',10),sysdate);4endloop;5end;6/SQL>select*fromscott.t3wherename=dbms_random.string('u',10);norowsselectedSQL>select*fromscott.t4wherename=dbms_random.string('u',10);norowsselected

4、手工生成快照

execdbms_workload_repository.create_snapshot;

至此,模拟问题出现时的快照区间为29-30

二、使用SPA进行分析

begin2dbms_sqltune.create_sqlset(3sqlset_name=>'cpu_test',4description=>'Highcpureadtuningset');5end;6/PL/SQLproceduresuccessfullycompleted.SQL>declare2base_curdbms_sqltune.sqlset_cursor;3begin4openbase_curfor5selectvalue(x)fromtable(DBMS_SQLTUNE.select_workload_repository(29,30,NULL,NULL,'cpu_time',NULL,NULL,NULL,10))x;6--7dbms_sqltune.load_sqlset(sqlset_name=>'cpu_test',populate_cursor=>base_cur);8end;9/PL/SQLproceduresuccessfullycompleted.SQL>variablests_taskVARCHAR2(64);SQL>EXEC:sts_task:=DBMS_SQLPA.CREATE_ANALYSIS_TASK(sqlset_name=>'cpu_test',order_by=>'cpu_time',description=>'processworkloadorderedbycpu_time');PL/SQLproceduresuccessfullycompleted.SQL>EXECDBMS_SQLPA.execute_analysis_task(task_name=>:sts_task,execution_params=>dbms_advisor.arglist('TIME_LIMIT','1800'));PL/SQLproceduresuccessfullycompleted.SQL>setserveroutputonSQL>setheadingoffSQL>setpagesize2000SQL>setlong20000SQL>spoolcompare_report.htmlSQL>selectDBMS_SQLPA.report_analysis_task(:sts_task,'HTML','ALL','ALL')fromdual;SQL>spooloff

查看生产的HTML文件,可看到时间范围内运行的所有sql的信息

“oracle数据库CPU过高问题举例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!