- 博客(41)
- 收藏
- 关注
原创 [译] PL/SQL 格式化指南 (PL/SQL Formatting Guide)
最近一直在修改以前同事写的Oracle存储过程,由于编码不规范,修改起来相当费神,于是乎,翻译了这篇 PL/SQL Formatting Guide (Oracle PL/ SQL by Example,Appendix A),费了九牛二虎之力,终于翻译完了,也终于知道自己的英语有多烂了,呜呜。声明:原创翻译,不足之处请多多指正,转载请注明出处!一、大小写 就像在SQL中一样,PL /...
2009-11-30 17:03:37
248
原创 RAC异常小结
前几天在VMWare上安装了RAC,安装过程中以及今天在启动时都出了几个错误,简要记录下:1.配置 Oracle 集群文件系统 (OCFS2)出错: # ocfs2consoleConfigure Nodes --> Add --> 输入NODE名和IP --> OK --> Apply出现如下错误: o2cb_ctl: Unable to access ...
2009-11-06 16:57:36
156
linux LVM RAW
关键字: linux 裸设备 lvm 一:这部分是网上搜到的,扫盲,我的操作在第二部分。1.创建pvpvcreate -M2 --metadatasize 100M /dev/sda pvcreate -M2 --metadatasize 100M /dev/sdb1 pvcreate -M2 --metadatasize 100M /dev/sdb2 pvcreate -M2 --metadat...
2009-11-05 10:52:25
179
原创 oracle RAC环境分布式计算设置
在RAC中,我们可以通过设置跨节点并行,将并行操作分布到RAC中的不同节点同时进行,以便发挥整个RAC环境的最大运算能力。在RAC中设置跨节点并行主要是通过设置parallel_instance_group和instance_groups这两个参数进行的。instance_groups这个参数主要是设置该节点实例是否属于某一个实例组,这个实例组的命名可以根据你的需要随便命名,而没有严格的限制。每个...
2009-11-04 23:57:20
284
原创 rman report list crosscheck delete
一、REPORT1、报告目标数据库的物理结构 RMAN>REPORT SCHEMA2、报告需要备份的数据文件 在执行备份之前,常常需要取得需要备份的数据文件信息,通过执行REPORT NEED BACKUP命令,可以列出需要备份的数据文件。当使用REPORT NEED BACKUP命令时,可以带有INCREMENTAL、DAYS、REDUNDANCY、RECOVERY WI...
2009-10-14 15:16:05
154
原创 EXPIRED和OBSOLETE的区别
EXPIRED和OBSOLETE的区别 作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】 链接:http://www.dbaroad.com/archives/2009/08/expired_obsolete_differ.html 常常混淆RMAN中EXPIRED和OBSO...
2009-10-14 14:17:49
272
原创 Oracle Raw,number,varchar2...转换
Oracle Raw,number,varchar2...转换 在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一个数据库移到另一个数据库时,Oracle 服务器不执行字符集转换。存储实际列值所需要的字节数大小随每行大小而异,最多为 2,000 字节。可能这样的数据类型在数据库效率上会提高,而且对数据由于字符集的不同而导致的不一致的可能...
2009-09-17 11:24:08
459
原创 Oracle's Query Transformer
Oracle's Query Transformer Oracle优化器的工作主要分成3步。。。Oracle优化器的工作主要分成3步: 首先, 优化器会尝试把复杂的SQL语句转化较为简单的SQL语句, 通常倾向于转化为表的连接方式. 然后, 优化器会对依据统计信息对SQL语句进行估量, 这些估量主要包括3个方面: Selectivity, Cardinalit...
2009-09-09 17:56:08
119
原创 观察analyze table compute statistics 都对什么对象统计了信息
观察analyze table compute statistics 都对什么对象统计了信息 analyze table compute statistics = analyze table compute statistics for table for all indexes for all columns; 比analyze table compute statistics fo...
2009-09-08 12:52:46
517
原创 sql 语句中or条件之种种情况
sql 语句中or条件之种种情况1、相同字段or条件,转换为inlist 走index range scanSQL> select * from test_or a 2 where a.object_id=20 or a.object_id=21;执行计划----------------------------------------------------------Plan...
2009-09-08 10:55:02
456
原创 /*+ precompute_subquery */子查询中的提示
QUOTE:--------------------------------------------------------------------------------select * from tab1 where tab1.object_name in(select /*+ precompute_subquery */ object_name from tab2 where owner='...
2009-09-08 10:51:40
154
原创 关于绑定变量的一点心得
我们一直在告诉开发人员一定要使用绑定变量,而你是否真正了解绑定变量的有缺点呢?绑定变量可以减少SQL分析,节约共享池的空间。但是在某些情况下,使用绑定变量也是有缺点的。比如说,如果使用绑定变量,那么优化器就会忽略直方图的信息,在生成执行计划的时候可能不够优化。另外一个有趣的问题是,如果一张表有几十万条记录,而某个字段有2个值,那么如果在这个字段上建一个索引,那么这个索引可能起作用吗?不能?...
2009-09-08 10:03:10
118
原创 push_subq提示
PUSH_SUBQ 可以用来控制子查询的执行 这个是PUSH_SUBQ 的本意我那个例子的意思是说:PUSH_SUBQ 本质上是个CBO的hints(当然RBO也提不上hints)由于PUSH_SUBQ 的引入就是为了来解决unnesting的某些不足所以在不同的版本上,这个hints发挥的作用也有所不同了. 8i上这个提示的作用更接近本原: $ sqlplus "...
2009-09-06 12:17:11
270
原创 bash shell if 命令参数说明
bash shell if 命令参数说明 本章我们会讨论在Bash脚本中使用条件,包含以下几个话题: if 语句 使用命令的退出状态比较和测试输入和文件 if/then/else 结构 if/then/elif/else 结构 使用和测试位置参数嵌套 if 语句 布尔表达式 使用 case 语句 7.1. 介绍if 7.1.1 有时候你需要指定sh...
2009-09-01 16:44:23
239
原创 Oracle内存结构研究-PGA篇
一、概述SGA,PGA,UGA都是Oracle管理的内存区。SGA(System Global Area),即系统全局区,Oracle中最重要的内存区。PGA(Process Global Area),即程序全局区,一个进程的专用的内存区。UGA(User Global Area),即用户全局区,与特定的会话相关联。专用服务器连接模式,UGA在PGA中分配。共享服务器连接模式,UGA在SGA中...
2009-08-26 10:33:48
234
原创 查询--驱动表
查询中何为驱动表阿??请问这句话怎么理解啊?楼主goldtogo(jinhao)2002-12-06 09:36:27 在 Oracle / 基础和管理 提问3.1 SQL语句的优化 SQL语句的执行速度,可以受很多因素的影响而变化。但主要的影响因素是:驱动表、执行操作的先后顺序和索引的运用。可以由很多不同的方法间接地改变这些因素,以达到最优的执行速度。这里主要探讨当对多...
2009-08-24 10:58:50
135
原创 SQL连接驱动表帖子
http://www.itpub.net/viewthread.php?tid=144375&extra=&page=1 SQL语句的执行速度,可以受很多因素的影响而变化。但主要的影响因素是:驱动表、执行操作的先后顺序和索引的运用。可以由很多不同的方法间接地改变这些因素,以达到最优的执行速度。这里主要探讨当对多个表进行连接查询时应遵循的优化原则: (1)...
2009-08-24 10:08:07
301
原创 oracle参数deprecated
在 Oracle 10g 中,以前熟悉的一些参数已经 deprecated 了,有的时候很烦人。SQL> STARTUP;ORA-32004: obsolete and/or deprecated parameter(s) specifiedORACLE instance started.Total System Global Area 213909504 by...
2009-08-22 22:08:21
246
原创 oracle parallel execution example
引子:以前一直没太关注oracle并行这个特性。前几天一个兄弟碰到的一个问题,才让我觉得这个东西还是有很多需要注意的地方,有必要仔细熟悉下。其实碰到的问题不复杂:类似如下的一条语句:insert into xxxx select /*+parallel(a) */ * from xxx a;数据量大约在75G左右,这位兄弟从上午跑到下午还没跑完,过来问我咋回事,说平常2hrs能跑完的东西跑...
2009-08-21 18:10:27
177
原创 用Oracle并行查询发挥多CPU的威力
在一个单独的服务器中安装更多的CPU成为目前的一个趋势。使用对称多处理服务器(SMP)的情况下,一个Oracle服务器拥有8个、16个或32个CPU以及几吉比特RAM的SGA都不足为奇。 Oracle跟上了硬件发展的步伐,提供了很多面向多CPU的功能。从Oracle8i开始,Oracle在每个数据库函数中都实现了并行性,包括SQL访问(全表检索)、并行数据操作和并行恢复。对于Oracle专...
2009-08-21 17:07:45
568
原创 Oracle中巧用CTAS快速建立表格
CTAS是通过查询,然后根据查询的结果来建立表格的一种方式。显然通过这种方式可以省去定义表结构的方法,而且在创建表的同时导入数据。不过在使用这个方法的时候,仍然有些内容需要引起数据库管理员的注意。(SQL Server数据库中成批导入数据的几个常用方法) 如上图,就是笔者利用CTAS建立表格的过程。其中AD_USER是原表,而AD_USER_CTAS是利用CTAS方法建立的表。利用...
2009-08-21 15:55:08
848
原创 优化SQL语句的一些规则
大家都在讨论关于数据库优化方面的东东,刚好参与开发了一个数据仓库方面的项目,以下的一点东西算是数据库优化方面的学习+实战的一些心得体会了,拿出来大家共享。欢迎批评指正阿! SQL语句: 是对数据库(数据)进行操作的惟一途径; 消耗了70%~90%的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低; 可以有不同的写法;易学,难精通。 SQL优...
2009-08-20 21:01:20
112
原创 oracle中关于in和exists,not in 和 not exists、关联子查询、非关联子查询
oracle中关于in和exists,not in 和 not existsin和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。not exists:做NL,对子查询先查,有个虚表,有确定值,所以就算子查询有NULL最终也有值返回not in:做hash,对子查询...
2009-08-20 15:01:31
1159
原创 Oracle的大表,小表与全表扫描
通常对于小表,Oracle建议通过全表扫描进行数据访问,对于大表则应该通过索引以加快数据查询,当然如果查询要求返回表中大部分或者全部数据,那么全表扫描可能仍然是最好的选择。从V$SYSSTAT视图中,我们可以查询得到关于全表扫描的系统统计信息:SQL> col name for a30 SQL> select name,value from v$sysstat2 where ...
2009-08-20 11:11:52
263
原创 reverse函数与like % 的使用
oracle 提供一个reverse函数,可以实现将一个对象反向转换.比如:SQL> select reverse('123456') from dual;REVERSE('123456')-----------------654321 由于这个函数,是针对数据库内部存储的对象编码进行反转的,因此,在比如:数字,中文等.因为实现存储的并不是直接编码后的结果,而是经过某种内...
2009-08-19 18:03:30
209
原创 Oracle语句优化规则汇总(二)
1. 用UNION替换OR (适用于索引列) 通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果。 对索引列使用OR将造成全表扫描。注意, 以上规则只针对多个索引列有效。 如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低。 在下面的例子中, LOC_ID 和REGION上都建有索引。 高效: SELECT LOC_ID ,...
2009-08-19 15:14:18
126
原创 Oracle语句优化规则汇总(一)
Oracle sql 性能优化调整 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS...
2009-08-19 15:07:05
131
原创 几种索引扫描方式
1)索引唯一扫描 如果查询时是通过unique或primary key约束来保证只返回一条数据,那么优化器就会选择索引唯一扫描,这是访问一条数据的最快方式。2)索引范围扫描索引键非唯一,当遇到如下条件时会使用索引范围扫描:1.col=:b12.col<:b13.col>:b13)索引降序范围扫描与2)中的情况相同,只不过2)默认是按照升序进行查找的,而这里是...
2009-08-19 14:47:51
268
原创 oracle不使用索引原因定位
较典型的问题有:有时,表明明建有索引,但查询过程显然没有用到相关的索引,导致查询过程耗时漫长,占用资源巨大,问题到底出在哪儿呢?按照以下顺序查找,基本上能发现原因所在。查找原因的步骤首先,我们要确定数据库运行在何种优化模式下,相应的参数是: optimizer_mode 。可在 svrmgrl 中运行“ show parameter optimizer_mode" 来查看。 ORACLE V...
2009-08-19 11:36:53
134
列定义是否为空对COUNT(*)操作索引选择的影响
SQL> desc test; Name Null? Type ----------------------------------------- -------- ---------------------------- OBJECT_NAME VARCHAR2(128) OBJECT_ID NUMBER============...
2009-08-19 11:28:35
155
原创 ORALCE /*+NO_EXPAND*/ 含义
求教 ORALCE /*+NO_EXPAND*/ 含义 是什么求教 ORALCE /*+NO_EXPAND*/ 含义 是什么 谢谢网上的解释是 "对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展."但是什么是阻止其基于优化器对其进行扩展??有什么具体例子么,迷惑中-------------------------------------...
2009-08-18 11:02:42
711
原创 and_equal,index_join,index_combine
and_equal,index_join,index_combine这三种都是oracle利用索引关联获得数据的方法,三者的目的都是为了最大限度的利用索引,减少回表的代价.但是三者的实现方法是有区别的,下面一一来分析.and_equal:这种方式需要查询条件里面包括所有索引列,然后取得每个索引中得到的rowid列表,然后对这些列表做merge join,过滤出相同的rowid后再去表中获取数据...
2009-08-18 10:16:36
144
原创 RBO下,oracle如何选择驱动表
--目的:弄清楚RBO下,oracle如何选择驱动表--连接到部门测试机器10.188.239.68进行测试操作CONN CRM1/CRM1@TEST--********************************************************--1测试环境说明--****************************************************...
2009-08-17 16:16:18
246
原创 利用Oracle内置分析函数进行高效统计汇总
分析函数是Oracle从8.1.6开始引入的一个新的概念,为我们分析数据提供了一种简单高效的处理方式。在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在只要一条简单的SQL语句就可以实现了,而且在执行效率方面也有相当大的提高。下面我将针对分析函数做一些具体的说明。分析函数的一般格式是函数名(参数列表) over ([partition by 字段名...
2009-08-17 15:22:33
226
原创 oracle count计数的优化
在9i,我们知道count(*)的时候,如果表上有pk,那count(*) 一定会走pk的。count(column) ,如果column指定not null,那count(column) 可以走上索引(通过试验证明,必须还要加上index提示才能走上索引)。但如果列上有空值,不管如何加提示,都走不上列上的索引(组合索引的非引导列除外) count是否应该走索引,主要取决于cou...
2009-08-17 15:21:17
162
原创 三招让Oracle表列管理更加简单
Oracle数据库是目前为止最复杂的一个数据库之一。也正是这种复杂性,让Oracle数据库能够面对企业各种各样的需求。不过大部分时候,数据库管理员掌握一些技巧,可以让数据库维护工作变得简单。 Oracle数据库是目前为止最复杂的一个数据库之一。也正是这种复杂性,让Oracle数据库能够面对企业各种各样的需求。不过大部分时候,数据库管理员掌握一些技巧,可以让数据库维护工作变得简单。笔者这里...
2009-08-17 15:20:29
82
原创 索引什么时候不工作
首先要声明两个知识点: (1)RBO&CBO。 Oracle有两种执行优化器,一种是RBO(Rule Based Optimizer)基于规则的优化器,这种优化器是基于sql语句写法选择执行路径的;另一种是CBO(Cost Based Optimizer)基于规则的优化器,这种优化器是Oracle根据统计分析信息来选择执行路径,如果表和索引没有进...
2009-08-17 15:18:58
71
原创 Oracle HINT的常见用法
提示(hint)从Oracle7中引入,目的是弥补基于成本优化器的缺陷。提示通常用来改变SQL执行计划,提高执行效率。使用提示需要遵循的原则:1)仔细检查提示语法。尽量使用完整注释语法/*+ hint */2)使用表别名。如果在查询中指定了表别名,那么提示必须也使用表别名。例如:select /*+ index(e,dept_idx) */ * from emp e;3)不要在提示中使...
2009-08-17 15:02:29
96
原创 30个Oracle语句优化规则详解
1.选用适合的Oracle优化器Oracle的优化器共有3种:a.RULE(基于规则)b.COST(基于成本)c.CHOOSE(选择性)设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE、COST、CHOOSE、ALL_ROWS、FIRST_ROWS。你当然也在SQL句级或是会话(session)级对其进行覆盖。为了使用...
2009-08-17 15:01:45
79
原创 Oracle RBO、CBO简介
Rule Based Optimizer(RBO)基于规则Cost Based Optimizer(CBO)基于成本,或者讲统计信息ORACLE 提供了CBO、RBO两种SQL优化器。CBO在ORACLE7 引入,但在ORACLE8i 中才成熟。ORACLE 已经明确声明在ORACLE9i之后的版本中(ORACLE 10G ),RBO将不再支持。因此选择CBO 是必然的趋势。CBO和 RB...
2009-08-17 14:59:11
112
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人