#acl merlyn:read,write All:read <> = AYY Oracle 上午会议 = == 大表未分区,系统IO等待严重 == == 合理使用分区 == I. 杜绝使用DELETE FROM GDAYY_GOODSSALEFLOW WHERE FILDATE <= TRUNC(:B1)-60 类似语句的出现。 I. SQL中需要加入时间段过滤条件。 === 大表分区 === I. 目标表的选择(已完成,buy2s等) I. 分区字段选择( 查询的时候要使用, 删除历史数据或归档的时候要使用 ) I. 分区类型的选择( 日期分区,interval自动生成 ) I. 索引的处理 (原来表大部分有主键,为了避免重复,分区后仍保留(global), 清理历史数据要重建,其它索引建local) I. 原来使用这些表的SQL,需要加上分区字段上的限制条件。 == 统计信息问题 == I. 需要开启信息收集进程(前提为表已分区,IO压力减轻) == 高并发问题 == I. 高并发导致数据库hang (2018.4.11) == 减少RMAN增量备份的IO读取量 == == 代码效率问题 == I. 业务: 硬解析问题, 硬解析+表上无统计信息,加剧系统压力,必须调整。 I. 报表: 需要改写来提高效率,当前已完成两天培训,需要进一步优化,当前已给出多个修改范例。 === 部分SQL没有使用绑定变量,避免不必要的SQL使用 === i. 频繁执行的SQL必须使用绑定变量。 === 索引问题 === i. 统计信息必须要有。 == 游标问题使用 == i. 用with改写得到提升。 i. 在某些场景,去掉游标,性能提升上百倍。 === 报表SQL大量update语句 === = 明确实施计划 = == 尽快进行大表分区 == I. 评估表的分类,确认表分区的优先级。 I. 结合表分区测试时间,预估时间,充许的停机时间进行维护窗口的评估。 I. 回退方案: 表分区时执行异常,表分区执行失败,分区成功后异常。 == 游标&索引问题处理 == I. 由袁工理出来,让相应的开发人员跟进处理。 == 统计信息的问题 ==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 == I. 适合变动很少的表,加入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之前需要关闭 == 索引问题 == I. 100个SQL语句使用到索引CSL中的TIME字段, 但只有一个SQL语句进入了TOP 5 SQL。 = 索引优化十分重要 = * 建立索引的标准为返回少量值/记录,哪怕是只有一条记录的表。 * 静态表尽量建立索引。 * 动态表谨慎建立索引。 * 上千万的数据却只有一个值, 也可以建立索引, 使用roomnumber ? * 执行不频繁可以无需建立索引。