摘要: Compile the Java code dynamically using JDK6 阅读全文
posted @ 2011-10-12 21:03 FangwenYu 阅读(8669) 评论(1) 推荐(0) 编辑
摘要: The definition, cause, and the solution to the wait event -- buffer busy waits 阅读全文
posted @ 2011-10-12 19:41 FangwenYu 阅读(294) 评论(0) 推荐(0) 编辑
摘要: The reason causes the error ORA-12519 and the resolution 阅读全文
posted @ 2011-10-12 19:34 FangwenYu 阅读(1939) 评论(0) 推荐(0) 编辑
摘要: All about the sql parse (hard/soft) in PL/SQL cursors (implict cursor, explict cursor, ref cursor) 阅读全文
posted @ 2011-09-21 11:31 FangwenYu 阅读(223) 评论(0) 推荐(0) 编辑
摘要: A simple bat script, including for loop usage, changing file extension, etc 阅读全文
posted @ 2011-09-03 17:45 FangwenYu 阅读(202) 评论(0) 推荐(0) 编辑
摘要: Use PLSQL Conditional Compilation in Database Script maintenance 阅读全文
posted @ 2011-09-02 15:27 FangwenYu 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 有时候通过sys_context('userenv', 'host') 来获取当前session的client host的名字,结果却得到一个空值,很是奇怪!每次都是重启下电脑就OK了,我怀疑是windows操作系统的问题,但是又没法得到很有利的证明,因为不知道这个sys_context('usrenv', 'host') 是怎么实现的,内部代码是啥自然不清楚 :(不管怎样,猜测sys_context('userenv', 'host') 应该跟v$session中的MACHINE应该是一样的。那么 阅读全文
posted @ 2011-08-09 18:07 FangwenYu 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 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 阅读全文
posted @ 2011-08-09 15:53 FangwenYu 阅读(1117) 评论(0) 推荐(0) 编辑
摘要: 关于在SQL语句中是用Bind Variables的重要性就不用多说了,最近在看代码的时候发现有一条比较耗时的SQL语句居然是在Java代码中动态拼接而成的。这条SQL语句之前也进行过一些简单的重写优化工作,在with语句中特别用到hint 了/*+materialize*/。之前认为这个hint在WITH语句中没有必要使用,Oracle应该会自动创建一个临时表用于with语句结果的存储,结果居然发现加不加这个hint差别还是蛮大的,最后就加上了这个hint.OK,回到正题上来。这个SQL需要接收的参数是一个动态的逗号分隔的字符串,放在in list中用的。很显然,如果用PL/SQL来写这个语 阅读全文
posted @ 2011-08-05 18:29 FangwenYu 阅读(299) 评论(0) 推荐(0) 编辑
摘要: About AnnotationJava 5引入了Annotation, 这极大减轻了开发的负担,不用写很多的代码,只需要在代码中加入一些"tag"就可以了,这个很符合声明式编程(declarative programming)的思想。当然有个问题还是要问的,虽然作为使用annotation的开发者来说,不用考虑Annotation最后究竟会被怎样执行,只要在需要使用Annotation的地方tag一下就可以,但是很显然这个只是把问题处理地点转移了而已,终归是需要有人来处理的,不然,这个Annotation就没有任何意义了。可以想见,很多JDK提供的annotation, 阅读全文
posted @ 2011-08-01 23:06 FangwenYu 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 在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 阅读全文
posted @ 2011-08-01 15:46 FangwenYu 阅读(644) 评论(0) 推荐(0) 编辑
摘要: 在通过运行脚本来安装产品数据库的时候,发现用新创建的用户在连接数据库的时候hang住了,卡了半天没有任何变化。于是手动用sqlplus来尝试下连接下,结果一样是登陆不了,session被block住了。换成sys用户登录,结果很顺利连接上数据库。那么问题出在什么地方呢?首先去查看了下alert文件,没有发现什么异常的信息。 好吧,查询下视图v$session看看有啥等待事件没有,结果发现了有几个session出于等待状态,等待事件显示为"resmgr:become active", 从文档上了解到这个等待时间的含义,如下.... resmgr: become activeT 阅读全文
posted @ 2011-08-01 09:33 FangwenYu 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 在open数据库的时候居然遇到了600的错....SQL> startup mountORACLE instance started.Total System Global Area 430075904 bytesFixed Size 2176448 bytesVariable Size 343935552 bytesDatabase Buffers 75497472 bytesRedo Buffers 8466432 bytesDatabase mounted.SQL> alter database open;alter database open*ERROR at line 1 阅读全文
posted @ 2011-07-29 19:23 FangwenYu 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 碰到如下这么一个需求,有如下一段XML<employees> <emp id="1" name="fang" age="26"/> <emp id="2" name="frank" age="25"/></employees>现在想把这个XML文件中的内容显示成两行三列的数据...id name age-----------------1 fang 262 frank 25那么通过SQL怎么搞呢? 查了下文档,发现可以用XMLS 阅读全文
posted @ 2011-07-28 18:55 FangwenYu 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 遇到一个很奇怪的问题,数据库的service, listener都启动了,但是从lsnrctl services中老是显示不了数据库的service name, 因此客户端通过service name来访问数据库老是报listener 识别不了指定的服务名的错误信息。无奈之下只能修改listener.ora文件来进行静态注册下service name...SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = orcl) (ORACLE_HOME = C:\oracle\product\10.2.0\db_1) (GLOBAL_NAME= 阅读全文
posted @ 2011-07-28 17:39 FangwenYu 阅读(194) 评论(0) 推荐(0) 编辑
摘要: Spring框架中很重要的一部分是关于IoC的,Spring提供了ApplicaitonContext这样一个接口 (bean factory),通过它来创建bean。除了这个接口,Spring提供了一些具体的context实现类,包括ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicationContext 和XmlPortletApplicationContext。通过创建一个简单的例子来看一下Spring IoC是怎么使用的。首先在Eclipse里面创建一个Java Project, 目录 阅读全文
posted @ 2011-07-28 16:24 FangwenYu 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 问题由来客户发过来一个request, 说调用某个接口的时候出现了一堆的错误日志,但是从给出的信息很难知道什么地方出错了。从发过来的错误日志中可以看出一堆的‘ ORA-20002’ 的错误信息,但是没有具体的error message! 很显然, 这个是程序中自定义的错误,所以这个日志信息几乎是没有任何价值可言。不过幸运的是,从日志中可以判断出来出错的位置在于通过FORALL方式把一个集合(associate array)中的数据批量插入一张表,代码如下...begin forall i in g_insert_auth_table.first .. g_insert_auth_table.l 阅读全文
posted @ 2011-07-08 11:26 FangwenYu 阅读(1137) 评论(0) 推荐(0) 编辑
摘要: 套用"新宇体"赞一下Boobooke(http://www.boobooke.com/bbs/index.php), 这个网站提供了很多免费的学习视频讲座,对于像我这样的菜鸟真的是很有帮助,最近在扫盲Linux,所以在看寒冰老师的系列视频,可能刚开始看的时候会觉得这个老师表达有点不清,不过慢慢就发现其实还蛮不错的,很受用,赞一个。关于寒冰的Linux系列培训课程,可以看如下这个地址http://www.boobooke.com/bbs/thread-4947-1-1.html 阅读全文
posted @ 2011-06-02 23:32 FangwenYu 阅读(1377) 评论(0) 推荐(0) 编辑
摘要: 工作之余整理了一些文档,会陆续列出来...1.SQL OptimizationTips这篇文档其实算是对《海量数据库解决方案》的一个读书笔记吧。这本书中心思想还是阐述SQL优化方面的东西,因此把这篇文档叫"SQL Optimization Tips"。因为看的是中文版的书,而笔记却是用我的蹩脚英文"... 阅读全文
posted @ 2011-06-02 23:26 FangwenYu 阅读(594) 评论(0) 推荐(0) 编辑
摘要: pub上有个帖子,讲connect by, 参见这里觉得有点意思,以前也是没有深入考虑研究过这个东西,现在测试下看看....createtable test_connect(flag varchar2(2));insertinto test_connect values('A');insertint... 阅读全文
posted @ 2011-06-01 18:26 FangwenYu 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 在ITpub上看到这么一个问题....写一个求和的程序,谢谢we have a list of integer {1, 2, 3, 4, 5, 6, 7, 8, 9 }. Set each item as R, where i = 1..9.write code to return each pos... 阅读全文
posted @ 2011-05-31 10:24 FangwenYu 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 假设我有如下两张一模一样的表...create table tab1 (id number);create table tab2 (id number);我现在想做的事情是这样的,如果在tab1里面增加记录的同时把这些记录也增加到tab2中,反之tab2中增加的记录也要同步到tab1中去。很自然地想到可以通过在两张表上都创建一个trigger, 让Trigger来进行数据的同步工作。如下所示... create or replace trigger tri_tab1 before insert on tab1 for each row begin insert into tab2(id) va 阅读全文
posted @ 2011-04-28 10:55 FangwenYu 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 在测试通过extensible optimizer方法来解决table function的cardinality不准确的问题的时候 (关于什么是extensible optimizer以及如何设置可以参见这里) 居然遇到了ORA-03113的错误!事情是这样的....首先创建了一个table function...CREATE OR REPLACE FUNCTION get_tab (p_cardinality IN INTEGER DEFAULT 1) RETURN t_tf_tab PIPELINED ASBEGIN FOR i IN 1 .. 100 LOOP PIPE ROW (t_t 阅读全文
posted @ 2011-04-18 20:48 FangwenYu 阅读(653) 评论(0) 推荐(0) 编辑
摘要: I found someone used the following procedure call to disable the automatic statistics gathering job to gather the user (not sys/system)tables by accident.exec DBMS_STATS.SET_PARAM('AUTOSTATS_TARGET','ORACLE');For the reason that we may need to disable this job, please refer to this a 阅读全文
posted @ 2011-04-15 10:30 FangwenYu 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 问题陈述在调用一个存储过程的时候,发现有个UPDATE语句执行的很慢,这个UPDATE语句是很常见的用一个表中的数据去更新另外一个表中的数据,通常的做法是通过一个关联子查询从"sourcetable" 读取相应的数据来更新"target table"中对应的数据行。同时,为了保证"targettable" 中不相关的数据行不会被更新,因此在where语句部分还是要和"source table"做个“join"。很显然,source table会被读取多次,而且由于关联查询的存在,表的连接方式会倾向于Nes 阅读全文
posted @ 2011-04-14 17:49 FangwenYu 阅读(1960) 评论(0) 推荐(0) 编辑
摘要: 因为参数sessions / processes 关系到能连接到instance的并发session数,因此想尝试增大这些参数的值,但是杯具之旅就此开始了...尝试修改下参数sessionsSQL> alter system set sessions=150 scope=spfile;alter system set sessions=150 scope=spfile*ERROR at line 1:ORA-32001: write to SPFILE requested but no SPFILE specified at startup居然发现当前的instance不是通过spfil 阅读全文
posted @ 2011-04-07 15:30 FangwenYu 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 偶然看到有人这么写SQL.... (其中f_test_tab_func是一个表函数,返回一个集合)-- Syntax Correctselect * from THE(select f_test_tab_func(20) from dual);好生奇怪,这里面的THE是个什么东东呢?看起来想table function但是又不是,因为如果是table function的话,括号里面是不能够用select from dual的方式来返回一个集合的。也就是说如下写法是有语法错误的...-- Syntax Errorselect * from TABLE(select f_test_tab_func 阅读全文
posted @ 2011-04-06 21:09 FangwenYu 阅读(454) 评论(0) 推荐(0) 编辑
摘要: 今天同事在给一个Singpore的虚拟机装产品的数据库的时候,发现安装运行到插入初始化数据的时候“卡”住了,居然几个小时过去了,还是没有什么进展。这个很是奇怪,因为我用这个安装脚本在我的一个虚拟机装过好几次,每次大概一个小时就结束了,没有出现过这种情况。我刚开始以为是我之前碰到的数据库因为没有空间存储归档日志导致online日志没有办法switch导致数据库hang的问题,但是结果发现alert文件没有任何出错信息,而且那个数据库也是非归档模式的。后来发现一个lgwr trace文件中好多的关于log write time的warning信息 (e.g. Warning: log write 阅读全文
posted @ 2011-03-16 20:12 FangwenYu 阅读(928) 评论(0) 推荐(0) 编辑
摘要: 本文尝试通过一个简单的测试来发现transaction和undo之间的关系。Setup (创建测试环境)---------------------------------------------创建一张表, 插入一条记录SQL> create tablespace tx_demo datafile 'F:\Ora_Data_File\tx_demo01.dbf' size 10m 2 autoextend on maxsize 20M 3 extent management local uniform size 64K;Tablespace created.SQL> 阅读全文
posted @ 2011-03-15 21:26 FangwenYu 阅读(1047) 评论(0) 推荐(0) 编辑
摘要: 今天在导数据的时候,发现session突然hang住了,一直没反应。从hang住的地方的日志看了半天,也没发现可疑问题。因为按道理来说,导这点数据不至于这么慢啊,以前又不是没导过。突然想到是不是flash recovery area爆满了,查了下alert文件,果不其然,发现了如下信息...================================================================Thu Mar 10 15:03:42 2011Errors in file c:\oracle\product\10.2.0\admin\lo\bdump\lo_arc1_356 阅读全文
posted @ 2011-03-10 16:11 FangwenYu 阅读(813) 评论(0) 推荐(0) 编辑
摘要: --------------------------------------------------------------------------------------------------------------------准备工作...1. 创建队列in source database: lo.oracle.comSQL> show userUSER is "STRMADMIN"SQL> begin 2 dbms_streams_adm.set_up_queue 3 ( queue_table => 'capture_queue_tabl 阅读全文
posted @ 2011-03-07 23:22 FangwenYu 阅读(904) 评论(0) 推荐(0) 编辑
摘要: --------------------------------------------------------------------------------------------------------------------配置工作...1. 首先在源数据库和目标数据上都将相关的参数设置好,(参见http://www.cnblogs.com/fangwenyu/archive/2011/03/07/1970260.html) Source Database:lo.oracle.comSQL> select global_name from global_name;GLOBAL_N 阅读全文
posted @ 2011-03-07 23:02 FangwenYu 阅读(994) 评论(0) 推荐(0) 编辑
摘要: Streams Repliation 简介Oracle Streams Replication提供了一种数据(广义上的,不仅仅是表中的数据)共享(同步)的机制,可以用来进行数据库级别(global), schema级别,table级别的数据复制。Streams主要借助于AQ, Scheduler(job), LogMiner 等技术来实现数据的传递和复制。Streams Replication主要通过所谓的captuer, propagation, apply三种background process来完成数据复制的工作。(1) Capture Process 运行在源数据库上,通过挖掘redo 阅读全文
posted @ 2011-03-07 22:46 FangwenYu 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 在尝试配置oracle streams replication的时候,看到文档上说源数据和目标数据库(source database & destination database)都要把参数GLOBAL_NAMES设置成TRUE (默认值为FALSE), 如果这个参数设置为TRUE, 那么Oracle就会要求创建的database link的名字的跟目标数据库的global name保持一致,否则会有问题。下面来测试看看...假设source database为orcl, destination database 为orcl2. 这两个数据库是位于同一台机器上的,tnsnames.or 阅读全文
posted @ 2011-02-27 22:42 FangwenYu 阅读(1897) 评论(0) 推荐(0) 编辑
摘要: 偶然看到有人提到用copy命令来进行数据的拷贝,于是乎试试是个啥东东...COPY是SQL*PLUS提供的一个命令,用来在不同数据库间(oracle之间, oracle和其他数据库)进行表数据的拷贝。不过从9i的文档中看到,说这个command以后有可能会被deprecated, 看了这个命令的简单介绍,我觉得这个命令是个“鸡肋”。在Oracle之间进行表数据的拷贝完全可以不用这个命令,对于oracle和其他数据库进行数据的拷贝,我有点疑问,这个命令是sql*plus提供的,我不太清楚怎么通过sql*plus连接oracle以外的数据库。文档中给出的例子也都是oracle数据库间的数据拷贝。除 阅读全文
posted @ 2011-02-24 18:37 FangwenYu 阅读(472) 评论(0) 推荐(0) 编辑
摘要: Row Flag Structure在看一个数据块的dump文件的时候,经常会发现类似如下的信息...tl: 12 fb: --H-FL-- lb: 0x1 cc: 2其中fb, lb, cc就是每一行数据头的信息,分别表示Row Flag, Lock Byte (ITL entry), Column Count. (tl, 应该表示每一行数据实际占用的空间大小,包括row header, 每一个column实际占用的字节数,和用来存储每个column长度的overhead。 tl的信息并没有实际存储。)那么ROW Flag中的8个bit分别表示什么意思呢 (例如这里的H, F, L)?-- 阅读全文
posted @ 2011-02-19 21:05 FangwenYu 阅读(288) 评论(0) 推荐(0) 编辑
摘要: BBED(Block Browser and EDitor) 是Oracle提供的一个功能非常强大的工具,用来直接对oracle block进行操作。因此这个工具使用起来很危险,而且Oracle不对用这个工具带来的任何后果负责任,这个工具仅供内部使用。虽然如此,这个工具为我们研究block的存储结构带来了极大的便利,因此了解下也是很有好处的 :-) 本文主要介绍如果安装BBED, 因为在linux下面,bbed默认没有“安装”,不能直接使用,需要先进行一些操作...[代码]进行这个link操作之后,在目录$ORACLE_HOME/rdbms/lib目录下生成了bbed这 阅读全文
posted @ 2011-02-19 00:24 FangwenYu 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 之前在Data Block Structure (Try to Understand)中通过dump文件来尝试去分析一个block的结构,结果费了半天劲,也没有得到一个很清晰的概念。发现BBED的map命令很好很强大,可以用来得到一个block的结构组织情况,通过设置dba来得到一个block的结构,如下所示...[代码]这里面的一系列的struct,可以参见如下介绍...[代码] 阅读全文
posted @ 2011-02-19 00:24 FangwenYu 阅读(349) 评论(0) 推荐(0) 编辑
摘要: BBED功能相当强大,因为可以用来修改block上的内容,因此很显然可以通过BBED来修改表上的数据,直接绕过通过SQL语句对表的操作。本文尝试通过BBED来修改表中的一条记录。建立实验环境首先建立实验环境,建立一张表test, 插入一条记录 (1, 'Frank'), 如下...[代码]通过上面的操作,确定了我们刚才在表test中插入的一条记录位于4号数据文件上第404个block上面。设置BBED现在把BBED 的dba 设置成 4, 404[代码]可以通过BBED来查看我们刚才在表TEST中插入的记录,如下,(kbdr中这个数组大小为1,表示只有一条记录)[代码]注意这里面用到的e(x) 阅读全文
posted @ 2011-02-19 00:24 FangwenYu 阅读(598) 评论(0) 推荐(0) 编辑
摘要: 最近做了个PPT,关于PLSQL的编码风格规范。以前没用过SlideShare, 现在试试咋样,就顺便贴出来~PL/SQL Coding Conventions 阅读全文
posted @ 2011-01-28 10:12 FangwenYu 阅读(218) 评论(0) 推荐(0) 编辑