??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品成人网址天堂,亚洲成av人影院,久久久久亚洲AV成人无码http://m.tkk7.com/leekiang/category/21129.htmlMDA/MDD/TDD/DDD/DDDDDDDzh-cnThu, 29 Jul 2010 13:46:35 GMTThu, 29 Jul 2010 13:46:35 GMT60oracle模糊查询http://m.tkk7.com/leekiang/archive/2010/04/28/319580.htmlleekiangleekiangWed, 28 Apr 2010 03:02:00 GMThttp://m.tkk7.com/leekiang/archive/2010/04/28/319580.htmlhttp://m.tkk7.com/leekiang/comments/319580.htmlhttp://m.tkk7.com/leekiang/archive/2010/04/28/319580.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/319580.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/319580.html因ؓҎ","逗号分开Q要求的{案是:不存在?br />
用传l的like '%111,%',昄不合适,q样虽然111不存在但是依然能查到该条记录?br />所以应该用以下语句实现Q?br />select * from Table where ','+columA  like '%,111,%'

like '%AAA%'   q样的左xp查询不能用上烦?Oracle没法通过B-TREE扑ֈ相应的叶子节点,位图索引也是一?br />而like '...%'?Like '%...'是可以走索引的,后者需要reverse一?br />
使用where instr(column_name,'AAA')> 0没有什么效?br />

如果定like部分选择性很强,试试Q?br />select * from xxfl where rowid in (select rowid from xxfl where hphm like '%34443%' ) and jgsj between to_date('xxxx-xx-xx xx:xx:xx','yyyy-mm-dd hh24:mi:ss') and to_date('xxxx-xx-xx xx:xx:xx','yyyy-mm-dd hh24:mi:ss');

参?
http://www.javaeye.com/topic/653713
http://www.itpub.net/viewthread.php?tid=1218563
http://sandish.itpub.net/post/4899/464369

别h的笔?
sql中的like '%xx%'模糊查询无法走烦引,影响执行速度。经试itpub版主ifree的index_ffs+rowidҎ比较有效Q记录一下?br />q里是示例:
scott@ORCL> CREATE INDEX SCOTT.i_dept_name
  2   ON SCOTT.DEPT(DNAME)
  3  ;

Index created.

scott@ORCL> Analyze Table SCOTT.DEPT Compute Statistics ;

Table analyzed.

scott@ORCL> select * from scott.dept where
  2  rowid in (
  3  select /*+ index_ffs(a i_dept_dname) */
  4  rowid from scott.dept a where dname like '%A%')
  5  ;

q个Ҏ要求like查询出的记录不能太多Q在我的应用中,q一Ҏ使sql效率提高了近10倍?img src ="http://m.tkk7.com/leekiang/aggbug/319580.html" width = "1" height = "1" />

leekiang 2010-04-28 11:02 发表评论
]]>
oracle dbaW记http://m.tkk7.com/leekiang/archive/2010/04/17/318620.htmlleekiangleekiangSat, 17 Apr 2010 14:20:00 GMThttp://m.tkk7.com/leekiang/archive/2010/04/17/318620.htmlhttp://m.tkk7.com/leekiang/comments/318620.htmlhttp://m.tkk7.com/leekiang/archive/2010/04/17/318620.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/318620.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/318620.htmlOracle DBA 两日速成评

leekiang 2010-04-17 22:20 发表评论
]]>
oracle游标http://m.tkk7.com/leekiang/archive/2009/11/13/302271.htmlleekiangleekiangFri, 13 Nov 2009 10:16:00 GMThttp://m.tkk7.com/leekiang/archive/2009/11/13/302271.htmlhttp://m.tkk7.com/leekiang/comments/302271.htmlhttp://m.tkk7.com/leekiang/archive/2009/11/13/302271.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/302271.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/302271.html最q开发第一ơ遇到?maximum open cursors exceeded”这个错误。表C已l达C个进E打开的最大游标数
游标Q当q回一个含有多条记录的l果集时Q游标就像指向结果集中当前记录的指针Q通过游标我们可以处理l果集中的每一条记录?
对于出现ORA-01000 maximum open cursors exceeded错误q种情况Q单U的加大open_cursorsq不是好办法Q那只是L不治本。实际上Q代码中的隐患ƈ没有解除? 而且Q绝大部分情况下Qopen_cursors只需要设|一个比较小的|p够用了Q除非有非常特别的要求?

从网上查了一下这个错误的原因Q主要还是代码问题引L?

q样的错误很Ҏ出现在Java代码中的主要原因是:Java代码在执? conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当于在数据库中打开了一? cursor。尤其是Q如果你的createStatement和prepareStatement是在一个@环里面的话,׃非常Ҏ出现q个问题。因为游标一直在不停的打开Q而且没有关闭?

一般来_我们在写Java代码的时候,createStatement和prepareStatement都应该要攑֜循环外面Q而且使用了这 些Statment后,及时关闭。最好是在执行了一ơexecuteQuery、executeUpdate{之后,如果不需要用结果集 QResultSetQ的数据Q就马上Statment关闭?

我就是在循环里调用con.prepareStatement(sql)D的这个错误?
修改ҎQ?
在遍历完ResutSet?font color="#ff0000">关闭rs和stmt可以了?

转自http://ltc603.javaeye.com/blog/71540


一般来说是游标不够用了?br /> 只需在initSID.ora文g中加上一?br /> open_cursors = ****
但是Q很可能是由于你的程序或数据库的l构存在着一些潜伏的问题Q如jlandzpa所_没有关闭游标{?br />
我的E序有一阵一直在报这个错误,把OPEN_CURSOR加大C300甚至1000q在出错Q后来发现是表的STORAGE讄有问题?br />
你查一下自qE序?br />昨天说的有些错误Q应该是physical_attributes_clause语句?br />
我们pȝ的数据量比较大,q?00张表Q有些表一天要插入1000000条左右的数据?br />
表是使用ER/STDIO设计的,然后直接生成的脚本,׃没有讄physical_attributes_clause?br />
句中的徏表参敎ͼ因此使用了默认的参数。好像是INITIAL 10K NEXT 10K PCTFREE 20 PCTUSED 50

׃表的存储I间太小Q在很短的时间内׃装满Q因此ORACLE需要不停ؓ30多张表(数据量较大的Q申L间。于是在E序q行了一D|间后Q开始出现ORA-01000: maximum open cursors exceeded的错误?img src="http://www.itpub.net/images/smilies/35.gif" smilieid="212" alt="" border="0" /> 我将游标大小改到?00Q还是出现错误,改到1000以后开始出CORA-01001:invalid cursors。再怎么加大open_cursors的数量都无济于事?img src="http://www.itpub.net/images/smilies/12.gif" smilieid="210" alt="" border="0" />

使用select * from v$open_cursors查询Q发现有几百条的INSERT语句游标没有释放?img src="http://www.itpub.net/images/smilies/2.gif" smilieid="203" alt="" border="0" />

开始怀疑是E序调用的问题,仔细查程序没有发现问题。但是发现对某张表进行TRUNCATE操作后,Ҏ表进行插入的游标全部释放Q于是开始怀疑是表结构本w的问题?br />
重新讄了徏表参敎ͼ数据量最大的表的INITIAL和NEXT均设|ؓ50M?br />
至今未再出现同样的错误?br />
再次提问ORA-01000: maximum open cursors exceeded问题

q个问题yangtingkun讲的非常详细Q我茅塞顿开Q但我还有一些问题向怽高hh?br /> 我这里出的问题也是ORA-01000: maximum open cursors exceeded Q我游标数?00提高?00仍然不能解决q个问题。看了这帖子我非常高兴Q但有一些问题不明白?br /> 我用了select * from v$open_cursorq行查询后看不出来哪些游标未被释放。一共有q?000条记录,hash_value字段象特D点Qg几万到几百万都有Q请问怎样判定哪些游标未被释放Q有多少?br /> 另外h一下,怎样重新讄了徏表参敎ͼ能指点一下所需命o吗。数据库里表数量极大Q怎样扑ֈ数据量最大的表啊?br /> 我是菜鸟Q请不要见笑。不吝赐教?br />
首先通过v$open_cursor中的SQL_TEXT字段可以查出没有释放的SQL是大致是什么语句?br />
׃参数讄不当Q会有很多的INSERT语句无法释放?br />
SELECT * FROM V$OPEN_CURSOR WHERE SQL_TEXT LIKE 'INSERTQ?br />
找一扑֓些表的INSERT语句没有释放的游标比较多?br /> 从ALL_TABLES里查看该表的参数是否合适?br />
ALTER TABLE tablename STORAGE( NEXT N);

加入_֍区,我也到同样的问题。也是调整的存储l构Q另外调整了一些烦引和E序Q一直不知道是存储结构的问题Q调整的东西多,׃知道是什么原因了

原帖?becochow ?2009-3-25 18:56 发表
我也出现q样的问题,我现在数据库在运行,可能是存储过E中未关闭游标,

我如何手动关闭呢?查询v$open_cursor 有几千条

今天我也到了这个错?我这么关闭的:
查询v$open_cursor,看哪些是׃"存储q程中未关闭游标"引v的会?扑ֈSID,SERIAL#,然后KILL掉就可以?
以上来源于http://www.itpub.net/viewthread.php?tid=24806



我昨天犯的错误就是把创徏statement攑ֈ了@环之内,l果Dcursor猛增Q到达了数据库设|的最大数?/font>
虽然解决了问题,也清楚了游标是何时创建的Q但q有几个问题比较qL?br />1、通过查询QJDBC是将所有的查询l果一ơ性放到ResultSet中,q是一ơ只放一定数目的记录Q例如,查询l果?000条数据,JDBC是一ơ性将2000条数据放到结果集中,q是分批攄呢?

2、当通过ResultSet.next()Q移动结果集指针Ӟ此时是否q与数据库发生交互?


首先l果集resultset在你的javaE序处。其中有个fetchsize讄Q这个表C每ơ从数据库处取多条记录到resultset.
当通过ResultSet.next()Q移动结果集指针Ӟ此时是否q与数据库发生交互?

不发生交互,数据库执行完查询后,已经把查询结果交lResultSet了,以后的操作,和数据库无关?br />交互Q如?个查询有10000条记录,resultset中只有fetchsize条,当next时还会在一定时机去交互
不是查询结果一ơ性放到ResultSet? 而是分批攑օResultSet?一般情况下是每?0条记?
当通过ResultSet.next()Q移动结果集指针Ӟ此时q会与数据库发生交互.

Dmaximum open cursors exceededq个问题一般是代码本n的问?
比如执行一个查询没有关闭游标,或是在存储过E中打开了游标而没有关闭.
特别是出现异常情冉|没有关闭游标Q严重时会导致系l崩?
啊~!~`我刚也犯了这U错?!``看到q里的脓?妹又明白了:"?``原来conn.createStatement()? conn.prepareStatement()的时候实际上都是相当与在数据库中打开了一个cursor?!"明白了这点过?我就在@环里新徏一? prepareStatement对象,操作完一?成功q后马上关?q样,循环里每ơ一个insert都新new 一个prepareStatement 操作成功完成之后再马上关?嘎嘎.~q样,cursor׃会溢出拉.
http://m.tkk7.com/snoopy/archive/2005/01/27/744.html


leekiang 2009-11-13 18:16 发表评论
]]>
oracle存储q程W记http://m.tkk7.com/leekiang/archive/2009/11/07/301540.htmlleekiangleekiangSat, 07 Nov 2009 05:15:00 GMThttp://m.tkk7.com/leekiang/archive/2009/11/07/301540.htmlhttp://m.tkk7.com/leekiang/comments/301540.htmlhttp://m.tkk7.com/leekiang/archive/2009/11/07/301540.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/301540.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/301540.html                                   ED_NUM IN NUMBER /*l束数?/) IS
BEGIN
  declare
    i number;
  begin
    /*循环插入*/
    FOR i IN ST_NUM .. ED_NUM LOOP
      INSERT INTO test_temp values (i, 'test');
    END LOOP;
  end;
  commit;
  /*异常处理*/
EXCEPTION
  WHEN OTHERS THEN
    rollback;
END;

在command window里执行call p_test(1,100);


leekiang 2009-11-07 13:15 发表评论
]]>
关于oracle的sessionhttp://m.tkk7.com/leekiang/archive/2009/10/03/297116.htmlleekiangleekiangFri, 02 Oct 2009 18:07:00 GMThttp://m.tkk7.com/leekiang/archive/2009/10/03/297116.htmlhttp://m.tkk7.com/leekiang/comments/297116.htmlhttp://m.tkk7.com/leekiang/archive/2009/10/03/297116.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/297116.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/297116.html执行select * from v$session t where t.USERNAME='TEST';
会看到至两条记录,其中action列ؓMain session的是plsqldevleper固有的,
每一个SQL Window都会有一个session,action昄?SQL Window - New"
当前window对应的session的STATUS列显CZؓACTIVE,其他昄?INACTIVE",
搞不明白"INACTIVE"的sessionZq会昄Q什么时候不昄?
至于查看当前session的IDQ用 select distinct sid from v$mystat;

Z记录一下v$mystat,v$sesstat和v$sysstat的区?br />按照OracleDocument中的描述Q?/span>v$sysstat存储自数据库实例q行那刻起就开始篏计全实例(instance-wide)的资源用情?
我觉得可以理解ؓ是许多综合性、全局性的指标
Q比如ȝ录次?logons cumulative)
如果从v$sysstat查得?47个指标,那么v$mystat(表示当前session的情?相应的也?47个指标,
v$sesstat包括了所有session(包括zd的和不活动的)的指标的|当然也就囊括了v$mystatQ其记录Cؓ347*25(如果?5个session的话)=8675Q?br />至于指标?STATISTIC#"表示的含义,可从v$statname查得?br />

在B/Spȝ中,面UL复杂Q而且l过pȝ长时间运行,如果发现某个session的wait比较严重Q进行sql优化Ӟ很难知道q个sql是用在程 序的哪个模块Q很多时候只能根据开发h员的l验来定位这个sqlQ或者打开E序代码Q搜索。这L效率很低Q这里介l一个方法来快速定位发生问题的sql 的位|?br /> ORACLE提供了DBMS_APPLICATION_INFO包,其中提供了set_client_info、set_module? set_action、read_module、read_client_info、set_session_longops几个q程Q其中分别用于设|? 客户端信息、设|module信息Q这里同时必设|一个action信息Q、设|action信息、读取module信息Q同时也会得到action? 息)、读取client_info信息和手动设|一个会话ؓlongops?br />exec dbms_application_info.set_client_info('test client info');
exec dbms_application_info.set_module(module_name => 'test module',action_name => 'test action');
http://zhang41082.itpub.net/post/7167/305794

How to trace the connection pool in a Java Web application - DBMS_APPLICATION_INFO
http://stackoverflow.com/questions/829302/how-to-trace-the-connection-pool-in-a-java-web-application-dbmsapplicationinf
http://stackoverflow.com/questions/53379/using-dbmsapplicationinfo-with-jboss
http://www.mailinglistarchive.com/java-dev@lists.apple.com/msg10280.html


使用v$sysstat中的数据
该视图中数据常被用于监控pȝ性能。如buffer cache命中率、Y解析率等都可从该视图数据计算得出?br />该视图中的数据也被用于监控系l资源用情况,以及pȝ资源利用率的变化。正因如此多的性能数据Q检查某区间内系l资源用情况可以这样做Q在一个时间段开始时创徏一个视图数据快照,l束时再创徏一个,二者之间各l计值的不同(end value - begin value)xq一旉D内的资源消耗情c这是oracle工具的常用方法,诸如Statspack以及BSTAT/ESTAT都是如此?br />ZҎ某个区间D늚数据Q源数据可以被格式化Q每ơ事务,每次执行Q每U钟或每ơ登陆)Q格式化后数据更Ҏ从两者中鉴别出差异。这cȝҎ在升U前Q升U后或仅仅想看看一D|间内用户数量增长或数据增加如何媄响资源用方面更加实用?br />你也可以使用v$sysstat数据通过查询v$system_event视图来检查资源消耗和资源回收?br />参见http://www.cnblogs.com/jimeper/archive/2008/03/30/1129431.html
该文后面有这样一句话
人生有三?lnq动,ln学习,ln反省.吸收新知,提高效率,懂得相处,成就自己,也成׃?创造最
高h倹{?br />
ORACLE的连接数(sessions)与其参数文g中的q程?process)有关Q它们的关系如下Q?br />  sessions=(1.1*process+5)
  但是我们增加process数时Q往往数据库不能启动了。这因ؓ我们q漏调了一个unixpȝ参数Q它?etc/system/ 中semmnsQ这是unixpȝ的信号量参数。每个process会占用一个信号量。semmns调整后,需要重新启动unix 操作pȝ Q参数才能生效。不q它的大会受制?g 的内存或ORACLE SGA。范围可?00-2000不等?br />
  semmns的计公式ؓQSEMMNS > processes + instance_processes + system processes = 数据库参数processes的?instance_processes = 5(smon,pmon,dbwr,lgwr,arch)
  system=pȝ所占用信号量?br />  pȝ所占用信号量可用下列命令查出:#ipcs -sb
  其中列NSEMS昄pȝ已占用信号量?br />  其它一些跟q接有关的参敎ͼ?licence_max_sessions, licence_sessions_warning {默认设|都为零Q也是没有限制?br />


leekiang 2009-10-03 02:07 发表评论
]]>
oracle不同版本间数据的导入导出(?http://m.tkk7.com/leekiang/archive/2009/08/23/292314.htmlleekiangleekiangSun, 23 Aug 2009 15:14:00 GMThttp://m.tkk7.com/leekiang/archive/2009/08/23/292314.htmlhttp://m.tkk7.com/leekiang/comments/292314.htmlhttp://m.tkk7.com/leekiang/archive/2009/08/23/292314.html#Feedback1http://m.tkk7.com/leekiang/comments/commentRss/292314.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/292314.html阅读全文

leekiang 2009-08-23 23:14 发表评论
]]>
java调oracle存储q程http://m.tkk7.com/leekiang/archive/2009/08/12/290778.htmlleekiangleekiangWed, 12 Aug 2009 03:46:00 GMThttp://m.tkk7.com/leekiang/archive/2009/08/12/290778.htmlhttp://m.tkk7.com/leekiang/comments/290778.htmlhttp://m.tkk7.com/leekiang/archive/2009/08/12/290778.html#Feedback2http://m.tkk7.com/leekiang/comments/commentRss/290778.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/290778.html        int oracleId = CharacterSet.ZHS16GBK_CHARSET;
        oracle.sql.CharacterSet dbCharset = oracle.sql.CharacterSet.make(oracleId);
            cst = (OracleCallableStatement) conn
                    .prepareCall("begin ?:= pkg_test.f_getList(?); end;");
//String sql = "{?=call PckgStudSltCourse.addStudPreSltCourse(?,?,?,?)}";也可以这样写
//sql="{call sp(?,?,?,?,?)}";//如果无返回?br />            cst.registerOutParameter(1, OracleTypes.ARRAY, "T_ARRAY");//W一个问可C回结?br />            cst.setString(2, userid);//W二个问?br />            cst.executeUpdate();//哪怕是个查询也用executeUpdate

            oracle.sql.ARRAY simpleArray = cst.getARRAY(1);//从statement获取Q而不是rs
            String[] values = (String[]) simpleArray.getArray();
            for (int i = 0; i < values.length; i++) {
                oracle.sql.CHAR out_value = new oracle.sql.CHAR(values[i],dbCharset);
                System.out.println(out_value.stringValue());
            }
            
注意Q在new oracle.sql.CHAR处,可能会报
java.lang.NoClassDefFoundError: oracle/gss/util/NLSError
    at oracle.sql.CharacterSetUnknown.failCharsetUnknown(CharacterSetFactoryThin.java:178)
    at oracle.sql.CharacterSetUnknown.convert(CharacterSetFactoryThin.java:145)
    at oracle.sql.CHAR.(CHAR.java:147)
    即missing some jar file in runtime environment
    原因是weblogic没有加蝲web应用下的classes12.jar,而是加蝲了weblogic81\server\lib里的ojdbc14.jar,
    而ojdbc14.jar里没有oracle.gss.util.NLSError?br />    修改classpath先加载classes12.jar,打印出来的是qQ只出现qQ这ơ没有出现类DL异常java.sql.SQLException:   Non   supported   character   set:   oracle-character-set-850  ?br />    q需要修改classpath先加载nls_charset12.jar;(必须q样Q光攑֜web应用的lib下或光放在weblogic81\server\lib?br />    不行Qjar包放|或加蝲的这三种方式是有区别?
问题Q如果用的是ojdbc.jar,我觉得可能就不要nls_charset12.jar?q且不需要new oracle.sql.CHAR(values[i],dbCharset)来{?br />    
http://topic.csdn.net/t/20051110/17/4385336.html
    cL通过cd载器classloader载入的? 
  ~省情况下web容器遵@java的标准标准类载入机制   --   q载入父加载器level的类? 
  weblogic的web容器的classloaderl承自ejb容器的classloaderQejb容器的classloader又承自 application   classloader--该loader负责加蝲classpath下面的类Q所以缺省情况下classpath下面的类会被优先载入Q即使相同的cd在于web应用的lib目录? 
  可以通过配置文g来修改这U加载顺序,使得lib目录中的cdC先调用,在weblogic   8.1中,Ҏ是在weblogic.xml中加入下面的代码D:  
  <container-descriptor>  
  <prefer-web-inf-classes>true</prefer-web-inf-classes>  
  </container-descriptor>   
  weblogic   的加载顺序就是weblogic   classpath优先Q?
 
 
  一下见http://www.javaeye.com/topic/21141
  ClassNotFoundException发生在装入阶Dc?br />当应用程序试N过cȝ字符串名Uͼ使用常规的三U方法装入类Q但却找不到指定名称的类定义时就抛出该异常?br />
NoClassDefFoundErrorQ?当目前执行的cdl编译,但是找不到它的定义时

也就是说你如果编译了一个类BQ在cA中调用,~译完成以后Q你又删除掉BQ运行A的时候那么就会出现这个错?
当你使用字符串去转换c,也就是尝试用Class.forName{方法去获得一个类的时候,如果q个cM存在Q就会抛出ClassNotFoundException?br />   而你~译的类无错Q但是在q行时刻Q缺乏某些必ȝcLQ就是抛出NoClassDefFoundError。这U情冉|常见是你在~译Ӟ在classpath下有q个c,但是在运行时Q你的classpath~少q个cR?
   
  加蝲时从外存储器找不到需要的class出现ClassNotFoundException
  q接时从内存找不到需要的class出现NoClassDefFoundError
  问题:加蝲和连接的区别

创徏试用表

CREATETABLE T_TEST(
I_ID
NVARCHAR(20),
I_NAME
NVARCHAR(20)
)

一Q无q回值的存储q程

1、徏立存储过E?br /> CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS
BEGIN
   INSERT INTO T_TEST (I_ID,I_NAME) VALUES (PARA1, PARA2);
END TESTA;

2、相应的JAVAE序
import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;
public class TestProcedureOne {
    public TestProcedureOne() {
      }
      public static void main(String[] args ){
        String driver = "oracle.jdbc.driver.OracleDriver";
        String strUrl = "jdbc:oracle:thin:@192.168.10.216:1521:ctbu";
        Statement stmt = null;
        ResultSet rs = null;
        Connection conn = null;
        CallableStatement cstmt = null;
        try {
          Class.forName(driver);
          conn = DriverManager.getConnection(strUrl, "dbname", "password");
          CallableStatement proc = null;
          proc = conn.prepareCall("{ call dbname.TESTA(?,?) }");
          proc.setString(1, "100");
          proc.setString(2, "TestOne");
          proc.execute();
        }
        catch (SQLException ex2) {
          ex2.printStackTrace();
        }
        catch (Exception ex2) {
          ex2.printStackTrace();
        }
        finally{
          try {
            if(rs != null){
              rs.close();
              if(stmt!=null){
                stmt.close();
              }
              if(conn!=null){
                conn.close();
              }
            }
          }
          catch (SQLException ex1) {
          }
        }
      }
    }

二:有返回值的存储q程Q非列表Q?/span>

1、存储过Eؓ
CREATE OR REPLACE PROCEDURE TESTB(PARA1 IN VARCHAR2,PARA2 OUT VARCHAR2) AS
BEGIN
   SELECT INTO PARA2 FROM TESTTB WHERE I_ID= PARA1;
END TESTB;

2、JAVA代码
public class TestProcedureTWO {
public TestProcedureTWO() {
}
public static void main(String[] args ){
    String driver = "oracle.jdbc.driver.OracleDriver";
    String strUrl = "jdbc:oracle:thin:@192.168.10.216:1521:ctbu";
    Statement stmt = null;
    ResultSet rs = null;
    Connection conn = null;
    try {
      Class.forName(driver);
      conn = DriverManager.getConnection(strUrl, "dbname", "password");
      CallableStatement proc = null;
      proc = conn.prepareCall("{ call HYQ.TESTB(?,?) }");
      proc.setString(1, "100");
      proc.registerOutParameter(2, Types.VARCHAR);
      proc.execute();
      String testPrint = proc.getString(2);
      System.out.println("=testPrint=is="+testPrint);
    }
    catch (SQLException ex2) {
      ex2.printStackTrace();
    }
    catch (Exception ex2) {
      ex2.printStackTrace();
    }
    finally{
      try {
        if(rs != null){
          rs.close();
          if(stmt!=null){
            stmt.close();
          }
          if(conn!=null){
            conn.close();
          }
        }
      }
      catch (SQLException ex1) {
      }
    }
}
}
}
注意Q这里的proc.getString(2)中的数?qL的,而是和存储过E中的out列对应的Q如果out是在W一个位|,那就? proc.getString(1)Q如果是W三个位|,是proc.getString(3)Q当然也可以同时有多个返回|那就是再多加几个out 参数了?br />
三:q回列表
׃oracle存储q程没有q回|它的所有返回值都是通过out参数来替代的Q列表同样也不例外,但由于是集合Q所以不能用一般的参数Q必要用pagkage?所以要分两部分?br /> 1、在SQL*PLUS中徏一个程序包

CREATE OR REPLACE PACKAGE TESTPACKAGE AS
TYPE Test_CURSOR IS REF CURSOR;
procedure TESTC(cur_ref out Test_CURSOR);
end TESTPACKAGE;

建立存储q程Q存储过EؓQ?br /> create or replace package body TESTPACKAGE as
procedure TESTC(cur_ref out Test_CURSOR) is
begin  
OPEN cur_ref FOR SELECT * FROM T_TEST;
end TESTC;
END TESTPACKAGE;
可以看到Q它是把游标Q可以理解ؓ一个指针)Q作Z个out 参数来返回值的?br /> JAVAE序如下Q?/p>

import java.sql.*;
import java.io.OutputStream;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.jdbc.driver.*;

public class TestProcedureOne {
    public TestProcedureOne() {
      }
      public static void main(String[] args ){
        String driver = "oracle.jdbc.driver.OracleDriver";
        String strUrl = "jdbc:oracle:thin:@192.168.10.216:1521:ctbu";
        Statement stmt = null;
        ResultSet rs = null;
        Connection conn = null;
        CallableStatement cstmt = null;
        try {
          Class.forName(driver);
          conn = DriverManager.getConnection(strUrl,"databasename" "password");
          CallableStatement proc = null;
          proc = conn.prepareCall("{ call cqsb.TESTA(?,?) }");
          proc.setString(1, "100");
          proc.setString(2, "TestOne");
          proc.execute();
        }
        catch (SQLException ex2) {
          ex2.printStackTrace();
        }
        catch (Exception ex2) {
          ex2.printStackTrace();
        }
        finally{
          try {
            if(rs != null){
              rs.close();
              if(stmt!=null){
                stmt.close();
              }
              if(conn!=null){
                conn.close();
              }
            }
          }
          catch (SQLException ex1) {
          }
        }
      }
    }

特别注意Q?br /> 1、在执行前一定要先把oracle的驱动包攑ֈclass路径里?br /> 2、Toad在我建立存储q程中搞了很多莫名的错误Q多数是没有创徏成功而不报错Q?br /> 或者是创徏有误而不提示Q应当引起重视。所以最好还是在SQL*PLUS玩这些?br /> 3、在SQL*PLUS中的换行是无效的Q要换行的时候一定要I格l尾Q特别是你直接复制代码的时候!




leekiang 2009-08-12 11:46 发表评论
]]>
oracle的参C及pfile和spfilehttp://m.tkk7.com/leekiang/archive/2009/07/31/289196.htmlleekiangleekiangThu, 30 Jul 2009 16:19:00 GMThttp://m.tkk7.com/leekiang/archive/2009/07/31/289196.htmlhttp://m.tkk7.com/leekiang/comments/289196.htmlhttp://m.tkk7.com/leekiang/archive/2009/07/31/289196.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/289196.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/289196.html对这些东襉K没什么整体概念,以下是东抄西抄的?br />
1,Select isspecified,count(*) from v$spparameter group by isspecified;
 如果isspecified里有trueQ表明用spfileq行了指定配|?br />  如果全ؓfalseQ则表明用pfile启动

2,spfile是二q制?br />
3,http://snakeskin.javaeye.com/blog/155136
db_buffer_size=db_block_buffers*db_block_size, db_block_size为数据库默认? 不要修改
pfile不要有SGA_TARGETq个参数, 也不要有db_cache_sizeq个参数, SGA_MAX_SIZE也不需?br />
1Q创建pfile
SQL>create pfile from spfile
q样在d:/oracle/product/10.1.0/db_1/database目录下面?个文件INITorcl.ORA
或者copy d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXXCq目? 名字ҎINITorcl.ORA
init.ora.XXXX也是个pfile文g, 不妨试着用这个文件启动你的数据库
SQL>startup pfile='d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX'
特别是你改动参数D数据库无法启动的情况? 用这个文件恢复你的spfile非常有?br />SQL>create spfile from pfile='d:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX'

2)修改pfile的内?br />修改后主要内容ؓ
sga_target=1700000000(1.7G左右)
lock_sga=true
pre_aggregate_tagert=250000000(250M左右)
workarea_size_policy=auto
pre_page_sga=true
sga_max_size=1720000000(1.72G左右)

3)Ҏpfile启动数据?br />SQL>startup pfile='d:/oracle/product/10.1.0/db_1/database/INITorcl.ORA'
如果不能启动, 可能是某些参数的原因, 那么׃改INIToracl.ORA的配|文? 直到能正常启动ؓ?

4,http://www.orafaq.com/node/5

What is the difference between a PFILE and SPFILE:

A PFILE is a static, client-side text file that must be updated with a standard text editor like "notepad" or "vi". This file normally reside on the server, however, you need a local copy if you want to start Oracle from a remote machine. DBA's commonly refer to this file as the INIT.ORA file.

An SPFILE (Server Parameter File), on the other hand, is a persistent server-side binary file that can only be modified with the "ALTER SYSTEM SET" command. This means you no longer need a local copy of the pfile to start the database from a remote machine. Editing an SPFILE will corrupt it, and you will not be able to start your database anymore.

5,怎样查看一个参CҎ否需要重启数据库

select name,value ,ISSYS_MODIFIABLE from v$parameter
如果ISSYS_MODIFIABLE q回的是falseQ说明该参数无法用alter system语句动态修?需要重启数据库


6,用命令修改参?/p>

alter system set java_pool_size=2 scope=spfile ;

scope=spfile 的修Ҏ需要重启数据库
scope=both 实时生效和写入spfileQ不需要重启数据库
scope=memory 实时生效Q但不写spfileQ这样如果重启数据库Q则恢复原来的参数?br />
每个参数能修改的scope是不一LQ可以查询v$parameter了解参数能被修改的类?/p>

见http://bbs.chinaunix.net/archiver/?tid-974075.html

10,

http://www.cnblogs.com/jacktu/archive/2008/02/27/1083232.html

http://topic.csdn.net/u/20090227/16/fb3d88ed-f2ca-44ed-8097-dc363054515c.html




leekiang 2009-07-31 00:19 发表评论
]]>ORA-00060:{待资源的时候检到死锁http://m.tkk7.com/leekiang/archive/2009/07/31/289194.htmlleekiangleekiangThu, 30 Jul 2009 16:08:00 GMThttp://m.tkk7.com/leekiang/archive/2009/07/31/289194.htmlhttp://m.tkk7.com/leekiang/comments/289194.htmlhttp://m.tkk7.com/leekiang/archive/2009/07/31/289194.html#Feedback1http://m.tkk7.com/leekiang/comments/commentRss/289194.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/289194.html参见Q?br />http://www.d9soft.com/article/353/Article25047_1.htm
http://topic.csdn.net/u/20070719/09/13f24bd3-5fc4-43dc-b1e4-5475718031b4.html


leekiang 2009-07-31 00:08 发表评论
]]>
oracle10gW记http://m.tkk7.com/leekiang/archive/2009/07/30/289135.htmlleekiangleekiangThu, 30 Jul 2009 08:41:00 GMThttp://m.tkk7.com/leekiang/archive/2009/07/30/289135.htmlhttp://m.tkk7.com/leekiang/comments/289135.htmlhttp://m.tkk7.com/leekiang/archive/2009/07/30/289135.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/289135.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/289135.htmloracle10g装了几个实例Q就会在service里看到多个OracleService,同时有多个OracleDBConsole,
只有OracleDBConsoleh了,才能讉Khttp://127.0.0.1:1158/emQ?br />那么如何知道每一个em的http端口?
有h说在oracle\product\10.2.0\db_1\sysman\config\emca.propertiesQ?br />看了一下只有默认端口DBCONTROL_HTTP_PORT_DEFAULT?158
后来在oracle\product\10.2.0\db_1\install\install\portlist.ini?br />发现了每一个实例的Enterprise Manager Console HTTP 端口



leekiang 2009-07-30 16:41 发表评论
]]>
oracle回滚D?/title><link>http://m.tkk7.com/leekiang/archive/2009/05/29/278948.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Fri, 29 May 2009 13:44:00 GMT</pubDate><guid>http://m.tkk7.com/leekiang/archive/2009/05/29/278948.html</guid><wfw:comment>http://m.tkk7.com/leekiang/comments/278948.html</wfw:comment><comments>http://m.tkk7.com/leekiang/archive/2009/05/29/278948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/leekiang/comments/commentRss/278948.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/leekiang/services/trackbacks/278948.html</trackback:ping><description><![CDATA[Oracle回滚D|는法规划及问题解决<br />http://bbs.zdnet.com.cn/archiver/tid-127193.html<br /><img src ="http://m.tkk7.com/leekiang/aggbug/278948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/leekiang/" target="_blank">leekiang</a> 2009-05-29 21:44 <a href="http://m.tkk7.com/leekiang/archive/2009/05/29/278948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle处理数据的笔?/title><link>http://m.tkk7.com/leekiang/archive/2009/05/12/270295.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Tue, 12 May 2009 14:26:00 GMT</pubDate><guid>http://m.tkk7.com/leekiang/archive/2009/05/12/270295.html</guid><wfw:comment>http://m.tkk7.com/leekiang/comments/270295.html</wfw:comment><comments>http://m.tkk7.com/leekiang/archive/2009/05/12/270295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/leekiang/comments/commentRss/270295.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/leekiang/services/trackbacks/270295.html</trackback:ping><description><![CDATA[1Qcreate table tbA as select * from tbB<br />  q样会丢q引等信息<br /><br />2,生成10万条试记录表可以用如下SQLQ?br /> create table myTestTable as <br />select rownum as id,<br />               to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime,<br />               trunc(dbms_random.value(0, 100)) as random_id,<br />               dbms_random.string('x', 20) random_string<br />          from dual<br />        connect by level <= 100000;<br />来源:http://blog.csdn.net/yzsind/archive/2009/12/08/4967133.aspx<br /><img src ="http://m.tkk7.com/leekiang/aggbug/270295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/leekiang/" target="_blank">leekiang</a> 2009-05-12 22:26 <a href="http://m.tkk7.com/leekiang/archive/2009/05/12/270295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bitmap位图索引http://m.tkk7.com/leekiang/archive/2008/06/25/210564.htmlleekiangleekiangWed, 25 Jun 2008 07:12:00 GMThttp://m.tkk7.com/leekiang/archive/2008/06/25/210564.htmlhttp://m.tkk7.com/leekiang/comments/210564.htmlhttp://m.tkk7.com/leekiang/archive/2008/06/25/210564.html#Feedback1http://m.tkk7.com/leekiang/comments/commentRss/210564.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/210564.htmlOracle数据库的位图索引(Bitmap Index)实是针寚w些数值稀?/font>(low-cardinalityQ?/font>低基?/font>)的字D,但是q应C的一ҎQ它是针寚w?/font>gl常改变?/font>字段的。在实际应用中,如果某个字段的值需要频J更斎ͼ那么׃适合在它上面创徏位图索引。在位图索引中,如果你更新或插入其中一条数gؓN的记录,那么相应表中数gؓN的记录(可能成百上千条)全部被Oracle锁定Q这意味着其它用户不能同时更新q些数gؓN的记录,其它用户必须要等W一个用h交后Q才能获得锁Q更新或插入数据?/font>
http://blog.ccidnet.com/blog-htm-do-showone-uid-4092-itemid-291252-type-blog.html

在我们的pȝ里,不仅不是在一个column上创建bitmap indexQ而是在多个column上联合v来创建bitmap indexQ从而可以想见,几乎{同于每个bitmap index entry对应的只有极数的rowidQ即只对应极数的rowQ而且每个bitmap都要创徏一个或多个bitmap segmentQ相应的QDML操作可能需要频J的lock很多rowsQ媄响ƈ发性(影响也需要修改同样bitmap entry的用PQ同Ӟ׃pctfree{存储参数媄响indexI间的分配及理Q和׃数据操作D物理地址更改从而修改index entryQ扩展,链接bitmap index entryQ频J修改导致的盘片Qblock分配链接{。这是空间增长和pȝ性能下降的部分原因?br />
bitmap主要用于数据仓库Qtable有大量的数据q且列上基数很小Q一般是column的distinct values占rowsL?%以下Q或重复出现过100ơ以上,Oracle此时才可以把该column列ؓ创徏bitmap index的侯选字D)Q同Ӟq由于数据仓库上q行讉K的事务非常少。bitmap indexq不适用于OLTP业务QOLTP一般都是有大量的ƈ发事务来修改同样的数据。bitmap主要是设计来ؓ数据仓库服务的,卛_用于低基数超 U大数据量查询服务,而且只用在where clause里包含and ,or,not,或equality queriesQ比如在and和or条g的查询,在把bit转换成rowid以前Q就能很快的得到相应的boolean操作Q?br />http://bigboar.itpub.net/post/8411/225321

2,位图索引占用的空间很?一?66万行记录的只有两个字D늚表,占用I间U?88M,在该两个字段上徏有一个位囄引,q个位图索引占用I间U?68M
http://bigboar.itpub.net/post/8411/225321

查看各个?包括索引)占用I间大小的sql:
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

http://space.itpub.net/193161/viewspace-50292
http://www.ixdba.com/html/y2007/m05/102-bitmap-index-deadlock.html

3QOracle强烈建立QQ何一个应用程序的库表臛_需要创Z个表I间Q其中之一用于存储表数据,而另一个用于存储表索引数据。因为如果将表数据和索引? 据放在一P表数据的I/O操作和烦引的I/O操作生媄响系l性能的I/O竞争Q降低系l的响应效率。将表数据和索引数据存放在不同的表空间中Q如一 个ؓAPP_DATAQ另一个ؓAPP_IDXQ,q在物理层面这两个表空间的数据文g攑֜不同的物理磁盘上Q就可以避免q种竞争了?br />拥有独立的表I间Q就意味着可以独立Cؓ表数据和索引数据提供独立的物理存储参敎ͼ而不会发生相互媄响,毕竟表数据和索引数据拥有不同的特性,而这些特性又直接影响了物理存储参数的讑֮?br />此外Q表数据和烦引数据独立存储,q会带来数据理和维护上的方面。如你在q移一个业务数据库ӞZ降低数据大小Q可以只q出表数据的表空_在目标数据库中通过重徏索引的方式就可以生成索引数据了?br />http://blog.ccidnet.com/blog-htm-do-showone-uid-19759-itemid-341747-type-blog.html

4QB-Tree索引即normal普通烦?img src ="http://m.tkk7.com/leekiang/aggbug/210564.html" width = "1" height = "1" />

leekiang 2008-06-25 15:12 发表评论
]]>
oracle dblink介绍(?http://m.tkk7.com/leekiang/archive/2008/04/17/193850.htmlleekiangleekiangThu, 17 Apr 2008 11:37:00 GMThttp://m.tkk7.com/leekiang/archive/2008/04/17/193850.htmlhttp://m.tkk7.com/leekiang/comments/193850.htmlhttp://m.tkk7.com/leekiang/archive/2008/04/17/193850.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/193850.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/193850.html两台不同的数据库服务器,从一台数据库服务器的一个用戯取另一台数据库服务器下的某个用L数据Q这个时候可以用dblink
  其实dblink和数据库中的view差不多,建dblink的时候需要知道待d数据库的ip地址Qssid以及数据库用户名和密码?br />dblink =database links

  创徏可以采用两种方式(自己试验时只有第一U方式可以,不知何故)Q?/p>

  1、已l配|本地服?br />以下是引用片D:
  create public database
  link fwq12 connect to fzept
  identified by neu using 'fjept'
  CREATE DATABASE LINK数据库链接名CONNECT TO 用户?IDENTIFIED BY 密码 USING ‘本地配|的数据的实例名?

  2、未配置本地服务
以下是引用片D:
create database link linkfwq
   connect to fzept identified by neu
   using '(DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
   )
   (CONNECT_DATA =
   (SERVICE_NAME = fjept)
   )
   )';
  host=数据库的ip地址Qservice_name=数据库的ssid?/p>

  其实两种Ҏ配置dblink是差不多的,我个人感觉还是第二种Ҏ比较好,q样不受本地服务的媄响?/p>

  数据库连接字W串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定?
  数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一?/p>

  数据库全局名称可以用以下命令查?br />  SELECT * FROM GLOBAL_NAME;

  查询q端数据库里的表
  SELECT …?FROM 表名@数据库链接名;

  查询、删除和插入数据和操作本地的数据库是一LQ只不过表名需要写成“表名@dblink服务器”而已?/p>

  附带说下同义词创?
  CREATE SYNONYM 同义词名 FOR 表名;
  CREATE SYNONYM 同义词名 FOR 表名@数据库链接名;
  删除dblinkQDROP PUBLIC DATABASE LINK linkfwq?/p>

  如果创徏全局dblinkQ必M用systm或sys用户Q在database前加public?br />  参考资?
  http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_admin.htm#i1008271



leekiang 2008-04-17 19:37 发表评论
]]>
oracle函数W记(主要是日期函?http://m.tkk7.com/leekiang/archive/2008/02/18/180566.htmlleekiangleekiangMon, 18 Feb 2008 15:04:00 GMThttp://m.tkk7.com/leekiang/archive/2008/02/18/180566.htmlhttp://m.tkk7.com/leekiang/comments/180566.htmlhttp://m.tkk7.com/leekiang/archive/2008/02/18/180566.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/180566.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/180566.html1
Q求一D|间内p了多少?例如求^均日讉K量时要用?
select to_date(to_char(max(t.logdate), 'yyyy-MM-dd'), 'yyyy-MM-dd') -
                              to_date(to_char(min(t.logdate), 'yyyy-MM-dd'),'yyyy-MM-dd') + 1
                         from tb_log t
2Q?span class="oblog_text">Add_months(d,n) 当前日期d后推n个月(n可以?
   当找不到某月的匹配日时取该月最后一天。例?-31后推1个月?-30
3Q?/span>last_day(d)  某日期d所在月份的最后一?br />4Q{换某日期?yyyy-m-d'格式
    select to_char(sysdate, 'yyyy') || '-' || to_number(to_char(sysdate, 'mm')) || '-' ||
       to_number(to_char(sysdate, 'dd')) from dual
5,查询
pȝ旉戳的毫秒?/span>
SELECT (SYSDATE - TO_DATE('1970-1-1 8', 'YYYY-MM-DD HH24')) * 86400000 +
       TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), 'FF')) AS MILLIONS
  FROM DUAL
见http://yangtingkun.itpub.net/post/468/244564

6,oracle函数处理字符串时Q下标是?开始的?br />
7,
INSTRҎ的格式ؓ
INSTR(源字W串, 目标字符? 起始位置, 匚w序号)  (?起始位置是从1开始,不能?开?/font>)
例如QINSTR('CORPORATE FLOOR','OR', 3, 2)中,源字W串?CORPORATE FLOOR', 目标字符串ؓ'OR'Qv始位|ؓ3Q取W?个匹配项的位|?br />默认查找序Z左到叟뀂当起始位置数的时候,从右边开始查找?br />所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显C结果是
Instring
—————?br />14

?
INSTR('test','a')得到的是0,而不?1
参?
http://df41.spaces.live.com/blog/cns!D064C4537B2605A6!317.entry
http://hi.baidu.com/fgfd0/blog/item/7a48d5f9155a0059252df2dc.html

8Qto_date时报"格式代码出现两次"
   原因?
You are using MM twice"

9,substr( string, start_position, [length])  下标?开?br />substr('This is a test', 6, 2)   would return 'is'
substr('This is a test', 6)      would return 'is a test'
substr('TechOnTheNet', 1, 4)     would return 'Tech'
substr('TechOnTheNet', -3, 3)    would return 'Net'
substr('TechOnTheNet', -6, 3)    would return 'The'
substr('TechOnTheNet', -8, 2)    would return 'On'

10,select to_date(2008-03-14 14:49:37,'yyyy-MM-dd hh24:mi')  from dual
报错Qora-01830错误Q日期格式图片在转换整个输入字符串之前结?br />原因是格式化的字W窜长度大于格式化标准(yyyy-MM-dd hh24:miQ的长度
注意:月䆾的mm大小写不一?hh24和hh不一?分钟用mi而不是mm

11Qlengthb查看字节?br />
12Qcase的用?br />select case when t.classtype = 1 then
          '名称一'
         when t.classtype = 2 then
          '名城?
       end name from tb_test t

13,
where   t.fsdate <= to_date('2007-12-15','yyyy-mm-dd')
 where   to_char(t.fsdate,'yyyy-mm-dd')<='2007-12-15'

14,decode
decode(条g,?,译?,?,译?,...值n,译值n,~省?

15Q跨多少?br />select to_char(add_months(to_date('1999-2', 'yyyy-mm'), (rownum - 1)), 'YYYY-MM') as TEMPMONTH from dual connect by rownum < months_between(to_date('2009-9', 'yyyy-mm'), to_date('1999-2', 'yyyy-mm')) + 2

16Q统计字W串中某个字W出现的ơ数
SELECT LENGTHB('ABCDEFGEFGDBE')-LENGTHB(REPLACE('ABCDEFGEFGDBE','E','')) FROM DUAL;
http://windows9834.blog.163.com/blog/static/2734500420103154920954/


leekiang 2008-02-18 23:04 发表评论
]]>oracle相关文章http://m.tkk7.com/leekiang/archive/2008/02/13/179733.htmlleekiangleekiangTue, 12 Feb 2008 19:13:00 GMThttp://m.tkk7.com/leekiang/archive/2008/02/13/179733.htmlhttp://m.tkk7.com/leekiang/comments/179733.htmlhttp://m.tkk7.com/leekiang/archive/2008/02/13/179733.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/179733.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/179733.html3 Node ORACLE RAC目手记
2,sql*plus使用的一些技?/a>

leekiang 2008-02-13 03:13 发表评论
]]>
oracle删除重复数据http://m.tkk7.com/leekiang/archive/2008/02/01/178909.htmlleekiangleekiangFri, 01 Feb 2008 15:21:00 GMThttp://m.tkk7.com/leekiang/archive/2008/02/01/178909.htmlhttp://m.tkk7.com/leekiang/comments/178909.htmlhttp://m.tkk7.com/leekiang/archive/2008/02/01/178909.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/178909.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/178909.htmlselect count(*), id from test  group by id having count(id) > 1
详见
http://www.cnblogs.com/shw0315/articles/305959.html

例子:d日志表里?28794条记录,执行以下sql
 delete from test a where a.rowid !=
 ( select max(b.rowid) from test b where a.id = b.id  )
共删?471条,用时12617U,有点慢。可改用上面链接里讲的徏临时表的方式?br />

leekiang 2008-02-01 23:21 发表评论
]]>
在windows上升Uoracle9201?206的注意事?/title><link>http://m.tkk7.com/leekiang/archive/2008/01/02/172051.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Tue, 01 Jan 2008 20:08:00 GMT</pubDate><guid>http://m.tkk7.com/leekiang/archive/2008/01/02/172051.html</guid><wfw:comment>http://m.tkk7.com/leekiang/comments/172051.html</wfw:comment><comments>http://m.tkk7.com/leekiang/archive/2008/01/02/172051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/leekiang/comments/commentRss/172051.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/leekiang/services/trackbacks/172051.html</trackback:ping><description><![CDATA[1Q必L所有的oracle服务停掉。如果忘停就执行升Q则会报错,不要紧,q时仍然可以停掉oracle服务然后retry<br />2Q缺省是新徏一个ORACLE_HOMEQ我们应该选择原来装的ORACLE_HOMEQ如C:\oracle\ora92Q名字ؓ"OraHome92",否则升可能不成?br />3Q如果报"无法定L的IP地址时生异帔R?,解决办法:<br />     修改 c:\windows\system32\drivers\etc\hostsQ加一?br />     192.168.1.101      LENOVO-PC<br />     其中ip是通过ipconfig查得的,双是机器名Q可通过hostname命o查得?br />     同时需要启动服务“TCP/IP NetBIOS Helper Service?br /><br />4,修改shared_pool_size=150M;shared_pool_size=150M?必须以spfile的方式?br />q时可能?<br /><font color="#ff0000">ORA-02097: 无法修改参数, 因ؓ指定的值无?br /> ORA-04033: 没有_的内存来增加池的定w<br /></font>原因是sga_max_size太小Q把其调大?br /> select sum(bytes)/1024/1024 from v$sgastat where name='free memory';<br /> 它统计的I闲I间是当前各~冲池未使用的空_而不是SGA预留而未分配l各池的I间?br /><br />详细步骤:<br />C:\>sqlplus /nolog<br />conn sys/sys as sysdba;<br />startup;<br />--讄׃n池和Java池大?50M<br />ALTER SYSTEM SET SHARED_POOL_SIZE='150M' SCOPE=spfile;<br />ALTER SYSTEM SET JAVA_POOL_SIZE='150M' SCOPE=spfile;<br />--修改System表空间大,保证?0M的多余空?br />--修改XDB表空间大,保证?0M的多余空?br />shutdown immediate;<br />--重新启动数据库到升状?br />STARTUP MIGRATE;<br />SPOOL c:\patch.log;<br />@C:\oracle\ora92\rdbms\admin\catpatch.sql;<br />--开始运行升U脚本,内存_的话q行旉于1个小?在运行期间关闭所有其它相关的q行E序Q另外最好有200M的多余内存空?br />--升时可以通过WINDOWSd理器监视ORACLE是否在升U?br />SPOOL OFF;<br />--q原׃n池和JAVA池大,Ҏ实际情况讄<br />ALTER SYSTEM SET SHARED_POOL_SIZE='50M' SCOPE=spfile;<br />ALTER SYSTEM SET JAVA_POOL_SIZE='50M' SCOPE=spfile;<br />shutdown immediate;<br />STARTUP;<br />--以下脚本为重新编译所有失效对?br />@C:\oracle\ora92\rdbms\admin\utlrp.sql;<br /><br />详见http://www.cnblogs.com/njlhb/archive/2007/12/23/1011410.html<br />http://dev.21tx.com/2005/03/07/11952.html<br /><img src ="http://m.tkk7.com/leekiang/aggbug/172051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/leekiang/" target="_blank">leekiang</a> 2008-01-02 04:08 <a href="http://m.tkk7.com/leekiang/archive/2008/01/02/172051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Top Ten Oracle JDBC Tips(?http://m.tkk7.com/leekiang/archive/2007/12/30/171763.htmlleekiangleekiangSun, 30 Dec 2007 14:03:00 GMThttp://m.tkk7.com/leekiang/archive/2007/12/30/171763.htmlhttp://m.tkk7.com/leekiang/comments/171763.htmlhttp://m.tkk7.com/leekiang/archive/2007/12/30/171763.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/171763.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/171763.html
Z么要始终使用PreparedStatement代替Statement及争?
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=10397&start=0&tstart=0


leekiang 2007-12-30 22:03 发表评论
]]>
如何用JDBCq接Oracle RAC 实现透明应用E序故障切换(?http://m.tkk7.com/leekiang/archive/2007/12/30/171761.htmlleekiangleekiangSun, 30 Dec 2007 13:51:00 GMThttp://m.tkk7.com/leekiang/archive/2007/12/30/171761.htmlhttp://m.tkk7.com/leekiang/comments/171761.htmlhttp://m.tkk7.com/leekiang/archive/2007/12/30/171761.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/171761.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/171761.html
     Oracle9i RAC 包含了全部在一个集配|中工作q负责提供持l的可用性的所需lg—当集群中的一个参与系l出现故障时Q用户可以自动移植到其它的可用系l上?Oracle9i RAC 的一个负责故障切换处理的主要lg是透明应用E序故障切换 (TAF) 选g。所有释放连接的数据库连接(和过E?都被重新q接C集群中的另一个节点上。故障切换对用户是完全透明的?br />
    下面是通过JDBC实现的透明应用E序故障切换的代码片?p>
     //Author : newall Date 2005-08-05 14:41 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     String url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST =(LOAD_BALANCE = yes)(ADDRESS=(PROTO =TCP)(HOST=node1)(PORT=1521))(ADDRESS=(PROTO =TCP)(HOST=node2)(PORT=1521))(ADDRESS=(PROTO =TCP)(HOST=node3)(PORT=1521))(ADDRESS=(PROTO =TCP)(HOST=node4)(PORT=1521))(CONNECT_DATA =(SERVICE_NAME = oracleServerName)(failover_mode = (type = select)(method = basic)(retries = 20)(delay = 15)))))";
     String user="userName"; 
     String password="userPassword"; 
     conn= DriverManager.getConnection(url,user,password);



leekiang 2007-12-30 21:51 发表评论
]]>
oracle行列转换http://m.tkk7.com/leekiang/archive/2007/12/06/165798.htmlleekiangleekiangThu, 06 Dec 2007 06:34:00 GMThttp://m.tkk7.com/leekiang/archive/2007/12/06/165798.htmlhttp://m.tkk7.com/leekiang/comments/165798.htmlhttp://m.tkk7.com/leekiang/archive/2007/12/06/165798.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/165798.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/165798.htmlhttp://topic.csdn.net/t/20050929/16/4302364.html
http://topic.csdn.net/t/20050929/09/4301014.html

Oracle多行记录合ƈ/q接/聚合字符串的几种Ҏ
http://blog.ccidnet.com/blog-htm-do-showone-uid-51502-type-blog-itemid-153656.html
http://www.china-askpro.com/msg45/qa43.shtml
http://topic.csdn.net/t/20060828/11/4980114.html


leekiang 2007-12-06 14:34 发表评论
]]>
树的查询http://m.tkk7.com/leekiang/archive/2007/10/31/157309.htmlleekiangleekiangWed, 31 Oct 2007 13:13:00 GMThttp://m.tkk7.com/leekiang/archive/2007/10/31/157309.htmlhttp://m.tkk7.com/leekiang/comments/157309.htmlhttp://m.tkk7.com/leekiang/archive/2007/10/31/157309.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/157309.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/157309.html2Q查所有的父节点  select  *  from wz_tree   start with id = 256 connect by prior pid = id;
   无论正树q是倒树, 关键在于connect by的条?
   正树:  必须是  ‘父? prior ‘子?br />   倒树:  必须是  ‘子? prior ‘父?br />3Q查分类的\? 用逗号q接:select  sys_connect_by_path(mc, ',')   from wz_tree   start with id = 1 connect by prior id = pid;http://www.itpub.net/838127.html讲的很详l?br />   后注:查某个节点的全\径,用上面的办法是先取得所有节点的全\径的一个时结果集Q再从这个时结果集里查询某个节点的全\径,q种办法太慢了。正的做法是先查倒树的全路径Q再取全路径最大的那条记录Q这样做速度飞快。sql如下:
   select  max(sys_connect_by_path(mc, ','))   from wz_tree   start with id = ? connect by prior pid = id

   后注:后来发现一?5000条记录的树,查所有节点的全\径还是非常快?0.1U??br />  
4Q查某个表的字段?
select max(substr(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','), 2)) col
  from (select COLUMN_NAME, column_id
          from user_tab_columns
         where table_name = '&TEST')--&为plsqldeveloper里的字符串占位符,执行时会弹出对话框让你填?br /> start with column_id = 1
connect by column_id = rownum;

5Qselect  *  from wz_tree where mc like '%五金'  start with id = 1 connect by prior id = pid;
和select  *  from wz_tree start with id = 1 connect by prior id = pid and mc like '%五金' 
二者的查询l果不一?前者正常的先按名称q行qoQ后者过滤的是树的分? 详见前面的链接?br />
6,ORA-30004: 使用 SYS_CONNECT_BY_PATH 函数Ӟ不能分隔符作ؓ列值的一部分?br />  q是因ؓ分隔W在列值里出现了。这个在使用oracle的SYS_CONNECT_BY_PATH函数时是止的。所以要把分隔符换掉?br />  如果出现q以上报错,换掉分隔W后再次执行含SYS_CONNECT_BY_PATH 函数的sql时可能会?"ora-00600: 内部错误代码 ,参数:[kokvxsql1],[][],[],..." 。不明白Z么,但重启oracle׃报错了?br />
7,在oracle10g可以利用伪列函数CONNECT_BY_ISLEAF来判断当前行是不是叶?如果是叶子就会在伪列中显C?”,如果不是叶子而是一个分支就昄??br />
8,sys_connect_by_path除了用于层次关系Q还可以用于行列转换(借助rownum)?br />  如把一个表的所有列q成一行,用逗号分隔:
select max(substr(sys_connect_by_path(column_name,','),2))
from (select column_name,rownum rn from user_tab_columns where table_name ='DEPT')
start with rn=1 connect by rn=rownum ;

-------------查得l果?
DEPTNO,DEPTNAME,MGRNO

参?
http://ons.javaeye.com/blog/227113





leekiang 2007-10-31 21:13 发表评论
]]>
树的一U特D设??http://m.tkk7.com/leekiang/archive/2007/09/12/144466.htmlleekiangleekiangWed, 12 Sep 2007 05:37:00 GMThttp://m.tkk7.com/leekiang/archive/2007/09/12/144466.htmlhttp://m.tkk7.com/leekiang/comments/144466.htmlhttp://m.tkk7.com/leekiang/archive/2007/09/12/144466.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/144466.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/144466.html不考虑极端的情况,通常l织机构有个10几个层次是天了?所有,可以用一个字D存储下所有祖先的信息Q例如varchar2(300),其中可以?'.'隔开?我的设想是这LQ?br /> id name Nodecode
1 a 1
2 b 1.2
3 c 1.3
4 d 1.2.4
5 e 1.2.5
6 f 1.2.5.6

?可以直接看到它的上脉络?.5.2.1 。当然这里考虑的是U别不多的。但是除非你是很极端的应用,我想q是可以满的。在插入和更新的时候注意维护nodecode卛_?br /> 如果要照到祖先,则只要解析一下nodecode卛_?br /> 同理如果要照后代Q例?的后代,则马上可以通过Like的方式获?



leekiang 2007-09-12 13:37 发表评论
]]>
查找某个表被哪些表引用。外?/title><link>http://m.tkk7.com/leekiang/archive/2007/08/13/136345.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Mon, 13 Aug 2007 05:10:00 GMT</pubDate><guid>http://m.tkk7.com/leekiang/archive/2007/08/13/136345.html</guid><wfw:comment>http://m.tkk7.com/leekiang/comments/136345.html</wfw:comment><comments>http://m.tkk7.com/leekiang/archive/2007/08/13/136345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/leekiang/comments/commentRss/136345.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/leekiang/services/trackbacks/136345.html</trackback:ping><description><![CDATA[select fk_col.constraint_name, fk_col.table_name, fk_col.column_name<br />  from user_constraints pk, user_constraints fk, user_cons_columns fk_col<br /> where pk.table_name = 'TEST'<br />   and pk.constraint_type = 'P'<br />   and fk.r_constraint_name = pk.constraint_name<br />   and fk_col.constraint_name = fk.constraint_name<br /> order by 2, 3;<br /><br /><br /><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);"> a.table_name 外键表名,a.column_name 外键列名,b.table_name 主键表名,b.column_name 主键列名<br /></span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> <br /> (</span><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);"> a.constraint_name,b.table_name,b.column_name,a.r_constraint_name<br /></span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> user_constraints a, user_cons_columns b<br /></span><span style="color: rgb(0, 0, 255);">WHERE</span><span style="color: rgb(0, 0, 0);"> a.constraint_type</span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(255, 0, 0);">'</span><span style="color: rgb(255, 0, 0);">R</span><span style="color: rgb(255, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> a.constraint_name</span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);">b.constraint_name<br /> ) a,<br /> (</span><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">distinct</span><span style="color: rgb(0, 0, 0);"> a.r_constraint_name,b.table_name,b.column_name<br /></span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> user_constraints a, user_cons_columns b<br /></span><span style="color: rgb(0, 0, 255);">WHERE</span><span style="color: rgb(0, 0, 0);">   a.constraint_type</span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(255, 0, 0);">'</span><span style="color: rgb(255, 0, 0);">R</span><span style="color: rgb(255, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> <br /> a.r_constraint_name</span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);">b.constraint_name)<br /> b<br /></span><span style="color: rgb(0, 0, 255);">where</span><span style="color: rgb(0, 0, 0);"> a.r_constraint_name</span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);">b.r_constraint_name <br /><br /><br /><br /></span><img src ="http://m.tkk7.com/leekiang/aggbug/136345.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/leekiang/" target="_blank">leekiang</a> 2007-08-13 13:10 <a href="http://m.tkk7.com/leekiang/archive/2007/08/13/136345.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle TIPShttp://m.tkk7.com/leekiang/archive/2007/07/15/130327.htmlleekiangleekiangSat, 14 Jul 2007 19:15:00 GMThttp://m.tkk7.com/leekiang/archive/2007/07/15/130327.htmlhttp://m.tkk7.com/leekiang/comments/130327.htmlhttp://m.tkk7.com/leekiang/archive/2007/07/15/130327.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/130327.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/130327.html1,"&"有时候不认,则改?&amp;"

   但在执行insert操作或update操作时如果sql语句中含"&amp;",如何处理Q?/p>

        1) update userinfo set pageurl='myjsp?page=1'||'&'||'pagesize=10' where id='test'         2) update userinfo set pageurl='myjsp?page=1'||chr(38)||'pagesize=10' where id='test'其中||是连字符, chr(38)跟ASCII的字W{码是一致的。plsql中还可以set define off来关闭特D字W,q可以用show define来查看有些特D定义的字符


2,慎用where pid!=3{用?q样没有囊括is null的情?要实现同L的可where pid!=3 or pid is null
3,快速从另外一个表复制数据
  insert into tablea (id,name) select id,name from tableb
4,查版?br />  select * from PRODUCT_COMPONENT_VERSION;?select * from v$version;
5,nls==National   Language   Support   国际语言支持
6,PLSQL
  HKEY_CURRENT_USER\Software\Allround Automations
  HKEY_CURRENT_USER\Software\Microsoft\Security
7,查blob大小
  select dbms_lob.getlength(blobfield) from wd_blob
8,改变表空?br />  alter table TB_USER move tablespace myspace;
  如果被{U表I间的表含有索引, 表{Ud索引变得不可? 要删除旧索引,建立新烦?font color="#333333">
  alter index user_name.index_name rebuild; 主键索引名与主键名相?br />9,导入时表I间错误
  导出dmp时的用户的默认表I间必须是表所在的表空_q样导入时才不会出错?br />  如果dmp,也可用UE打开直接修改表空间?br />
10Q用select into 复制数据
insert into test
  (id, name)
  select id, name from mis@dblink;
  ?br />  create table test--需先删?br />as (select * from mis@dblink)

11,中文字段按拼x序:
select username from tab_name order by nlssort(username,'nls_sort=schinese_pinyin_m');
按偏旁部?
select username from tab_name order by nlssort(username,'nls_sort=schinese_radical_m');
按笔?
select username from tab_name order by nlssort(username,'nls_sort=schinese_stroke_m');

12,插入带单引号的字W?/font>

insert into t(a) values ('a'||chr(39)||'b' );
或insert into t(a) varlus ('a''b');

13,如果你连接到数据库后没有在取nextval之后再取currvalQ就会出现ORA-08002出错.  
  因此Ҏ一个session来说Q应该先用nextvalQ才可以取currval?

14

truncate table mapeventӞ如果Z外键引用(外键所在那张表不一定有数据,有数据就会报另外一个错误了)
则报 ORA-02266:表中的唯一主键被启用的外部关键字引?br />ORA-02266: unique/primary keys in table referenced by enabled foreign keys
(外键所在那张表无数据时delete from table mapevent是可以执行的)
正确的步?
----------------
alter table mapevent disable primary key cascade;
truncate table mapevent;
alter table mapevent enable primary key;
---------------

15
查询某个表被哪些表引?br />select *
  from user_constraints t
 where t.constraint_type = 'R'
   and t.r_constraint_name = '该表的主键名';

16,按中文排序,但中文的一二三四五有问题,可用下面的办?

select * from T_TIME_SETUP order by translate(ccname,'一二三四五','12345')

来源:http://www.itpub.net/226375,1.html

17,误删了怎么?用Oracle中的回闪查询

?0分钟前的数据:

 select * from tb_wz as of timestamp(sysdate - 20 / 1440)

  http://blog.csdn.net/xuyuan77/archive/2007/06/06/1640757.aspx

18Q导出带有blobh或clobcd字段表时会出?EXP-00003: 未找到段 (8,375419) 的存储定?br /> 原因见http://read.newbooks.com.cn/info/116619.html

19,导出命o

exp Test1/Test1passwd@服务?owner=Test1 file=D:\files\Test1.dmp log=d:\log.log

expq有一个参数full=y

imp aichannel/aichannel@HUST full=y  file=test.dmp ignore=y

20Q查oracle的保留字 select * from v$reserved_words

21,修改序列的当前?/p>

alter sequence userseq increment by 500;
 select userseq.nextval from dual;
alter sequence userseq increment by 1;


22Q序列蟩20?br />create sequence ORA_SEQ
minvalue 100000000000
maxvalue 999999999999
start with 100000000260
increment by 1
cache 20
如果讄了cache 20Q数据库关闭时这20个序列成员会丢失Q造成序列不连l的现象?
序列讄nocache模式卛_
http://topic.csdn.net/u/20090421/20/7edde8ab-dbcc-4765-b9b9-a7fae3d2af39.html
l不能蟩L序列可计问?http://www.itpub.net/viewthread.php?tid=403149

23,?i的OEM去连10g,如果是普通用L录,׃?br />你必d有select any dictionary权限才能q行此应用程?误求DBAZ赋予此权?br /> q是?I的OEM在连?0G的数据库的时候的一个BUG,目前没有解决办法?br />http://www.itpub.net/thread-888007-1-1.html

24,可用其他dba用户修改system用户的密?br />
25,查看oracle最大连接数
show parameter processes
show parameter sessions
一个session对应一个processQ但是一个process未必对应一个session
SELECT * FROM v$process p
 WHERE NOT EXISTS (SELECT 1 FROM v$session WHERE p.paddr = p.addr);
 alter system set sessions=300 scope=spfile;需重启

v$resource_limit视图各字D늚含义
current_utilization   -   Number   of   (resources,   locks,   or   processes)   currently
being   used

max_utization   -   Maximum   consumption   of   the   resource   since   the   last
instance   start   up 自从上次启动以来的最大?br />
initial_allocation   -   Initial   allocation.   This   will   be   equal   to   the   value
specified   for   the   resource   in   the   initialization   parameter
file   (UNLIMITED   for   infinite   allocation)

limit_value   -   Unlimited   for   resources   and   locks.   This   can   be   greater
than   the   initial   allocation   value   (UNLIMITED   for   infinite
limit).

26,
IMP-00003: 遇到 ORACLE 错误 959
ORA-00959: 表空?TBS_BSS'不存?br />q种cd的错误往往是因上有大字D,而大字段所在的表空间不存在。普通字D|可以导到不同名的表空间的?br />
27,
alter table USERS add  primary key (userid);//不好Q会自动生成U束名,不利于移植数?br />alter table USERS  add  constraint PK_USERS  primary key (userid);//ok.外键也是如此?br />
28,
INTERSECT 操作W用来返回两个查询中都存在的记录Q即q回两个查询l果的交集,前提是两个查询的列的数量和数据类型必d全相同?br />




leekiang 2007-07-15 03:15 发表评论
]]>取最新的几条记录(及rownum的解?http://m.tkk7.com/leekiang/archive/2007/07/15/130326.htmlleekiangleekiangSat, 14 Jul 2007 19:12:00 GMThttp://m.tkk7.com/leekiang/archive/2007/07/15/130326.htmlhttp://m.tkk7.com/leekiang/comments/130326.htmlhttp://m.tkk7.com/leekiang/archive/2007/07/15/130326.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/130326.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/130326.html因ؓW一条不满L的话Q第二条的ROWNUM又成?Q所以永q没有满x件的记录。或者可以这L解:

ROWNUM是一个序列,是oracle数据库从数据文g或缓冲区中读取数据的序。它取得W一条记录则rownumgؓ1Q第二条?Q依ơ类推。如果你?gt;,>=,=,between...andq些条gQ因Z~冲区或数据文g中得到的W一条记录的rownum?Q则被删除,接着取下条,可是它的rownumq是1Q又被删除,依次cLQ便没有了数据?/p>

select rownum,c1 from t1 where rownum != 10 Z是返回前9条数据呢Q?br />Z?rownum >1 时查不到一条记录,?rownum >0 ?rownum >=1 却LC所以的记录
M时候想?rownum = 1 q条记录抛弃是不对的Q它在结果集中是不可或缺的,了rownum=1 像IZ楼阁一般不能存在,所以你?rownum 条g要包含到 1

但如果就是想要用 rownum > 10 q种条g的话话就要用嵌套语句,?rownum 先生成,然后对他q行查询?br />select *
from (selet rownum as rnQt1.* from a where ...)
where rn >10

一般代码中对结果集q行分页是q么q的?/p>

另外Qrowid ?rownum 虽都被称Z列,但它们的存在方式是不一LQrowid 可以说是物理存在的,表示记录在表I间中的唯一位置IDQ在DB中唯一。只要记录没被搬动过Qrowid是不变的。rowid 相对于表来说又像表中的一般列Q所以以 rowid 为条件就不会?rownum那些情况发生?/p>详见http://hi.baidu.com/jztchina/blog/item/4cca34971258fe6954fb96d6.html

Oracle在检索的时候,会首先把数据都检索出来,然后在排序段中进行排序。假如你有一个SQL语句如下所C?

SELECT
        EMP_NO
FROM
        EMP
WHERE
        ROWNUM 
< 10
ORDER BY
        EMP_NO

        在检索的时候,会首先把数据索出来,也就是把EMP表数据都索出来,然后再Order by排序操作。因为ROWNUM 数据是在排序前就索出来的了,所以不能利用ROWNUM来取得排序后的前10条操作。那么应该如何操作呢。其实很单,利用子查询,先排序,再取ROWNUM。如下所C?/p>

SELECT
        EMP_NO
FROM
        (
        
SELECT 
                EMP_NO
        
FROM
                EMP
        
ORDER BY
                EMP_NO
        )
WHERE
        ROWNUM 
< 10


leekiang 2007-07-15 03:12 发表评论
]]>
触发?/title><link>http://m.tkk7.com/leekiang/archive/2007/07/14/130306.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Sat, 14 Jul 2007 14:35:00 GMT</pubDate><guid>http://m.tkk7.com/leekiang/archive/2007/07/14/130306.html</guid><wfw:comment>http://m.tkk7.com/leekiang/comments/130306.html</wfw:comment><comments>http://m.tkk7.com/leekiang/archive/2007/07/14/130306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/leekiang/comments/commentRss/130306.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/leekiang/services/trackbacks/130306.html</trackback:ping><description><![CDATA[create or replace trigger auth_secure <br>before insert or update or delete  <br>on auths //Ҏ表更新前触发<br>begin <br>if(to_char(sysdate,'DY')='SUN' <br>RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths'); <br>end if; <br>end <br><br>RAISE_APPLICATION_ERROR的错误代码在-20000?20999之间Q这样就不会?ORACLE 的Q何错误代码发生冲H?<br><br><font face=Verdana>止ddl操作<br>create or replace trigger ddl_deny<br>before create or alter or drop or truncate on database//pȝU别的触发器<br>declare<br>v_errmsg varchar2(100):= 'You have no permission to this operation';<br>begin<br>if ora_sysevent = 'CREATE' then<br>raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || v_errmsg);<br>elsif ora_sysevent = 'ALTER' then<br>raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || v_errmsg);<br>elsif ora_sysevent = 'DROP' then<br>raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || v_errmsg);<br>elsif ora_sysevent = 'TRUNCATE' then<br>raise_application_error(-20001, ora_dict_obj_owner || '.' || ora_dict_obj_name || ' ' || v_errmsg);<br>end if;<br>exception<br>when no_data_found then<br>null;<br>end;<br></font>又一?<br>create or replace trigger his_trig_u<br>  after update ON MYDATA<br>  FOR EACH ROW<br>declare<br>  temp_count number;<br>BEGIN<br>  select count(*)<br>    into temp_count<br>    from DATAHIS t<br>   where t.num = :new.num<br>     and t.time = :new.time;<br>  if temp_count = 0 then<br>    insert into DATAHIS<br>      (uid, num, value, time)<br>    values<br>      (data_sql.nextval,<br>       :new.num,<br>       :new.value,<br>       :new.time);<br>  end if;<br>END;<br>begin前面出现的newQold不加冒号Qbegin和end之间出现的new和old都要在前面加?:"<br><br>用触发器完成动态数据的操作 <br>  在涉及如何实现动态库存的问题Ӟ可用触发器解冟뀂仓库有验收、出库、调拨、报废、退料、让售等q些数据必须与以前的库存相加减,才能完成动态库存操作。本文仅以验收单触发器ؓ例,其它的结构雷同。它们涉及到两个Qbi­_ysd(验收?QBj_kcb(当前库存?Q前者的表结构(rq(日期)Qysdh(验收单号)Q?bjbm(备g~码)Qyssl(验收数量)Qysdj(验收单h)Q,后者的表结构ؓQbjbmQ备件编码),dqkclQ当前库存量Q?dqkcjeQ当前库存金额)Q触发器如下Q?<br>  <br> create or replace trigger trig_ysd <br> after insert or update or delete on bj_ysd <br> for each row <br>  declare rq1 varchar2(8);rq2 varchar2(8); <br>  /*限于幅Qyssl1,yssl2,ysdj1,ysdj2,bjbm1,bjbm2,ii声明?/ <br>  if inserting or updating then <br>   rq1:=:new.rq;bjbm1:=:new.bjbm;yssl1:=:new.yssl; <br>   ysdj1:=:new.ysdj; <br>  <br>   select count(*) into ii from bj_dqkcb <br>   where bjbm=bjbm1; <br>  <br>   if ii=0 then <br>    insert into bj_dqkcb(bjbm,dqkcl,dqkcje) <br>    value(bjbm1,yssl1,ysdj1); <br>   else <br>    update bj_dqkcb <br>    set dqkcl=dqkcl+yssl1; <br>       dqkcje=dqkcje+yssl1*ysdj1; <br>   end if <br>  end if <br>  <br>  if deleting or updating then <br>   rq2:=:old.rq;<br>   bjbm2:=:old.bjbm;<br>   yssl2:=:old.yssl; <br>   ysdj2:=:old.ysdj; <br>   update bj_dqkcb <br>   set dqkcb=dqkcl-yssl2; <br>    dqkcje=dqkcje-yssl2*ysdj2 <br>  end if; <br> end ; <br> <img src ="http://m.tkk7.com/leekiang/aggbug/130306.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/leekiang/" target="_blank">leekiang</a> 2007-07-14 22:35 <a href="http://m.tkk7.com/leekiang/archive/2007/07/14/130306.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>别名Z么不能做条gQORA-00904: "CCC": 标识W无?/title><link>http://m.tkk7.com/leekiang/archive/2007/07/04/128185.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Wed, 04 Jul 2007 12:53:00 GMT</pubDate><guid>http://m.tkk7.com/leekiang/archive/2007/07/04/128185.html</guid><wfw:comment>http://m.tkk7.com/leekiang/comments/128185.html</wfw:comment><comments>http://m.tkk7.com/leekiang/archive/2007/07/04/128185.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/leekiang/comments/commentRss/128185.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/leekiang/services/trackbacks/128185.html</trackback:ping><description><![CDATA[<font face=Verdana>别名Z么不能做条gQORA-00904: "CCC": 标识W无效?/font> <p><font face="verdana, arial, helvetica" size=2><span id="bswaefo" class=javascript id=text6875927 style="FONT-SIZE: 12px">hQ?br>SQL> select jno,jname,nval,val,val-nval ccc from jj where ccc > 1;<br>出现错误:<br>ORA-00904: "CCC": 标识W无?br><br>Z么啊Q查资料select的用法里面没用查到?br>SQL> select jno,jname,nval,val,val-nval ccc from jj where (val-nval)> 1;<br>q样可以的Q我q想?ccc 排序Q也不行?br>哪位老大指点一下,多谢Q!</span></font></p> <p><font face="verdana, arial, helvetica" size=2><span id="wltixyg" class=javascript id=text6875965 style="FONT-SIZE: 12px">where子句中只能直接用栏位或者常量,而不能用栏位的别名Q除非这个别名来自子查询之中Q如Qselect .... from (select col1 ccc from table) where ccc > 1<br>而order by 则可以直接用别名,如select col1 ccc from table order by ccc<br>我想Q这和sql 的执行顺序是有关的,where中的部分先执?Q?gt; 如果有group byQ接着执行group by Q?gt; select中的函数计算、别名指定再q行 Q?gt; 最后order by<br>因此Q字Dc表辑ּ的别名在where子句和group by子句都是不能使用的,而在order by中不仅可以用别名,甚至可以直接使用栏位的下标来q行排序Q如Qorder by 1 desc,2 asc 呵呵</span></font></p> <img src ="http://m.tkk7.com/leekiang/aggbug/128185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/leekiang/" target="_blank">leekiang</a> 2007-07-04 20:53 <a href="http://m.tkk7.com/leekiang/archive/2007/07/04/128185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle的Number(p,s)的含?/title><link>http://m.tkk7.com/leekiang/archive/2007/07/03/127956.html</link><dc:creator>leekiang</dc:creator><author>leekiang</author><pubDate>Tue, 03 Jul 2007 13:35:00 GMT</pubDate><guid>http://m.tkk7.com/leekiang/archive/2007/07/03/127956.html</guid><wfw:comment>http://m.tkk7.com/leekiang/comments/127956.html</wfw:comment><comments>http://m.tkk7.com/leekiang/archive/2007/07/03/127956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/leekiang/comments/commentRss/127956.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/leekiang/services/trackbacks/127956.html</trackback:ping><description><![CDATA[<p>number(p,s) p:1~38  s:-84~127<br></p> <p>最高整C敎ͼp-s<br>s正数Q小数点双指定位置开始四舍五?br>s负数Q小数点左边指定位置开始四舍五?br>s?或者未指定Q四舍五入到最q整?br>当p于s时候,表示数字是绝对值小?的数字,且从数点右边开始的前s-p 位必L0Q保留s位小数?br><br>p>0Q对s?U情况:<br>1. s>0<br>_到小数点双s位,q四舍五入。然后检验有效数位是?lt;=pQ如果s>pQ小数点双臛_有s-p?填充?br>2. s<0<br>_到小数点左边s位,q四舍五入。然后检验有效数位是?lt;=p+|s|<br>比如<br><span style="FONT-SIZE: 10pt"><font color=#0000bb>Value     Datatype     Stored Value <br>123.2564    NUMBER    123.2564<br>1234.9876    NUMBER</font><font color=#007700>(</font><font color=#0000bb>6</font><font color=#007700>,</font><font color=#0000bb>2</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>1234.99<br>12345.12345    NUMBER</font><font color=#007700>(</font><font color=#0000bb>6</font><font color=#007700>,</font><font color=#0000bb>2</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>Error<br>1234.9876    NUMBER</font><font color=#007700>(</font><font color=#0000bb>6</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>1235<br>12345.345    NUMBER</font><font color=#007700>(</font><font color=#0000bb>5</font><font color=#007700>,-</font><font color=#0000bb>2</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>12300<br>1234567    NUMBER</font><font color=#007700>(</font><font color=#0000bb>5</font><font color=#007700>,-</font><font color=#0000bb>2</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>1234600<br>12345678    NUMBER</font><font color=#007700>(</font><font color=#0000bb>5</font><font color=#007700>,-</font><font color=#0000bb>2</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>Error<br>123456789    NUMBER</font><font color=#007700>(</font><font color=#0000bb>5</font><font color=#007700>,-</font><font color=#0000bb>4</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>123460000<br>1234567890    NUMBER</font><font color=#007700>(</font><font color=#0000bb>5</font><font color=#007700>,-</font><font color=#0000bb>4</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>Error<br>12345.58    NUMBER</font><font color=#007700>(*, </font><font color=#0000bb>1</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>12345.6<br>0.1    NUMBER</font><font color=#007700>(</font><font color=#0000bb>4</font><font color=#007700>,</font><font color=#0000bb>5</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>Error<br>0.01234567    NUMBER</font><font color=#007700>(</font><font color=#0000bb>4</font><font color=#007700>,</font><font color=#0000bb>5</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>0.01235<br>0.09999    NUMBER</font><font color=#007700>(</font><font color=#0000bb>4</font><font color=#007700>,</font><font color=#0000bb>5</font><font color=#007700>)    </font></span><span style="FONT-SIZE: 10pt"><font color=#0000bb>0.09999<br>0.099996    NUMBER</font><font color=#007700>(</font><font color=#0000bb>4</font><font color=#007700>,</font><font color=#0000bb>5</font><font color=#007700>)    </font><font font=""><><br><img height=223 alt="" src="http://m.tkk7.com/images/blogjava_net/leekiang/ora.png" width=514 border=0></font></span></p> <img src ="http://m.tkk7.com/leekiang/aggbug/127956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/leekiang/" target="_blank">leekiang</a> 2007-07-03 21:35 <a href="http://m.tkk7.com/leekiang/archive/2007/07/03/127956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>游标http://m.tkk7.com/leekiang/archive/2007/05/10/116448.htmlleekiangleekiangThu, 10 May 2007 04:38:00 GMThttp://m.tkk7.com/leekiang/archive/2007/05/10/116448.htmlhttp://m.tkk7.com/leekiang/comments/116448.htmlhttp://m.tkk7.com/leekiang/archive/2007/05/10/116448.html#Feedback0http://m.tkk7.com/leekiang/comments/commentRss/116448.htmlhttp://m.tkk7.com/leekiang/services/trackbacks/116448.htmlshow parameters open_cursors;

leekiang 2007-05-10 12:38 发表评论
]]>
վ֩ģ壺 ձҺ| AV벻| ŮڵƵվ| žƷƵվ| Ʒþһ| 18ֹվ| ޳ɵӰ߹ۿ| ձxxxxɫƵ| 69ӰԺ߹ۿ| ŮƵվ| ޾Ʒר| ޳˸| ߿Ƭ˳Ƶ| רһvav| ھƷƵѡ߹ۿ| ޹˾þþƷӰ| Ƶ| ŷ޿l| ձһƬ2019| ѾƷӰվ| AVרAVJULIA| 99ƵƷȫѹۿ| ޹va| ѶëƬƵ| ߿Ƭ˳Ƶ | AVAV˵| 99þùƷһ| þպƬ| ³˿Ƭһ߹ۿ| Ƶ97Ӱ| ޸Ůˮavվ| Ļ߲| һƵ߹ۿwww| ղ2021| ޹Ʒ˾þ| þùƷһ| ˳߲| av뾫ƷƷ| þòþüӰԺ| caopornѹ| һ91|