oracle
lihao2372
这个作者很懒,什么都没留下…
展开
-
oracle with as语句的DDL尴尬
oracle with as 的用法不赘述,我理解有两方面的好处1) 复杂的查询会产生很大的sql,with as语法显示一个个中间结果,显得有条理些,可读性提高2) 前面的中间结果可以被语句中的select或后面的中间结果表引用,类似于一个范围仅限于本语句的临时表,在需要多次查询某中间结果时可以提升效率 比如 with a as (select* from dba_objects where 某些查询条件), b as (select * from a where 某些查询条件)原创 2011-05-25 15:30:00 · 1313 阅读 · 0 评论 -
优化前后比对之刷新oracle缓存
在我们处理优化SQL的时候,常常要优化前和优化后的SQL进行效率比对,但顺序执行的话,往往会由于数据缓存而无法测试出后面SQL的真实效率,此时我们可以通过清空oracle缓存,减少缓存对测试的影响。下面给大家简单介绍下如何刷新oracle缓存:1. alter system flush shared_pool将使library cache和data dictionarycache转载 2015-03-09 16:47:31 · 1127 阅读 · 0 评论 -
查找代码之间的关联关系之oracle常用表和语句篇
dba_constraints 查看约束 dba_cons_columns 约束涉及字段 两者结合可以查询所有外键引用某字段的表 dba_source 查询所在DB所有用户下TYPE BODY,PROCEDURE,TYPE,FUNCTION,TRIGGER,JAVA SOURCE,PACKAGEBODY,PACKAGE的源代码,注意写在java DAO层中的sql语句在这个视图原创 2015-03-09 16:17:00 · 518 阅读 · 0 评论 -
9i正常,11g会报错的几类sql写法
【sql写法】9i中SQL语句group by语法会自动排序,11g中不能自动排序。所以需要查看现有SQL语句中是否有单独使用Group by的语法,如果有,按需求加上order by 【全表扫描】单次全表扫描其实11g比9i,10g高。9i全表扫描数据会缓存在DB CACHE中,11g全表扫描数据全部通过DIRECT PATH READ进入PGA,但是数据不缓存。Or原创 2015-03-09 17:14:13 · 476 阅读 · 0 评论 -
sql性能优化结果集一致办法
如何保证两个结果集完全一致呢?两个结果集我们可以用A和B来表示两个集合完全相等,那么我们可以这么认为,集合A中的所有元素都在集合B中;集合B中的所有元素也都在集合A中。 那么在oracle数据库中我们可以通过集合相减的方式实现:集合A中的所有元素都在集合B中:cnt1 = count(*) from (B minus A) = 0 集合B中的所有元素都在集合A中:cnt2转载 2015-03-09 16:43:59 · 554 阅读 · 0 评论 -
删除主键约束时是否删除索引
问题:删除主键时是否会同时自动删除索引?答案:是否删除索引取决于索引是创建主键时自动创建的,还是创建主键前手工创建的。如果期望删除主键时,同时删除索引,安全的做法是增加drop index选项。另外,如果为了防止因存在外键引用而删除失败,可以增加cascade选项。以下内容在PLSQLDeveloper中亲测,为了代码便于阅读放到eclipse中做了格式调整。测试无drop ind转载 2015-03-09 16:37:24 · 9123 阅读 · 1 评论 -
oracle的rowid相关
文中大部分观点均来自Thomas Kyte的《Expert.Oracle.Database.Architecture.9i.and.10g.Programming.Techniques.and.Solutions》一书1 ALTER TABLE 表名 ENABLE ROW MOVEMENT 允许oracle改变分配给每行的rowid。否则flashback时会报“ORA-08189:翻译 2015-03-09 16:13:53 · 443 阅读 · 0 评论 -
oracle基于视图的instead of trigger丢失
基于视图建立的instead of trigger,如果重建或drop视图,则trigger会消失:oracle文档提到"INSTEAD OF triggers defined in the view are dropped when aview is re-created"。 要规避和解决此类问题,需在开发工作中,如果有视图的修改,应该去检查是否关联存在INSTEAD OF trig原创 2015-03-09 16:07:09 · 758 阅读 · 0 评论 -
oracle从char赋值到varchar2的几种情况
三种情况:1 char变量直接赋值到varchar22 function输出的char赋值到varchar23 procedure输出的char赋值到varchar2set serveroutput ondeclarev_char char:='Y';v_varcha2 varchar2(10);function functestchar return ch原创 2012-09-19 10:44:05 · 2074 阅读 · 0 评论 -
ORA-01002: fetch out of sequence在10G下之一例
set serveroutputondeclare cursor curis select c from t1; vvarchar2(2); begin insertinto tvalues('1'); open cur; loop原创 2012-08-18 15:58:38 · 788 阅读 · 0 评论 -
未加索引的外键(unindexed foreign keys)
英文原文和主要观点节选自Thomas Kyte《Expert.Oracle.Database.Architecture.9i.and.10g.Programming.Techniques.and.Solutions》一书的第6章locking and latching,本人在开发环境做了验证。Oracle will place a full table lock on a child table after modification of the parent table in two cases:• If翻译 2011-05-06 10:02:00 · 565 阅读 · 0 评论 -
在数据库限制模式下做版本部署的介绍
【什么是数据库受限】版本里面,涉及到数据库现有对象变更,如表、视图等,以及包头的变更,会采用限制模式;它们的重编译会引发关联对象失效,重新编译经常会遇到锁。仅有包体下发,则一般不用限制模式。受限是根据一个受限用户清单,把清单里面的用户进程kill掉,并限制它重新登录;不用重启DB。 【进入DB受限模式】exec prc_enb_restrict;1 取消除DBA用户外所有用户的原创 2015-03-09 16:47:45 · 738 阅读 · 0 评论