- 博客(44)
- 收藏
- 关注
原创 架构师之路始于云栖大会
2017年10月11日至10月14日,每年一届的云栖大会如期在杭州云栖小镇举行。由于今年我调到杭州工作了,得天独厚的优势,我全程参加了4天的云栖大会。4天时间,总共听了八个分论坛。彻底意识到了,阿里技术的强大。我一直以为像操作系统、数据库这样的产品,只有专业公司才会去做的。没想到,阿里人已经开发出了自己的操作系统与数据库。而且阿里自研的数据库已经支撑起了EB级的海量数据运行。 如今
2017-10-17 18:05:22 1041
原创 触发器里面before和after的区别
关键字before和after用于标识触发时间,顾名思义,before代表触发器里面的命令在DML修改数据之前执行,after代表触发器里面的命令在DML修改数据之后执行。 读者可以结合应用场景选择使用before或者after。 下面编者分别给出before和after的举例。 before举例: 在emp表上面创建触发器,当
2017-10-09 22:29:59 37640
原创 分组函数的嵌套太深
分组函数最多嵌套两层,当三层或者三层以上时,就会出现分组函数的嵌套太深的提示。我通过下面一条查询一句进行分析。select count(avg(sum(sal)))from emp group by deptno; 这条查询语句,是根据部门号进行分组,第一层分组函数是求每个部门的工资支出和,当第一层分组函数再嵌套一层分组函数求所有部门工资支出的平均值时,结果就只剩一行了
2017-09-21 22:10:08 6628
原创 null的比较
Null的含义是不确定的意思,在oracle数据库中 ‘’代表的也是null。由于null的特殊性,null有着自己的判断方法。下面两条查询语句相信很多读者都碰到过,甚至无意写过。当null跟在等于后面时,是查询不到记录的。select * from emp where job = null or job =’’;select * from emp where job ‘’;正确的写
2017-09-21 21:51:15 926
原创 单行子查询返回多个行
大家是不是也经常碰到单行子查询返回多个行的错误提示。我已经碰到数次这种错误了,这种错误是基于数据存在的,开发人员也许在最初写这个查询语句的时候没有合适的数据,所以没有发现错误,当满足条件的数据出现后才会给出这种错误提示,特别是非常复杂的查询语句,排查原因变得非常困难。 我列举两条简单的查询语句供读者学习。1.select * from emp where job =(sel
2017-09-21 21:47:02 50857 8
原创 到底应该使用count(*) 还是count(1)
关于count方法一直存在争议,count(*)、count(列名)、count(常量),到底应该使用哪个?我认为应该是count(*),count(*)是SQL92定义的标准统计数的方法。我曾经有幸阅读过阿里巴巴的开发规范,里面提到强制使用count(*)。 我通过以下四个查询命令来说明三个方法的区别: 1.select count(*) from emp;
2017-09-21 21:05:31 2287
原创 pb之autocommit
autocommit顾名思义自动提交的意思,默认情况下autocommit是false,需要手动commit或者rollback来结束当前事务。如果将autocommit设置为true,每执行完一条sql语句(update,insert)pb都会自动commit或者rollback事务。对信息系统来说,业务逻辑往往比较负责,一般都是很多sql语句组成一个事务,所以说自动commit会出现数据的逻辑
2017-07-08 11:42:31 1649 1
原创 oracle存储过程自治事务
pb调用存储过程的时候,使用了事务,为了存储过程的逻辑功能完整,往往在存储过程中也会使用事务。如何保证存储过程内外的事务合理使用显得尤为重要。pb调用存储过程的事务,我们称其为主事务。他与存储过程内的事务关系,无非就两种情况。两个事务是同一个事务或者两个事务是独立的两个事务。存储过程中的事务要不要作为独立的一个事务要根据情况而定。oracle提供了参数PRAGMA AUTONOMOUS_TRA
2017-07-07 21:31:50 3997
原创 十年磨剑服务健康事业
人物名片: 张振磊,1984 年10月出生,2008年毕业于江南大学,毕业后一直从事医疗软件开发、技术支持工作,他一心钻研技术难题,将所学知识应用于实践,努力给医务人员提供一个更好的软件系统。现任创业软件股份有限公司杭州区技术总监,高级职称,系统架构师,软件设计师,oracle认证专家,先后获得公司优秀员工,优秀党员称号。2012年6月,公司接到任务保障时任卫生部陈竺部长与央行周小川行长就居
2017-07-05 22:47:58 727
原创 pb之CommitOnDisconnect
今天看到一段代码对transaction object的DBParm赋值CommitOnDisconnect='No',本身这段代码没问题,pb transaction object 执行disconnect 命令断开与数据库连接时,如果不进行上面的赋值,pb会默认提交掉当前未提交的transaction。 但是看了这段代码的注释,立马傻眼了,注释是这样写的:
2017-07-05 22:35:04 1712
原创 pb全局变量在哪定义
今天有同事问我,说全局变量怎么用,我很纳闷,怎么会问全局变量怎么用呢?他给我演示说,定义了一个全局变量,在全局函数里面对他赋值的时候,提示全局变量没定义。我过去一看,还真是。 pb是个很方便的编程工具,我们定义变量,一般都是在当前对象的declare variables tab页直接定义变量,这里可以很方便的定义全局变量,实例变量,共享变量,全局外部函数,本地外部函数。但是全局
2017-06-21 20:25:08 5218 3
原创 HashMap既然继承了AbstractMap为什么还要实现Map
细心的人可能对HashMap类的定义有疑问,JDK源码中是这样定义的:public class HashMap extends AbstractMap implements Map, Cloneable, SerializableAbstractMap已经实现了Map接口,HashMap继承了AbstractMap,为什么还要实现Map接口呢?网络上有些细心的人对这样的写法有疑问,解答
2017-06-20 22:42:27 3578 5
原创 JDK之Map
在JDK中Map是一个接口类,Map用于存放键值对,Map里面不允许有重复的键,一个键至多对应一个值。Map中包含一个内部接口类Entry,Map的键值是保存在Entry中的。Map包含的方法如下://返回键值对的个数 int size();//判断Map对象是否为空boolean isEmpty();//判断Map中是否包含指定Keyboolean conta
2017-06-20 20:09:15 612
原创 JDK之SET
Set接口继承自Collection接口,Set接口跟Collection接口拥有一样的方法定义。但是,Set中不允许出现重复的元素。//返回集合中元素的个数int size();//判断集合是否为空boolean isEmpty();//判断集合中是否包含指定对象boolean contains(Object o);//返回集合的迭代器Iter
2017-06-19 21:51:30 465
原创 JDK之Collection
Collection接口继承自Iterable接口,它是集合树的最顶层节点,它总共定义了15个方法://返回集合中元素的个数int size();//判断集合是否为空boolean isEmpty();//判断集合中是否包含指定对象boolean contains(Object o);//返回集合的迭代器Iterator iterator();/
2017-06-19 21:35:06 605
原创 for循环正确遍历数组
也许有人觉得for循环遍历数组很简单啊,但是不明白for循环的原理,很容易造成严重的后果。最近有个项目技术人员离职了,客户有个需求需要修改,我就去现场帮忙改了一下,更新后第四天,客户打来电话说,系统出现漏费情况了,我开始觉得是不是客户搞错了,因为我只是修改了一个很简单的功能啊,不至于影响到费用啊,但是远程连到客户那边发现确实是漏费了,我赶紧跑到了现场。 由于前期技术人员没按照规范
2017-06-18 14:26:13 47688 2
原创 编程不是功能实现了就可以了
最近在项目中发现一个事件,功能很简单,也达到了预期的功能效果,但是编程不仅仅是功能实现了就可以了,更应该是如何完美的实现功能。下面我将这个事件的代码贴出来,进行一下分析。代码不是很长,总共才19行,该事件是确定按钮对象上面的一个事件定义。每点击一次确定就会触发一次该事件。1 string ls_error,ls_zyhm2 sql_lis = create T
2017-06-16 21:21:55 630
原创 JDK之Iterator
在jdk的源码中接口Iterator(迭代器),包含三个方法定义,代码如下: package java.util; public interface Iterator { boolean hasNext(); E next();
2017-06-14 22:33:55 565
原创 JDK之Iterable
在jdk源码中,Iterable(可迭代的)接口非常精简,只包含一个函数定义iterator(),代码如下: package java.lang; import java.util.Iterator; public interface Iterable { Iterator i
2017-06-14 22:07:37 407
原创 频繁更新基础数据表造成的数据库死锁
最近,有个比较大的项目出现数据库死锁。经过分析数据库trace文件,发现死锁的是基础数据表疾病诊断。根据对应的sql语句找到了问题所在,门诊医生录入诊断时,程序里面同时去更新疾病诊断基础表,造成诊断基础表被锁。 经过分析,诊断基础表共27886条记录,分布在312个数据块中,每个数据块包含75到114条不等的记录。由于数据库服务器安装的oracle rac, 共两个节点,or
2017-05-18 22:18:51 5026
原创 oracle培训第五天
1.oracle体系架构实例和数据库oracle server :database + instancedatabase :data file ,control file ,redolog fileinstance:an instance access a databaseoracle memory:sga + pgainstan
2017-05-06 14:40:44 274
原创 oracle培训第四天
1.DML操作及名称空间模式与对象名称空间的关系模式(schema)是一种逻辑结构,它对应于用户,每建一个用户就有一套模式与之对应。我们通常说对象的唯一标识符是前缀为模式名加上对象名称,如scott.emp同一模式下的对象是不可以重名的。比如在scott模式里,表emp是唯一的,不能还有另外对象叫emp。但不同的模式下可以重名。create table em
2017-05-06 14:39:21 309
原创 oracle培训第三天
1.约束约束是数据库能够实现业务规则以及保证数据遵循ER模型的一种手段。约束的语法列级约束:只能引用一个列,表中可以有多个列级约束表级约束:引用一个或多个列,通常用来定义主键追加约束:建表后,再通过alter table追加约束select * from user_constraints;select * from user_cons_colum
2017-05-06 14:38:36 319
原创 oracle培训第二天
1.空值空值的数据行将对算数表达式返回空值select ename,sal,comm,sal+comm from empselect sum(sal),sum(sal+comm) from emp比较表达式有空值时返回假select ename,sal,comm from emp where sal >=comm非空值与空值做||时,nu
2017-05-06 14:37:50 266
原创 oracle培训第一天
0.常用命令tnsping orcl(Transparent Network Substrate透明网络底层)查看监听状态lsnrctl status监听停止 lsnrctl stop监听启动 lsnrctl startsqlplus /nologconn /as sysdba数据库关闭 shutdown immediate,shutdown
2017-05-06 14:36:29 329
原创 oracle五天培训之培训大纲
主讲:张振磊(oracle认证专家,系统架构师,软件设计师)第一天(2016.10.10 19:30-21:30)1.sql命令类别(DML数据操纵语言,DDL数据定义语言,事务控制语言TCL,数据控制语言DCL)2.常用函数3.数据类型4.where子句中常用的运算符5.分组函数6.数据限定与排序第二天(2016.10.11
2017-05-06 14:34:06 1066
原创 纪念OCP到手
今年年初的时候,记得自己说过要考ocp,经过努力,终于在2016年11月11号,32岁生日这天,拿到了ocp。没有参加培训,完全凭借自学通过了考试。三门科目的成绩也不算很糟。047得了100%,052得了93%,053得了92%。
2016-12-29 20:52:35 685
原创 给310小伙伴们的一点建议
亲爱的小伙伴们,当你们读到这篇文章的时候,我给你们上的oracle课程也就正式结束了。虽然只有短短的7天半课程,但是很多同学给我留下了深刻的印象。很想把自己的十年所学一股脑的全教给你们,但是现实毕竟是现实。由于各种约束,能教给你们的也就这么多了,师傅引进门,修行靠自己,后面就靠你们自己去悟了。
2016-08-18 23:58:54 706 1
原创 flashback table to before drop外键约束无法恢复的原因分析
flashback table to before drop外键约束无法恢复的原因分析
2016-07-20 18:57:58 1207
原创 oracle编译存储过程提示表或视图不存在的问题分析
今天有同事跟我反映有个存储过程编译报错,提示表或视图不存在。存储过程中调用的那个表t是另一个用户b的表。但是当前用户a已经拥有dba角色了,为什么访问不到用户b的表t呢?另一同事说,只要给用户a分配操作用户b的表t的权限就可以了。他的解释是用户即便拥有dba的角色也不一定能操作别的用户的对象。很明显这个解释是错误的。dba角色是数据库管理员的角色,肯定能操作数据库中所有用户的对象。我开始怀疑问题是不是出在存储过程上了。
2016-03-25 22:39:32 21610
原创 oracle和sqlserver中空值的区别
空值在sqlserver里面并不是NULL,可以填入非空的列中,但是在oracle中里面空值会自动转换为NULL,所以不能插入非空的列中
2016-03-10 22:31:36 724
原创 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist的原因分析
今天突然接到同事电话,说oracle数据库连接不上了,我远程过去用pl/sql developer登录,提示ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist.意思是oracle无法使用,共享内存领域不存在。
2016-03-07 22:35:45 14456 1
原创 sqlplus连接到远程数据库
我一直以为sqlplus是服务器端的软件,今天我才知道sqlplus是客户端软件,用sqlplus也能连接到远程数据库。
2016-03-06 18:54:41 32503 5
原创 PL/SQL Developer在64位操作系统上通过instantclient连接到oracle数据库
Instant Client下载地址http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html。
2016-03-04 20:25:18 797 2
原创 pb程序在64位操作系统上使用Instant Client 连接oracle数据库
有时候客户端只想实现能够连接上服务器端oracle数据库,完全没必要安装庞大的客户端。下面我将讲解一下如何通过即时客户端(Instant Client)连接上oracle数据库。Instant Client下载地址http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html。注意:因
2016-03-04 19:42:02 5567 2
原创 ORACLE11g“空表”无法导出的深入分析
我觉得将空表无法导出描述为没有使用过的表无法导出应该更确切一些。oralce11g为了节省存储空间,新建表的时候默认是不分配segment的。既然segment都没有,就不用谈exp了。但是oracle还是预留了系统参数DEFERRED_SEGMENT_CREATION(延迟创建segment)。这个参数,默认是true。我们可以将他改成false。这样的话,再创建表的时候就会立即分配segmen
2016-03-01 20:38:19 697 2
原创 ORACLE的dblink突然连不上的问题分析
昨天中午10点,突然接到总经理电话,说有客户反应LIS和PACS无法收费了,必须马上给处理掉。但是客户端PC却能连接到oracle服务器,没有使用dblink的业务运行都正常。LIS和PACS计费由于要连接不同的数据库,使用了dblink。经过初步排查发现dblink无法连接了,重新创建dblink也不好用。突然想到,会不会是服务器的所有端口号被占满了呢?因为以前有家客户的服务器就是由于所有端口号
2016-02-28 12:19:31 11327 2
原创 ORACLE中SID和SERVICE_NAME的区别
在讲解SID和SERVICE_NAME之前,先说一下实例。实例是操作系统中访问数据库所需要的一系列的进程和内存的集合。没有任何数据文件,实例也可以启动。但是要想访问数据库,必须把数据库文件加载进实例中。实例和数据库的区别可以简单概括为:实例是临时的,它只在相关的进程和内存集合存在时存在,而数据库是永久的,只要文件存在它就存在。一个实例只能对应一个数据库,但是一个数据库可以由多个实例对应(如RAC)
2016-02-26 21:26:37 52568 12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人