【转】Oracle中的硬解析与软解析
Oracle中的SQL在执行之前进行解析,一个硬解析包括下面的步骤:
加载到共享池中 - SQL源代码被加载到内存中。
语法解析 - Oracle检查语法拼写错误。
语义解析 - Oracle验证来自数据字典的所有表名和列名并且验证你是否有权访问这些数据。
查询转换 - 如果允许(query_rewrite=true),oracle将把复杂的SQL转换为等价的简单形式。
优化 - 根据模式的统计信息创建执行计划(在10g中或许会使用动态的样本统计信息)。
创建可执行文件 - Oracle创建一个服务于SQL查询的、调用本地文件的可执行文件。
Oracle提供了shared_pool_size参数来缓存SQL从而使我们不需要重复解析SQL。但是,如果shared_pool_size设置太小或者在代码中使用了非重用的SQL(例如包含直接量where name="fred"),SQL语句可能会过期。
在Oracle中软解析和硬解析的区别是什么?仅仅是上面用红色标明的第一步。也就是说,软解析不需要重新装载到共享池(以及相关的内存分配)。
通常很高的解析调用次数(>10/秒)表明你的系统有大量不同的SQL语句,或者你的SQL语句没有被重用(例如,没有使用绑定变量)。
硬解析需要把SQL语句加载到共享池中。硬解析比软解析差很多,因为它牵涉到共享池中内存的分配和管理。一旦被加载,SQL必须完全重新检查语法和语义以及生成可执行目标。
如果shared_pool_size设置的太小或者SQL语句没有重用,则会发生大量的硬解析。
所以要适当的设置共享池大小并且通过主机变量重用SQL。
本文转自:http://blog.csdn.net/zjliu1984/archive/2009/07/01/4312333.aspx
相关文档:
在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:
% 零或者多个字符
_ 单一任何字符(下划线)
\ 特殊字符
[] 在某一范围内的字符,如 ......
2009年12月24日,宁波银行在全行引入Oracle Siebel CRM,以全新管理理念及业务流程构建宁波银行统一的CRM(客户关系管理)系统,实现以客户为中心的客户关系管理和企业工作效率的全面提升。“以客户为中心”的销售服务平台,能提供全行统一的客户视图,同时实现了跨部门协同工作,并提供客户生命周期管理与服务, ......
INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。
所以SELECT INSTR('CORPORATE FLOOR' ......
原文地址:http://space.itpub.net/12330444/viewspace-249140
关于tkprof的详细使用情况可在oracle10g联机文档Performance Tuning Guide中找到。
Tkprof是一个分析ORACLE跟踪文件并且产生一个更加人性化清晰的输出结果的可执行工具;可用来格式化sql trace产生的文件,让你更容易看懂trace的内容。
Tkprof存放位置:C:\ ......
bbed.exe 数据块浏览和编辑工具
dbv.exe 数据文件逻辑检测工具
exp.exe 数据导出工具
imp.exe 数据导入工具
mig.exe 数据库移植工具
nmumigrate.exe Data Gatherer移植工具
ocopy.exe ......