08 2011 档案
摘要:有时候通过sys_context('userenv', 'host') 来获取当前session的client host的名字,结果却得到一个空值,很是奇怪!每次都是重启下电脑就OK了,我怀疑是windows操作系统的问题,但是又没法得到很有利的证明,因为不知道这个sys_context('usrenv', 'host') 是怎么实现的,内部代码是啥自然不清楚 :(不管怎样,猜测sys_context('userenv', 'host') 应该跟v$session中的MACHINE应该是一样的。那么
阅读全文
摘要:Oracle提供了好些方法来获取连接数据库的客户端机器名和数据库所在的机器名,最常见的是从视图v$instance和v$session中获得,如下....V$INSTANCEv$instance中的host_name显示的是数据库服务器所在的机器名...SQL> select host_name from v$instance;HOST_NAME----------------------------------------------------------------SZV-DEV-LO-D02SQL> V$SESSIONv$session中的MACHINE (TERMINAL
阅读全文
摘要:关于在SQL语句中是用Bind Variables的重要性就不用多说了,最近在看代码的时候发现有一条比较耗时的SQL语句居然是在Java代码中动态拼接而成的。这条SQL语句之前也进行过一些简单的重写优化工作,在with语句中特别用到hint 了/*+materialize*/。之前认为这个hint在WITH语句中没有必要使用,Oracle应该会自动创建一个临时表用于with语句结果的存储,结果居然发现加不加这个hint差别还是蛮大的,最后就加上了这个hint.OK,回到正题上来。这个SQL需要接收的参数是一个动态的逗号分隔的字符串,放在in list中用的。很显然,如果用PL/SQL来写这个语
阅读全文
摘要:About AnnotationJava 5引入了Annotation, 这极大减轻了开发的负担,不用写很多的代码,只需要在代码中加入一些"tag"就可以了,这个很符合声明式编程(declarative programming)的思想。当然有个问题还是要问的,虽然作为使用annotation的开发者来说,不用考虑Annotation最后究竟会被怎样执行,只要在需要使用Annotation的地方tag一下就可以,但是很显然这个只是把问题处理地点转移了而已,终归是需要有人来处理的,不然,这个Annotation就没有任何意义了。可以想见,很多JDK提供的annotation,
阅读全文
摘要:在Hibernate中, 可以用类似Oracle中的sequence来生成对象的标示。如下例所示,通过是用SequenceGenerator这个Annotation, 将Oracle的sequence -- SEQ_LIMITS_CHANGES ”绑定“ (通过GeneratedValue这个annotation)到了Class LimitsChangeDO 中ID这个field上。public class LimitsChangeDO { @GeneratedValue(generator = "limits_review_limit_sequence") @Sequen
阅读全文
摘要:在通过运行脚本来安装产品数据库的时候,发现用新创建的用户在连接数据库的时候hang住了,卡了半天没有任何变化。于是手动用sqlplus来尝试下连接下,结果一样是登陆不了,session被block住了。换成sys用户登录,结果很顺利连接上数据库。那么问题出在什么地方呢?首先去查看了下alert文件,没有发现什么异常的信息。 好吧,查询下视图v$session看看有啥等待事件没有,结果发现了有几个session出于等待状态,等待事件显示为"resmgr:become active", 从文档上了解到这个等待时间的含义,如下.... resmgr: become activeT
阅读全文