利用DDL改变执行计划

系统和数据变更在凌晨4点升级完成,测试时发现应用中有一条SQL执行异常缓慢。

手工执行SQL后,利用select * from table(dbms_xplan.display)查看执行计划。
发现执行计划和升级前并没有区别。

怀疑是统计信息有问题,跟开发人员沟通了一下。发现有几张表插入了一批数据。

收集统计信息后,重新执行SQL发现执行计划有了改变。
EXEC dbms_stats.gather_table_stats('&owner','&tablename',cascade => TRUE);

但系统上SQL的执行计划依然没有改变,系统依然缓慢。

怎么让系统上的SQL重新解析,使用新的执行计划呢?

1、重启数据库,
2、刷新共享池。
3、重新分析SQL引用的表和索引。
4、在SQL引用的对象(表、视图等)上执行DDL操作。
5、对SQL引用的对象进行了权限更改
6、修改SQL
7、使用outline

生产环境重启数据库,刷新共享池,修改权限风险太大。修改SQL,使用OUTLINE时间太紧.
综合考虑以上几种方法,决定在SQL引用的对象上执行DDL操作,即添加在表的列上添加一个注释。
alter table test_SUPPLIER modify SUPPLIER_NAME default SUPPLIER NAME;

由于在SQL引用的对象上执行了DDL操作,会导致SQL重新解析。
重新执行系统中的查询发现能很快返回结果。
Select * from table(dbms_xplan.display_cursor('95n1023ybm3u8',0)); 
查看执行计划后,发现执行计划也已经改变。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章 引论 概念 数据库(DB):长期存储在计算机内,有组织的,可共享的数据集合 数据库管理系统(DBMS):数据库 + 一组用以访问、更新和管理这些数据的程序 数据访问的高效和可扩展性 缩短应用开发时间 数据独立性(物理数据独立性 / 逻辑数据独立性) 数据完整性和安全性 并发访问和鲁棒性(恢复) 模式(Schema):数据库的总体设计 物理模式 物理数据独立性 :修改物理结构而不需要改变逻辑结构的能力 应用程序独立于数据的结构和存储 逻辑模式 逻辑数据独立性:数据逻辑结构的改变不影响应用程序(一般难以实现) 实例(Instance):特定时刻存储在数据库中的信息的集合 数据模型是一个概念工具的集合,用于描述数据结构、关系、语义、约束 数据库语言 DDL 指定一个数据库模式作为一组关系模式的定义、指定存储结构、访问方法和一致性约束 DML 检索、插入、删除、更新 过程化DML:要求用户指定需要什么数据,以及如何获得这些数据 声明式DML:也称为非过程化DML,只要求用户指定需要什么数据,而不指明如何获得这些数据 DCL 事务:是在数据库应用中完成单一逻辑功能的操作集合 SQL标准规定当一条SQL语句被执行,就隐式地开始了一个事务。 Atomicity (原子性 要么一起done要么一起滚), Consistence (一致性), Isolation (隔离性), Durability (持久性) / ACID Commit work:提交当前事务,也就是将该事务所做的更新在数据库中持久保存。在事务被提交后,一个新的事务自动开始 Rollback work:回滚当前事务,即撤销该事务中所有SQL语句对数据库的更新。这样,数据库就恢复到执行该事务第一条语句之前的状态 begin atomic … end之间:使得几个SQL语句为一个事务 数据库系统 VS 文件处理系统 文件处理系统 文件相互独立,程序随时编写 数据冗余和不一致、数据访问困难、数据孤立 存储信息时存在完整性问题(约束)、原子性问题(故障发生的不一致)、并发访问异常、安全性问题(用户选择性查看内容) 安全性:防止恶意更新或偷窃数据的企图 数据库访问 利用数据库管理系统提供的交互工具访问数据库(Mysql等) 利用开发工具设计界面、处理数据,调用ODBC等接口访问数据库(VC++) DBMS市场 关系型数据库 Oracle IBM(DB2) 开源数据库系统 MySQL 数据库系统 物理层(存储) 逻辑层(数据关系) 视图层(用户访问) 数据库设计步骤 需求分析 概念数据库设计 E-R模型(Entity-Relationship) 结构优化 检查冗余和异常关系 物理数据库设计 创建并初始化数据库&安全设计

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值