随笔分类 -  Oracle

Oracle上线包里的@和@@有什么区别?
摘要:Oracle存储过程的发布方式比较古老, 使用sqlplus工具,运行一个入口文件,文件内通过@符号的方式调用其他文件或执行入口文件中的sql,而调用其他文件的方法有@、@@、start 他们分别有什么区别呢? @跟start 功能相同,至少发布这一块功能是相同的。 剩下是@和@@ 区别体现在Lin 阅读全文
posted @ 2022-12-12 10:30 我是一只胖子 阅读(1985) 评论(0) 推荐(0)
使用extract函数生成时间间隔
摘要:在实际的报表需求中,需要统计某些指标的时间间隔,以此计算业务人员办公的实效性;例如某些流程的审批实效、复核实效等等。 Oracle提供了相应的间隔函数,NUMTODSINTERVAL,但是这中显示方式并不友好。无法直观的看出间隔。 NUMTODSINTERVAL默认展示效果 +000000002 0 阅读全文
posted @ 2022-07-11 16:23 我是一只胖子 阅读(236) 评论(0) 推荐(0)
test,基于预定义表的物化视图是否可以加字段
摘要:物化视图很方便,能通过外加触发器的方式记录表的变化情况。 但碰到原表新增字段的情况就无能为力了,无法在触发器正常工作的情况下加字段。 本来要测试一下,基于预定义的表是否可以直接加字段,测试结果是不可以。 测试结果: 删除mv,预定义表不会一起删除,数据也不会变化 重建mv会清空源端物化视图日志,所以 阅读全文
posted @ 2021-01-11 09:34 我是一只胖子 阅读(669) 评论(0) 推荐(0)
test,测试物化视图分区
摘要:物化视图真是个好东西, 能同步源端数据。对于同构数据库来说,简直是ETL避免dblink的利器。 今天有一个场景,需要使用分区的物化视图。主要是查询会基于分区键,能提高性能。 数据库版本 Oracle 11.2.0.4 1. 创建原表与物化视图日志 Create Table EMP_SOURCE A 阅读全文
posted @ 2021-01-09 21:49 我是一只胖子 阅读(274) 评论(0) 推荐(0)
基于表结构创建物化视图
摘要:使用场景: 如果发现创建物化视图的DDL始终执行不通过,并且找不到执行计划。从v$session 中可以获取执行计划。 1. 源端 1.1 创建表结构 -- Create table create table EMP_SOURCE ( empno NUMBER(4) not null, ename 阅读全文
posted @ 2020-12-29 17:48 我是一只胖子 阅读(274) 评论(0) 推荐(0)
Oracle排查问题常用脚本
摘要:使用Oracle做数仓时,经常会查询一些数据库会话信息。 平时常用的查询SQL如下: 查询会话信息,注释部分如果打开,则显示undo的使用情况。 SELECT DISTINCT S.INST_ID, S.MACHINE, S.BLOCKING_SESSION, S.SQL_ID, S.LAST_CA 阅读全文
posted @ 2020-12-25 15:21 我是一只胖子 阅读(245) 评论(0) 推荐(0)
test,测试物化视图刷新组是否并行刷新
摘要:我们知道刷新组的目的是__为了解决外键关系表刷新先后的问题__,从这个目的出发,推断刷新组内物化视图刷新是串行的。 我通过触发器的方式,监控了一下这个现象。 同时也说明了刷新组内,物化视图并不是并行刷。 结论:物化视图刷新组并不是并行刷新的 数据库版本 Oracle 11.2.0.4 1. 创建物化 阅读全文
posted @ 2020-04-09 23:42 我是一只胖子 阅读(390) 评论(0) 推荐(0)
物化视图能不能记录刷新的数据量
摘要:CREATE MATERIALIZED VIEW LOG ON emp WITH PRIMARY KEY ; CREATE MATERIALIZED VIEW mv_emp REFRESH FAST ON DEMAND NEXT nullAS SELECT * FROM emp ; SELECT * 阅读全文
posted @ 2020-03-26 19:39 我是一只胖子 阅读(410) 评论(0) 推荐(0)
不使用分析函数找每个月销量最高的车型
摘要:不使用分析函数计算每个月每种车型销售前3的行 自关联,使用月份关联,关联后,匹配当前月销售量比本车型销售量大的数据。 汇总后,行数最少的,就是销售量最多的。 阅读全文
posted @ 2019-07-30 17:50 我是一只胖子 阅读(250) 评论(0) 推荐(0)
Oracle备份统计信息
摘要:Oracle可以通过DBMS_STATS.GET_TABLE_STATS 收集表的统计信息,一般的收集方法如下: 如果表的数据量比较稳定, 比如员工表,部门表,这种不经常变化的数据,并不需要每天收集统计信息。 那么可以通过导出导入的方式对统计信息进行备份。 1. 创建一张表来保存统计信息 2. 导出 阅读全文
posted @ 2019-07-05 17:14 我是一只胖子 阅读(382) 评论(0) 推荐(0)
Oracle使用存储过程返回查询游标
摘要:如果报表逻辑非常复杂的话, 可以把报表逻辑放到存储过程里,加工一个全局临时表。前端查询的时候只查询临时表即可。只是第一次查询需要忍受加工的时间。 阅读全文
posted @ 2019-07-04 17:07 我是一只胖子 阅读(995) 评论(0) 推荐(0)
Oracle中删表遇到ORA-14452
摘要:删表的时候碰到表忙的情况,会报错。 这个时候可以使用几个视图查看一下当前哪些SESSION正在使用 我这个表TMP_TAB_T_AGENT 是会话级别全局临时表,有些会话使用之后没有退出,无法释放锁。 杀一下 阅读全文
posted @ 2019-07-04 16:26 我是一只胖子 阅读(502) 评论(0) 推荐(0)
Oracle如何杀同库不同实例的会话
摘要:今天处理了一个生产上的问题,主要就是杀会话, 生产环境是Oracle11gR2 RAC;有同事开发报表,报表工具连接到数据库上特别嚣张,把内存pin住; 确定有问题的会话之后,开始杀会话, 同节点的好说,不同节点其实也可以kill session; 使用方法如下: 阅读全文
posted @ 2019-06-27 10:36 我是一只胖子 阅读(563) 评论(0) 推荐(0)
关于Oracle中Sort Merge Join的改写
摘要:业务场景的问题,我们有一个刷CUBE的SQL,是Oracle环境,平时跑70多分钟, 但是最近突然不动了,这个SQL需要算累计值,比如年累计客户数量。 累计值是什么意思呢?我们使用下面的数据来说明问题。 2019年1月,客户数量是100, 2019年2月,客户数量是102 , 那么2019年1月的客 阅读全文
posted @ 2019-06-25 22:07 我是一只胖子 阅读(632) 评论(0) 推荐(0)
通过hint干掉笛卡尔积
摘要:Z_ZZZZZZZZ_BENE 大约有400万数据 Z_ZZZZZZZZ_BENE 大约有400万数据 修改前 SELECT xxxx FROM ( SELECT DISTINCT FIELD1_CONTENT FROM xxxxxxxx_LOG@DBLINK WHERE UPPER(TABLENA 阅读全文
posted @ 2019-06-19 13:37 我是一只胖子 阅读(614) 评论(0) 推荐(0)