oracle
文章平均质量分 75
rfb0204421
这个作者很懒,什么都没留下…
展开
-
如何做trace 每一步 每一行
Trace的作用a) 优化sqlb) 跟踪系统动作 i. 根据参数追踪,重现出错; ii. 查找运行缓慢的部分; Trace文件是我们可以得到的,系统最明细的执行过程,从执行起始,流经的包,过程或函数,传入的参数,转载 2013-11-12 14:28:22 · 2250 阅读 · 0 评论 -
SQL优化个人总结
1. 避免复杂的多表关联2. 避免使用select *3. 避免使用耗费资源的操作:带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL 可以: 用EXISTS替换DISTINCT用UNION-ALL 替换UNION ( if possible)4. 如果索引是建立在多个列上, 只有在它的第一个列(leading c原创 2012-06-19 16:57:18 · 1172 阅读 · 0 评论 -
Oracle 物化视图 .
一. 理论部分Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图转载 2012-06-19 15:13:04 · 625 阅读 · 0 评论 -
Oracle中merge into的使用
该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动。1,insert 和update是可选的 2,UPDATE 和INSERT 后面可以跟WHERE 子句 3,在ON条件中可以使用常量来insert 所有的行到目标表中,不需要连接到源表和目标表 4,UPDAT转载 2012-06-19 15:23:32 · 771 阅读 · 0 评论 -
oracle游标详解
Oracle游标循环第一种使用loop 循环 open c_postype; 0. loop fetch c_postype into v_postype,v_description ; exit when c_postype%notfound; …… end loop colse c_p转载 2011-10-29 10:25:17 · 4857 阅读 · 1 评论 -
oracle分析函数系列之ratio_to_report:计算占总数百分比
数据库如何用Oracle RATIO_TO_REPORT计算总数百分比除报告详细数据外,许多报告中还包括每行总数的百分比。例如,每名客户的订单相对于总订单的百分比,或每位销售代表的销售额相对于总销售额的百分比。传统上,Oracle计算百分比的方法是在总计报告的子查询中使用SUM函数总计报告,然后把那个结果放到细节表中相除来计算百分比。你还可以用一个子查询作为SELECT语句表达式:原创 2012-06-19 11:39:42 · 20757 阅读 · 0 评论 -
oracle分析函数系列之LAG和LEAD:取出同一字段的前N行的数据和后N行的值
另一篇博文有关于此函数的变通使用:http://blog.csdn.net/rfb0204421/article/details/7609520Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。以下是LAG和LEAD的例子:SQL> select year,region,profit原创 2012-06-19 11:27:36 · 5971 阅读 · 0 评论 -
异常处理与错误处理
异常处理 错误处理 错误处理部分位于程序的可执行部分之后,是由WHEN语句引导的多个分支构成的。错误处理的语法如下: EXCEPTION WHEN 错误1[OR 错误2] THEN 语句序列1; WHEN 错误3[OR 错误4] THEN 语句序列2; WHEN OTHERS 语句序列n; END; 其中: 错误是在标准包中由系统预定义的标准错误,或转载 2012-06-19 14:05:16 · 1219 阅读 · 0 评论 -
oracle分析函数系列之ROLLUP和CUBE
使用rollup函数的介绍 Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、原创 2012-06-19 13:05:31 · 1488 阅读 · 0 评论 -
oracle分析函数系列之first_value/last_value:在记录集中查找第一条记录和最后一条记录
注意:与max,min的区别,虽然也可以实现,但只是针对数字字段.1、初始化原始数据:create table test (id number(2), name varchar2(10), salary number(6,2));insert into test values (1,'Tom',120);insert into test values (2,'Ellen',240)原创 2012-06-19 11:16:36 · 5777 阅读 · 0 评论 -
Oracle-VPD简析
Oracle-VPD简析 Oracle权限控制采用oracle的dbms_rls包实现数据访问控制 在大部份系统中,权限控制主要定义为模块进入权限的控制和数据列访问权限的控制(如:某某人可以进入某个控制,仓库不充许查看有关部门的字段等等)。 但在某些系统中,权限控制又必须定义到数据行访问权限的控制,此需求一般出现在同一系统,不同的相对独立机构使用的情况。(如:集团下属转载 2013-08-15 14:13:57 · 1079 阅读 · 0 评论 -
Oracle包被锁定的原因分析及解决方案
Oracle包被锁定的原因分析及解决方案在数据库的开发过程中,经常碰到包、存储过程、函数无法编译或编译时会导致PL/SQL 无法响应的问题。碰到这种问题,基本上都要重启数据库解决,严重浪费开发时间。本文将就产生这种现象的原因和解决方案做基本的介绍。问题分析从事数据库开发的都知道锁的概念,如:执行 Update Table xxx Where xxx 的时候就会产生锁。这种常见的锁在转载 2013-06-09 14:19:57 · 984 阅读 · 0 评论 -
Oracle之AUTHID CURRENT_USER
没有AUTHID CURRENT_USER表示定义者权限(definer rights),以定义者身份执行;加上AUTHID CURRENT_USER表示调用者权限(invoker rights),以调用者身份执行。 例: 1. 创建两个用户:xxpo,xxgl2. 在xxpo下创建一张表:xxpo_authid_test[c-sharp] view p转载 2013-05-30 10:55:44 · 6527 阅读 · 0 评论 -
oracle转义字符escape
SQL> select * from test;TEST--------------------sdd_kkd'ddfsfsadffa%asfs123451%23451%543212%54321%%54321A&B 已选择9行。 其中包含特殊的字符分别为%,_,&,有可能包含这些字符的数据含有错误,或者需要查找包含这转载 2012-07-26 09:23:06 · 3917 阅读 · 0 评论 -
动态传入的逗号连接的字符串,分散成多条记录(Oracle 10g 使用REGEXP_SUBSTR 分拆字符串)
select replace(regexp_substr(:idstring,'[^,]+',1,level),',',' ') from dual connect by level SELECT l_count, REGEXP_SUBSTR('add, daddf, dsdf, asdfa, dsfasd, dsfad'转载 2012-07-25 09:52:46 · 3701 阅读 · 0 评论 -
Oracle Connect By用法
oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:select ... from where start with connect by ;:过滤条件,用于对返回的所有记录进行过滤。:查询结果重起始根结点的限定条件。:连接条件数据组织结构如转载 2012-07-10 15:03:03 · 3234 阅读 · 0 评论 -
oracle分析函数系列之Top/Bottom N、min() keep First/Last、NTile:排名空处理,查询第一名,最后一名
目录===============================================1.带空值的排列2.Top/Bottom N查询3.First/Last排名查询4.按层次查询一、带空值的排列:在前面《Oracle开发专题之:分析函数2(Rank、Dense_rank、row_number)》一文中,我们已经知道了如何为一批记录进行全排列、分组排原创 2012-06-18 16:36:20 · 4560 阅读 · 1 评论 -
oracle分析函数系列之rank,dense_rank,row_number:实现排名策略
Rank,Dense_rank,Row_number函数为每条记录产生一个从1开始至N的自然数,N的值可能小于等于记录的总数。这3个函数的唯一区别在于当碰到相同数据时的排名策略。①ROW_NUMBER:Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。 ②DENSE_RANK:Dense_rank函数返回一个唯一的值,除非当碰到相同原创 2012-06-18 15:43:31 · 3947 阅读 · 0 评论 -
oracle分析函数系列之sum(col1) over(partition by col2 order by col3):实现分组汇总或递增汇总
语法:sum(col1) over(partition by col2 order by col3 ) 准备数据: DEPT_ID ENAME SAL1 1000 A 25002 1000 B 35003 1000原创 2012-06-18 10:00:56 · 19797 阅读 · 1 评论 -
oracle中 connect by prior 递归算法,connect_by_root,sys_connect_by_path,connect_by_isleaf,CONNECT_BY_ISCYC
with tbl as( select 'A' as parent_cd, 'C' as child_cd from dual union all select 'A' as parent_cd, 'D' as child_cd from dual union all select 'C' as parent_cd, 'B' as chil转载 2011-11-07 14:08:24 · 6808 阅读 · 0 评论 -
Oracle 中的Userenv()
1.USEREVN()返回当前用户环境的信息,opt可以是:ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE1.ISDBA 查看当前用户是否是DBA如果是则返回trueSQL> select userenv('isdba') from dual;USEREN------转载 2011-11-02 10:30:20 · 1131 阅读 · 0 评论 -
Oracle中Returning语句的几个小问题
ORACLE的DML语句中可以指定RETURNING语句。RETURNING语句的使用在很多情况下可以简化PL/SQL编程。 这里不打算说明RETURNING语句的使用(其实使用起来也很简单,和SELECT INTO语句没有多大区别。),主要打算说明RETURNING语句的几个特点。 其实这篇文章源于同事问我的一个问题: 使用UPDATE语句的时候,RETURNING得转载 2011-10-24 15:52:39 · 1924 阅读 · 0 评论 -
DBMS_SQL包使用
通常运用DBMS_SQL包一般分为几步:1. open cursor: 打开cursor2. parse cursor:解析你要执行的SQL语句3. bind variable:如果要执行的SQL语句中包含变量,在此就需要绑定变量4. execute:执行SQL语句5. close cursor:在执行后关闭此cursor.如果你还需要返回执行SQL的结果集,还需要使用de转载 2011-10-24 11:14:39 · 1138 阅读 · 1 评论 -
oracle hint (体系)了解
写HINT目的 手工指定SQL语句的执行计划 hints是oracle提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用hints来实现: 1) 使用的优化器的类型 2) 基于代价的优化器的优化目标,是al转载 2011-10-14 16:03:35 · 744 阅读 · 0 评论 -
oracle 索引分類
在向大家详细介绍Oracle建表之前,首先让大家了解下Oracle索引,因为好的索引能帮助Oracle数据库更好的检索我们想要的信息。Oracle索引逻辑上:Single column 单行索引Concatenated 多行索引Unique 唯一索引NonUn转载 2011-10-14 14:00:33 · 1062 阅读 · 0 评论 -
OLAP和OLTP的介绍
数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易转载 2011-10-14 13:42:25 · 3349 阅读 · 0 评论 -
BTree和位图索引
Oracle的索引主要包含两类:BTree和位图索引。默认情况下大多使用Btree索引,该索引就是通常所见 唯一索引、聚簇索引等等,Btree用在OLTP,加快查询速度。位图索引是Oracle的比较引人注目的地方,其主要用在OLAP(联机数据分析)方面,也就是数据仓库方面用到,目转载 2011-10-14 14:12:36 · 3567 阅读 · 0 评论 -
Oracle hash join
hash join是oracle里面一个非常强悍的功能,当做hash join时,oracle会选择一个表作为驱动表,先根据过滤条件排除不必要的数据,然后将结果集做成hash表,放入进程的hash area,接着扫描第二张表,将行的键值做hash运算,到内存的hash表里转载 2011-10-14 16:17:39 · 2387 阅读 · 0 评论 -
Oracle中的 UPDATE FROM 解决方法
在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据。例如:UPDATE Table2SET Table2.ColB = Table2.Co转载 2011-11-07 14:59:04 · 712 阅读 · 0 评论 -
Oracle Length 和 Lengthb 函数说明 .(用来判断记录值里是否有中文内容)
一.官网的说明 http://download.oracle.com/docs/cd/E11882_01/server.112/e26088/functions088.htm#SQLRF00658 PurposeThe LENGTH functionsreturn the length of char. LENGTH calculates length usingcharact转载 2011-12-19 16:46:37 · 3481 阅读 · 1 评论 -
oracle分析函数系列之sum() rows/range between ... preceding and ... following,上下范围内求值
Oracle为这种情况提供了一个子句:rows between ... preceding and ... following。从字面上猜测它的意思是:在XXX之前和XXX之后的所有记录,实际情况如何让我们通过示例来验证:SQL> select month, 2 sum(tot_sales) month_sales, 3 sum(sum(tot_sa原创 2012-06-19 11:09:38 · 20305 阅读 · 0 评论 -
SQL(oracle) 取得分组后最大值记录
select * from (select t.*, row_number() over(partition by 分组字段 order by 排序字段 desc ) rnfrom tablename t )where rn=1row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组转载 2012-05-08 16:19:17 · 28525 阅读 · 1 评论 -
递归展开BOM
procedure wst_agile_bom_extend(p_item_id in number, p_level in number)is cursor cur(p_item in number) is select id,item_number,quantity,component from原创 2012-05-31 15:26:14 · 3385 阅读 · 0 评论 -
ORACLE SQL 单引号双重角色
单引号双重角色——字符串引用与转义 在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义,开始学习时动态构成SQL时经常不解。单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解。 1、从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。SQL> SELECT '''' FROM DUAL; ''转载 2012-05-29 11:02:23 · 863 阅读 · 0 评论 -
ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
存储过程1、找到正在执行的存储过程的 sid ,serial# select b.sid,b.SERIAL#,a.OBJECT, 'alter system kill session ' || '''' || b.sid || ',' ||b.SERIAL# || ''';' kill_command from SYS.V_$AC转载 2012-05-21 15:41:46 · 17882 阅读 · 0 评论 -
重复的列值只在第一行显示
这样的一个数据的排列,ws_mold cst_mold item_no1 1 21 1 31 1 42原创 2012-05-28 15:37:04 · 2549 阅读 · 0 评论 -
Oracle的锁表与解锁
Oracle的锁表与解锁SELECT /*+ rule */ s.username, DECODE (l.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LO转载 2012-05-07 15:32:25 · 832 阅读 · 0 评论 -
【转】PLSQL中显式Cursor、隐式Cursor、动态Ref Cursor区别
今天简单的总结一下PL/SQL中cursor(光标/游标)的用法。相信不少做开发或维护的DBA在找工作的时候,遇到过类似的面视问题:请简单的描述一下光标的类型,说一下普通光标和REF光标之间的区别,以及什么时候该正确应用哪一个? 这个题目,我着实难住了不少人,其实他们在具体开发的时候,也还是比较能够把握正确的光标的使用的,但就是说不出来,当然了,这与大家自身的沟流交通能力是有关系的转载 2012-05-07 15:29:46 · 694 阅读 · 0 评论 -
Oracle 临时表用法
ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法。临时表分为SESSION、TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION;而TRANSACTION级的临时表数据在TRANACTION结转载 2012-02-22 15:09:35 · 702 阅读 · 0 评论 -
Oracle的优化器的优化方式
一、目的: 1、说一说Oracle的Optimizer及其相关的一些知识。 2、回答一下为什么有时一个表的某个字段明明有索引,当观察一些SQL的执行计划时,发现确不走索引的问题。 3、如果你对 FIRST_ROWS、 ALL_ROWS这两种模式有疑惑时也可以看一转载 2011-10-14 16:02:16 · 590 阅读 · 0 评论