当前位置: 首页 > 科技观察

生产数据库记得优化一次——定期归档大表

时间:2023-03-19 18:40:42 科技观察

最近系统老卡,因为老系统看不到代码,只能从数据库层面分析,排错过程记录一下以下。1.查看超过10s的sqlSELECT'kill-9'||p.spid,/*p.spid,p.pid,*/s.sid,s.username,s.machine,s.sql_hash_value,s.last_call_et秒,s.last_call_et/60运行时间,s.client_info,p.program"OSProgram",'altersystemkillsession'''||s.SID||','||s.SERIAL#||''';'FROMv$会话,v$processpWHERE(s.status='ACTIVE')AND((s.usernameISNOTNULL)AND(NVL(s.osuser,'x')<>'SYSTEM')AND(s.TYPE<>'BACKGROUND'))AND(p.addr(+)=s.paddr)--ands.usernamein('CRMDB')ands.last_call_et>10/*ands.sql_hash_value=880766746*/ORDERBYs.last_call_et/60desc,"USERNAME"ASC,ownerid"用户名"ASC;2.获取工具体sqlselectsql_idfromv$sessionwheresid=1016--ats0x10k9m619selectlistagg(sql_text,'')withingroup(orderbypiece)fromv$sqltextwheresql_id='ats0x10k9m619'groupbysql_id3。问题sqlselecto.order_release_gid,o.order_release_gidfromORDER_RELEASEo,ORDER_RELEASE_TYPEortwhere(o.order_release_type_gid=ort.order_release_type_gid)and(o.order_release_gidin(selectors2.order_release_gidfromSTATUS_VALUEsv2、ORDER_RELEASE_STATUSors2where(sv2.status_value_xidin(:1,:2,:3))and(ors2.status_value_gid=sv2.status_value_gid)))and(o.order_release_gidin(selectors1.order_release_gidfromSTATUS_VALUEsv1,ORDER_RELEASE_status1where=xv1stat_stats)(ors2.status_value_gid=sv2.statuss).status_value_gid)))and(ort.order_release_type_xidin(:5))orderbyo.insert_datedesc4。获取sql详情SQL>@/home/oracle/sql/spoolsql.sql注意:这两个sqlid其实都是同一个sql的结果如下:5.执行计划执行计划没有什么可以开始的。6、各表的数据量观察表的数据量,发现有一个表有4000万条数据,而ORDER_RELEASE_STATUS表只记录了订单状态,业务确认只能保留2个月以内的数据.7.大表索引情况检查索引状态:selectSegnmentes/bytes/1024/1024fromdba_segmentswheresement_namein('ix_ors_stsvalgid','ors_orgid','ors_orgid','ix_ORS_ORS_STSVGID.ORDER_RELEASE_STATUS_DMP2asselect*fromORDER_RELEASE_STATUSwhere1=2;--创建存储过程:CREATEORREPLACEPROCEDUREglogowner.p_archive_order_tablesASBEGIN----转移ORDER_RELEASE_STATUS最近2个月数据到ORDER_RELEASE_STATUS_DMP2insertintoarchive.ORDER_RELEASE_STATUS_DMP2select*fromORDER_RELEASE_STATUStwheret.insert_date'AR>'AR'STORED_PROCEDURE',job_action=>'glogowner.p_archive_order_tables',start_date=>to_date('13-08-201918:00:00','dd-mm-yyyyhh24:mi:ss'),repeat_interval=>'freq=daily;byday=SUN;byhour=00;byminute=30;bysecond=0',enabled=>TRUE,comments=>'每周日12:30归档订单发布表');end;/(2)查看计划jobselectowner,job_name,job_type,job_action,comments,enabled,to_char(last_start_date,'yyyy-mm-ddhh24:mi:ss'),to_char(next_run_date,'yyyy-mm-ddhh24:mi:ss')fromdba_scheduler_jobs;