AYY Oracle 上午会议

大表未分区,系统IO等待严重

合理使用分区

  1. 杜绝使用DELETE FROM GDAYY_GOODSSALEFLOW WHERE FILDATE <= TRUNC(:B1)-60 类似语句的出现。

  2. SQL中需要加入时间段过滤条件。

大表分区

  1. 目标表的选择(已完成,buy2s等)
  2. 分区字段选择( 查询的时候要使用, 删除历史数据或归档的时候要使用 )
  3. 分区类型的选择( 日期分区,interval自动生成 )
  4. 索引的处理 (原来表大部分有主键,为了避免重复,分区后仍保留(global), 清理历史数据要重建,其它索引建local)
  5. 原来使用这些表的SQL,需要加上分区字段上的限制条件。

统计信息问题

  1. 需要开启信息收集进程(前提为表已分区,IO压力减轻)

高并发问题

  1. 高并发导致数据库hang (2018.4.11)

减少RMAN增量备份的IO读取量

代码效率问题

  1. 业务: 硬解析问题, 硬解析+表上无统计信息,加剧系统压力,必须调整。
  2. 报表: 需要改写来提高效率,当前已完成两天培训,需要进一步优化,当前已给出多个修改范例。

部分SQL没有使用绑定变量,避免不必要的SQL使用

  1. 频繁执行的SQL必须使用绑定变量。

索引问题

  1. 统计信息必须要有。

游标问题使用

  1. 用with改写得到提升。
  2. 在某些场景,去掉游标,性能提升上百倍。

报表SQL大量update语句

明确实施计划

尽快进行大表分区

  1. 评估表的分类,确认表分区的优先级。
  2. 结合表分区测试时间,预估时间,充许的停机时间进行维护窗口的评估。
  3. 回退方案: 表分区时执行异常,表分区执行失败,分区成功后异常。

游标&索引问题处理

  1. 由袁工理出来,让相应的开发人员跟进处理。

== 统计信息的问题 ==http://www.dba-oracle.com/t_execute_simultaneous_synchronous_oracle_jobs.htmhttp://www.dba-oracle.com/t_execute_simultaneous_synchronous_oracle_jobs.htm

Oracle 报表优化培训下午

result_cache

  1. 适合变动很少的表,加入result_cache

# before
  select count(distinct BaseCurrency) From VENDOR;

#after 
  select /*+ result_cache */ count(distinct BaseCurrency) From VENDOR;

pivot

SQL语句优化

零售消息推送(凯德WEBSERVICE销售数据接口

Begin
  select count(1) into VRET from v_store_notify s where s.gid = vStoredGid;

parallel

SQL> alter session enable parallel DML;
SQL> alter session enable parallel DDL;
执行当前session会话或关掉会话之后,需要disable.

logging 是否开启

在实施DataGuard之前需要关闭

索引问题

  1. 100个SQL语句使用到索引CSL中的TIME字段, 但只有一个SQL语句进入了TOP 5 SQL。

索引优化十分重要

首頁/2018-04-17 (last edited 2018-04-19 13:24:14 by merlyn)