【利用Oracle RDA( Remote Diagnostic Agent)快速收集Oracle产品分析数据】教程文章相关的互联网学习教程文章

oracle 分析函数2

12345 Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。 ②DENSE_RANK:12223 Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。 ③RANK:12225 Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的, 同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。-- ①对所有客户按订单总额进行排名 -- ②按...

oracle 分析函数5

-- 列出上一年度每个月的销售总额、年底销售额以及每个月的销售额占全年总销售额的比例 -- 方法①: select all_sales.*, 100 * round(cust_sales / region_sales, 2) || ‘%‘ Percent from (select o.cust_nbr customer,o.region_id region, sum(o.tot_sales) cust_sales, sum(sum(o.tot_sales)) over(partition by o.region_id) region_sales from orders_tmp o where o.year = 2001 group by o.region_id, o.cust_nbr) all_sal...

ORACLE中seq$表更新频繁的分析【代码】

)下有一个SQL语句执行非常频繁,一个小时执行了上万次: update seq$ set increment$=:2, minvalue=:3, maxvalue=:4, cycle#=:5, order$=:6, cache=:7, highwater=:8, audit$=:9, flags=:10 where obj#=:1 那么seq$这个数据字典表是做什么用的呢? 其实这个数据字典表是保存的是数据库下序列对象(SEQUENCE)的相关信息,而且它用来维护序列的变化。如下所示,我们通过实验来验证一下,我们启用10046事件,跟踪一下会话(leve...

ORACLE中seq$表更新频繁的分析【代码】【图】

)下有一个SQL语句执行非常频繁,一个小时执行了上万次: update seq$ set increment$=:2, minvalue=:3, maxvalue=:4, cycle#=:5, order$=:6, cache=:7, highwater=:8, audit$=:9, flags=:10 where obj#=:1 那么seq$这个数据字典表是做什么用的呢? 其实这个数据字典表是保存的是数据库下序列对象(SEQUENCE)的相关信息,而且它用来维护序列的变化。如下所示,我们通过实验来验证一下,我们启用10046事件,跟踪一下会话(leve...

oracle-表结构分析

TABLE "CS_GDBZDATA"."ACCT_WORK_REGISTER" ( "CURDATE" VARCHAR2(10) NOT NULL ENABLE, "MWORKBEGINTIME" VARCHAR2(8), "MWORKENDTIME" VARCHAR2(8), "AWORKBEGINTIME" VARCHAR2(8), "AWORKENDTIME" VARCHAR2(8), "NWORKBEGINTIME" VARCHAR2(8), "NWORKENDTIME" VARCHAR2(8), "WEEK" VARCHAR2(1), "WORKFLAG" VARCHAR2(10), "AREATYPE" VARCHAR2(10), "WORKFLAGHK" VARCHAR2(10), "WORKFLAGMC" VARCHAR2(10)) SEGMENT CREATION...

Oracle分析函数【代码】【图】

table CRISS_SALES (DEPT_ID VARCHAR2(6), --部门号SALE_DATE DATE, --销售日期GOODS_TYPE VARCHAR2(4), --货物类型SALE_CNT NUMBER(10) --销售数量 );插入测试数据:insert into CRISS_SALES values (‘D01‘, TO_DATE(‘20140304‘, ‘YYYYMMDD‘), ‘G00‘, 700); insert into CRISS_SALES values (‘D02‘, TO_DATE(‘20140306‘, ‘YYYYMMDD‘), ‘G00‘, 500); insert into CRISS_SALES valu...

oracle性能分析2【代码】

table {tablename}_his as select * from {tablename} where ...删除表数据。数据量太大(7444741)无法直接删除,需批量删除。declare cursor mycursor is SELECT ROWID FROM {tablename} WHERE ltl_time < to_date(‘2017-08-01‘,‘YYYY-mm-dd‘) order by rowid; --------按ROWID排序的Cursor,删除条件是XXX=XXXX,根据实际情况来定。type rowid_table_type is table of rowid index by pls_integer;v_rowid rowid_tabl...

mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析【代码】

INTO 如果没有记录是不会往下执行的,直接抛出NO_DATA_FOUND异常, 这个在plsql developer中直接测试执行没问题,会报ORA-1403异常。 但是在mybatis中调用的话就不会抛出NO_DATA_FOUND异常,而是在select * into语句为空时默默的终止执行该过程。 在服务层采用事务处理的话就有问题了,服务层调用 select * into为空的存储过程处理逻辑肯定是有毛病的,本来应该抛出异常扔给控制器层, 现在只是终止了,后面的语句还会执行,这样就...

Oracle 分析函数 over【代码】【图】

最近在做一个OA系统的统计模块,里面有个功能需要统计出每天新增的用户和累计新增的用户, 只有一张 用户登录的表(用户登录时间,用户ID,等等),效果图: 分析:1,同一用户在一天之内可以登录多次,在这一天表中,会有多条这个用户的记录,但统计的时候,只能算一次 2,肯定会用登录时间分组,用户ID去重,把数据统计出来 由于是以前的项目,种种限制吧,必须用一个sql写出来,查了好久,SQL如下:<!-- 总用户--><se...

oracle分析函数技术详解(配上开窗函数over())【代码】【图】

--显示各部门员工的工资,并附带显示该部分的最高工资。 SELECT E.DEPTNO,E.EMPNO,E.ENAME,E.SAL,LAST_VALUE(E.SAL) OVER(PARTITION BY E.DEPTNO ORDER BY E.SAL ROWS --unbounded preceding and unbouned following针对当前所有记录的前一条、后一条记录,也就是表中的所有记录--unbounded:不受控制的,无限的--preceding:在...之前--following:在...之后BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) MAX_SALFROM EM...

Oracle 工具类 Sql 分析索引的 碎片率

分析语句:SQL>analyze index <index_name> validate structure online; 分析表:analyze table tablename compute statistics; analyze index indexname compute statistics; 查看索引碎片的情况:SQL>select name,del_lf_rows_len,lf_rows_len,(del_lf_rows_len/lf_rows_len)*100 from index_stats;索引碎片率:(del_lf_rows_len/lf_rows_len)*100如果索引碎片率超过20%,oracle就会认为索引碎片已经非常严重,此时就需要对索引...

Oracle spatial空间查询的选择度分析【图】

用一个经纬度跨度均为1的矩形作为检索条件 explain plan for select * from DLTB20150705 where MDSYS.SDO_ANYINTERACT(shape, SDO_GEOMETRY(2003,4610,null,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(116,32,117,33)))=‘TRUE‘;此时执行计划的cardinality=14300,而真实返回的记录数是多少呢?显然,不是执行计划预计的14300。 现在我们把查询范围变大,设置纬度跨度均为2的矩形作为检索条件 explain plan for selec...

Oracle分析函数【代码】【图】

假设是ROLLUP(A, B, C)的话,GROUP BY顺序 (A、B、C) (A、B) (A) 最后对全表进行GROUP BY操作。 假设是GROUP BY CUBE(A, B, C),GROUP BY顺序 (A、B、C) (A、B) (A、C) (A) (B、C) (B) (C) 最后对全表进行GROUP BY操作。7、grouping函数 在以上样例中。是用rollup和cube函数都会对结果集产生null。这时候可用grouping函数来确认 该记录是由哪个字段得出来的 grouping函数使用方法,带一个參数,參数为字段名,结果是依据该字段得出...

oracle 查询不走索引的范例分析【代码】

like 后%位置不走索引问题 create table t2 as select * from dba_objects;——创建表 create index idx_t2_name on t2(object_name);——创建索引 set autotrace on ——开启执行计划跟踪 select * from t2 where object_name like ‘DE%‘;——走索引 select * from t2 where object_name like ‘%DE‘;——不走索引 查询字段类型与表字段类型不一致导致隐式转换,不走索引问题 create table t3(id varchar2(10),name varchar2(1...

oracle分页查询及原理分析(总结)【代码】

假定我们有一个sys_user用户表,具体如下:字段 user_Id login_name password org_id create_time注释 用户主键 登陆名 密码 单位id 创建时间 --srcSql,最底层sql select * from SYS_USER t where t.org_id=‘402881e54c40d74d014c40d8407a0016‘ order by t.create_time desc;1、使用between ... and ... (不建议,数据量大情况下速度慢)  如果使用between ... and ... ,则对最底层进行再次封装成带行号的数据结果集,即...