??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美激情综合五月色丁香小说,国产精品三级在线,国产一区二区三区免费观看在线http://www.aygfsteel.com/stevenjohn/category/51103.html那些青春的岁?/description>zh-cnWed, 21 Aug 2013 02:47:19 GMTWed, 21 Aug 2013 02:47:19 GMT60Oracle行锁和表?http://www.aygfsteel.com/stevenjohn/archive/2013/08/20/403102.htmlabinabinTue, 20 Aug 2013 14:38:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/08/20/403102.htmlhttp://www.aygfsteel.com/stevenjohn/comments/403102.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/08/20/403102.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/403102.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/403102.htmlselect * from abin1 t where t.id=21 for update;

表?
lock table abin1 IN EXCLUSIVE MODE (nowait);

abin 2013-08-20 22:38 发表评论
]]>
ORACLE分页SQL语句http://www.aygfsteel.com/stevenjohn/archive/2013/05/10/399100.htmlabinabinFri, 10 May 2013 05:29:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/05/10/399100.htmlhttp://www.aygfsteel.com/stevenjohn/comments/399100.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/05/10/399100.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/399100.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/399100.html1.ҎROWID来分
select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from(select rowid rid,cid from

t_xiaoxi  order by cid desc) where rownum<10000) where rn>9980) order by cid desc;
执行旉0.03U?br />2.按分析函数来?br />select * from (select t.*,row_number() over(order by cid desc) rk from t_xiaoxi t) where rk<10000 and rk>9980;
执行旉1.01U?br />3.按ROWNUM来分
select * from(select t.*,rownum rn from(select * from t_xiaoxi order by cid desc) t where rownum<10000) where

rn>9980;执行旉0.1U?br />其中t_xiaoxi名称Qcid的关键字D,取按CID降序排序后的W?981-9999条记录,t_xiaoxi表有70000多条记录
个h感觉1的效率最好,3ơ之Q?最?/p>

abin 2013-05-10 13:29 发表评论
]]>
PRAGMA AUTONOMOUS_TRANSACTION(自治事务) http://www.aygfsteel.com/stevenjohn/archive/2013/03/08/396198.htmlabinabinFri, 08 Mar 2013 08:29:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/03/08/396198.htmlhttp://www.aygfsteel.com/stevenjohn/comments/396198.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/03/08/396198.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/396198.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/396198.htmlq段旉遇到一个问题,E序里明明插入了一条记录,但在后边的一DProcedure中却查不到刚刚插入的记录,最后发现这个Procedure的定义中加入?span style="font-weight: bold">PRAGMA AUTONOMOUS_TRANSACTION?/p>

PRAGMA AUTONOMOUS_TRANSACTION中文译q来?#8220;自治事务”Q翻译的q算好理解)Q对于定义成自治事务的ProcedureQ实际上相当于一D늋立运行的E序D,q段E序不依赖于ȝ序,?strong>不干?/strong>ȝ?/p>

自治事务的特?/h2>

W一,q段E序不依赖于原有MainE序Q比如MainE序中有未提交的数据Q那么在自治事务中是查找不到的?/p>

W二,在自M务中Qcommit或者rollback只会提交或回滚当前自M务中的DMLQ不会媄响到MainE序中的DML?/p>


Autonomous Transaction Demo 1

Without Pragma Autonomous Transaction

CREATE TABLE t (  
test_value VARCHAR2(25));  
  
CREATE OR REPLACE PROCEDURE child_block IS  
  
BEGIN  
  INSERT INTO t  
  (test_value)  
  VALUES  
  ('Child block insert');  
  COMMIT;  
END child_block;  
/  
  
CREATE OR REPLACE PROCEDURE parent_block IS  
  
BEGIN  
  INSERT INTO t  
  (test_value)  
  VALUES  
  ('Parent block insert');  
  
   child_block;  
  
   ROLLBACK;  
END parent_block;  
/  
  
-- run the parent procedure   
exec parent_block  
  
-- check the results   
SELECT * FROM t;  



Output:  
Parent block insert  
Child block insert  




With Pragma Autonomous Transaction

CREATE OR REPLACE PROCEDURE child_block IS  
  
PRAGMA AUTONOMOUS_TRANSACTION;  
  
BEGIN  
  INSERT INTO t  
  (test_value)  
  VALUES  
  ('Child block insert');  
  
  COMMIT;  
END child_block;  
/  
  
CREATE OR REPLACE PROCEDURE parent_block IS  
  
BEGIN  
  INSERT INTO t  
  (test_value)  
  VALUES  
  ('Parent block insert');  
  
   child_block;  
  
   ROLLBACK;  
END parent_block;  
/  
-- empty the test table   
TRUNCATE TABLE t;  
  
-- run the parent procedure   
exec parent_block;  
  
-- check the results   
SELECT * FROM t;  

 



Output:  
Child block insert  



Autonomous Transaction Demo 2

Without Pragma Autonomous Transaction
DROP TABLE t; 
 
CREATE TABLE t (testcol NUMBER); 
 
CREATE OR REPLACE FUNCTION howmanyrows RETURN INTEGER IS 
 i INTEGER; 
BEGIN 
  SELECT COUNT(*) 
  INTO i 
  FROM t; 
 
  RETURN i; 
END howmanyrows; 

 
CREATE OR REPLACE PROCEDURE testproc IS 
 a INTEGER; 
 b INTEGER; 
 c INTEGER; 
BEGIN 
  SELECT COUNT(*) 
  INTO a 
  FROM t; 
 
  INSERT INTO t VALUES (1); 
  COMMIT; 
 
  INSERT INTO t VALUES (2); 
  INSERT INTO t VALUES (3); 
 
  b := howmanyrows; 
 
  INSERT INTO t VALUES (4); 
  INSERT INTO t VALUES (5); 
  INSERT INTO t VALUES (6); 
  COMMIT; 
 
  SELECT COUNT(*) 
  INTO c 
  FROM t; 
 
  dbms_output.put_line(a); 
  dbms_output.put_line(b); 
  dbms_output.put_line(c); 
END testproc; 

 
set serveroutput on 
 
exec testproc 




Output:  
0  
3  
6  
Total execution time 2.782 sec.  




With Pragma Autonomous Transaction



Output:  
0  
1  
6  




转蝲h明出?http://blog.csdn.net/pan_tian/article/details/7675800






abin 2013-03-08 16:29 发表评论
]]>
pl/sql中按F8执行单行语句 http://www.aygfsteel.com/stevenjohn/archive/2013/01/29/394860.htmlabinabinTue, 29 Jan 2013 03:28:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/01/29/394860.htmlhttp://www.aygfsteel.com/stevenjohn/comments/394860.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/01/29/394860.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/394860.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/394860.html

pl/sql中设|?

tools->preferences->sql window->AutoSelect statement

然后光标攑֜一行,按F8可以了, 注意: 每个语句l尾q要分号标注一下!



abin 2013-01-29 11:28 发表评论
]]>
jdbc 操作oracle CLOB字段http://www.aygfsteel.com/stevenjohn/archive/2013/01/08/393991.htmlabinabinTue, 08 Jan 2013 14:00:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/01/08/393991.htmlhttp://www.aygfsteel.com/stevenjohn/comments/393991.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/01/08/393991.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/393991.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/393991.html//q个适用于oracle10,11Q以前oracle9操作CLOB字段相当的繁琐,记着导入驱动?span class="Apple-converted-space"> 
package com.abin.wto.dbs.oracle; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

public class OperateOracle { 
public static void main(String[] args) { 
Connection conn=null; 
PreparedStatement ps=null; 
ResultSet rs=null; 
try { 
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
String url="jdbc:oracle:thin:@localhost:1521:XE"; 
conn=DriverManager.getConnection(url,"abin","abin"); 
String sql="insert into bignumber values(?,?)"; 
ps=conn.prepareStatement(sql); 
ps.setInt(1, 1); 
oracle.sql.CLOB clob=oracle.sql.CLOB.createTemporary(conn, false, oracle.sql.CLOB.DURATION_SESSION); 
clob.open(oracle.sql.CLOB.MODE_READWRITE); 
clob.setString(3, "llll"); 
ps.setClob(2, clob); 
int result=ps.executeUpdate(); 
System.out.println("result="+result); 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 

} 











package com.abin.wto.dbs.oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import oracle.sql.CLOB;

public class OperateOracle {
 public static void main(String[] args) {
  Connection conn=null;
  PreparedStatement ps=null;
  ResultSet rs=null;
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
   String url="jdbc:oracle:thin:@localhost:1521:XE";
   conn=DriverManager.getConnection(url,"abin","abin");
   String sql="insert into bignumber values(?,?)";
   ps=conn.prepareStatement(sql);
   ps.setInt(1, 8888);
   java.sql.Clob  clob=oracle.sql.CLOB.createTemporary(conn, false, oracle.sql.CLOB.DURATION_SESSION);
   clob.setString(1, "55555555555555");
   ps.setClob(2, clob);
   int result=ps.executeUpdate();
   System.out.println("result="+result);
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   if(ps!=null){
    try {
     ps.close();
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
   try {
    CLOB.freeTemporary(null);
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }

}

 



abin 2013-01-08 22:00 发表评论
]]>
sql qo重复记录http://www.aygfsteel.com/stevenjohn/archive/2013/01/04/393780.htmlabinabinFri, 04 Jan 2013 14:51:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2013/01/04/393780.htmlhttp://www.aygfsteel.com/stevenjohn/comments/393780.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2013/01/04/393780.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/393780.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/393780.html删除重复的记录,只保留一条:
delete from abin1 t where rowid not in (select max(rowid) from abin1 s group by s.id1  );
delete from abin1 t where t.rowid not in (select min(s.rowid) from abin1 s where t.id1=s.id1 group by s.id1)
删除全部重复记录Q?br />delete from abin1 t where t.id1 in (select s.id1 from abin1 s group by s.id1 having count(s.id1)>1 );
delete from abin1 t where exists (select * from abin1 s where t.id1=s.id1 group by s.id1 having count(s.id1)>1)
取出有重复的记录Q没有重复的单条记录不取Q?br />select * from abin1 t where t.id1 in (select s.id1 from abin1 s group by s.id1 having(count(s.id1))>1 );
select * from abin1 t where exists (select * from abin1 s where s.id1=t.id1 group by s.id1 having(count(s.id1))>1);
删除重复记录Q保留一条)Q?br />delete from abin1 t where t.id1 not in(select max(s.id1) from abin1 s group by s.name1 having count(s.name1)>0);



abin 2013-01-04 22:51 发表评论
]]>
Oracle回滚D늚概念Q用法和规划及问题的解决http://www.aygfsteel.com/stevenjohn/archive/2012/12/14/392959.htmlabinabinThu, 13 Dec 2012 16:10:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/12/14/392959.htmlhttp://www.aygfsteel.com/stevenjohn/comments/392959.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/12/14/392959.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/392959.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/392959.html阅读全文

abin 2012-12-14 00:10 发表评论
]]>
一个非典型的ORA-01555的解?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/12/13/392957.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Thu, 13 Dec 2012 15:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/12/13/392957.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/392957.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/12/13/392957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/392957.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/392957.html</trackback:ping><description><![CDATA[<p>ORA-01555:快照q旧?nbsp;   一个对于Oracle DBA来说最l典问题?br />发生的根本原因:一致性读Z问题?nbsp;   </p> <p>看到|上有个同学QD例说明,觉得不错Q拿来用下:<br />假设有张表,叫table1Q里面有5000万行数据Q假N计全表扫?ơ需?个小Ӟ我们从过E来看:    <br />    <br />1、在1炚wQ有个用户A发出了select * from table1;此时不管来table1怎么变化Q正的l果应该是用户A会看到在1炚wq个时刻的内宏V这个是没有疑问的?nbsp;   <br />2、在1?0分,有个用户B执行了update命oQ更Ctable1表中的第4000万行的这条记录,q时Q用户A的全表扫描还没有到达W?000万条。毫无疑问,q个时候,W?000万行的这条记录是被写C回滚D里M的,我假设是回滚DRBS1Q如果用户A的全表扫描到达了W?000万行Q是应该会正的从回滚段RBS1中读取出1炚w时刻的内容的?nbsp;   <br />3、这Ӟ用户B他刚才做的操作commit了,但是q时Q系l仍然可以给用户A提供正确的数据,因ؓ那第4000万行记录的内容仍然还在回滚段RBS1里,pȝ可以ҎSCN来到回滚D里扑ֈ正确的数据,但是大家注意刎ͼq时记录在RBS1里的W?000万行记录已经发生了一炚w大的改变Q就是这个第4000万行的在回滚DRBS1里的数据有可能随时被覆盖掉,因ؓq条记录已经被提交了Q!Q?nbsp;   <br />4、由于用户A的查询时间O长,而业务在一直不断的q行QRBS1回滚D在被多个不同的tracnsaction使用着Q这个回滚段里的extent循环CW?000万行数据所在的extentQ由于这条记录已l被标记提交了,所以这个extent是可以被其他transaction覆盖掉的Q?nbsp;   <br />5、到??0分,用户A的查询终于到了第4000万行Q而这时已l出CW?条说的情况,需要到回滚DRBS1L数据Q但是已l被覆盖掉了Q于?1555出C?nbsp;   <br />    <br />q次出现的ORA-01555Q引L原因很特D?nbsp;   <br />报错是回滚段SYSSMU1有问?    <br />所以断定的是,q不是因为大量的dQ造成的一致性读错误Q而且因ؓ回滚D늚错误Q快照出现了问题?nbsp;   <br />    <br />首先观察下回滚段Q?nbsp;   <br />SQL> select segment_name,tablespace_name,status from dba_rollback_segs;    <br />发现表空间UNDOTBS1的回滚段_SYSSMU1$-10$都是online?nbsp;   <br />发现表空间UNDOTBS2的回滚段SYSSMU1是竟然是needs recovery,其他都是offline?nbsp;   <br />最有趣的是q个数据库指定的UNDO是UNDOTBS1QUNDOTBS2实际已经被弃用了?nbsp;   <br />    <br />试把该回滚Doffline后删除,但是提示非法?nbsp;   <br />重启数据库后该回滚段状态变成了availabe?nbsp;   <br />再次试offline后删除,q是提示正在使用?nbsp;   </p> <p> <br />用直接更新数据字典的Ҏ    <br />SQL>update undo$ set status$=2 where name='SYSSMU1';    <br />发现该回滚段状态变更ؓofflineQdrop掉即可?nbsp;   <br />ORA-1555不再出现?nbsp;   </p> <p><br />本篇文章来源?Linux公社|站(<a >www.linuxidc.com</a>)  原文链接Q?a >http://www.linuxidc.com/Linux/2012-10/73260.htm</a></p><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/392957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-12-13 23:28 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/12/13/392957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 正则表达式实?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/12/06/392533.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Thu, 06 Dec 2012 03:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/12/06/392533.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/392533.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/12/06/392533.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/392533.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/392533.html</trackback:ping><description><![CDATA[<div>1、oracle正则表达式很强大哟,L字符串的Q如果字W串开头和l尾存在"双引L话)起头和结双引?br />select regexp_replace('"1234"456"','^(")|(")$','') from dual;<br />2、过滤掉字段里面的所有大写字母Q大写字母通杀<br />select regexp_replace(t.address,'^[a-z]+|[A-Z]+$','') from abin7 t;</div><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/392533.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-12-06 11:42 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/12/06/392533.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 常用q接和用?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/12/05/392449.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Tue, 04 Dec 2012 16:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/12/05/392449.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/392449.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/12/05/392449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/392449.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/392449.html</trackback:ping><description><![CDATA[<div> <div>create table abin6(id integer,<br />name nvarchar2(100),<br />score integer,<br />constraint pk_abin6 primary key(id));<br /><br />create table abin7(id integer,<br />address nvarchar2(100),<br />sid integer,<br />constraint pk_abin7 primary key(id),<br />constraint fk_abin7 foreign key (sid) references abin6(id)<br />);</div><br /><br /><br />select * from abin6 t left join abin7 s on t.id=s.sid and t.id=1;<br />select * from abin6 t left join abin7 s on t.id=s.sid where t.id=1;<br />select * from abin6 t,abin7 s where t.id=s.sid(+) ;<br />select * from abin6 t,abin7 s where t.id(+)=s.sid;<br />select * from abin6 t,abin7 s where s.sid(+)=t.id;<br />select * from abin6 t,abin7 s where s.sid=t.id(+);<br />select * from abin6 t inner join abin7 s on t.id=s.sid;<br />select * from abin6 t union select * from abin7 s where exists (select * from abin6 k where s.sid=k.id and k.id<br />=1);<br />select * from abin6 t full join abin7 s on t.id=s.sid;<br />select * from abin7 s full join abin6 t on s.sid=t.id;<br />select * from abin6 natural join abin7;<br />select * from abin6 t cross join abin7;<br /><br />以下两句是等h询:<br /> <div>select * from abin6 t where id=1 or id=2;<br />select * from abin6 t where t.id=1 union all select * from abin6 s where s.id=2;<br /><br /><br />一。查N复记?br />1。查扑օ部重复记?br />select * from abin4 s where s.name in (select t.name from abin4 t <br />group by t.name having count(t.name)>1);<br />select * from abin4 s where exists (select * from abin4 t where t.name=s.name <br />group by t.name  having count(t.name)>1 );<br /><br />2。过滤重复记?只显CZ?<br />select * from abin4 s where s.id in (select max(id) from abin4 t group by t.name );<br />二。删除重复记?<br />1。删除全部重复记录(慎用Q?<br />Delete ?Where 重复字段 In (Select 重复字段 From ?Group By 重复字段 Having Count(*)>1)<br />2。保留一条(q个应该是大多数人所需要的 ^_^Q?br />Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)<br />注:此处保留ID最大一条记?br /><br /><br /><br /><br /><a >http://blog.csdn.net/csskysea/article/details/6987760</a></div></div><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/392449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-12-05 00:33 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/12/05/392449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 中union的用?http://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392446.htmlabinabinTue, 04 Dec 2012 15:26:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392446.htmlhttp://www.aygfsteel.com/stevenjohn/comments/392446.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392446.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/392446.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/392446.html

UNION 指o的目的是两?SQL 语句的结果合qv?可以查看你要的查询结?

例如:

SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales

注意:union用法?两个select语句的字D늱型匹?而且字段个数要相?如上面的例子,在实际的软g开发过E?会遇到更复杂的情?具体L下面的例?

select  '1' as type,FL_ID,FL_CODE,FL_CNAME,FLDA.FL_PARENTID from FLDA
WHERE ZT_ID=2006030002
union 
select  '2' as type,XM_ID,XM_CODE ,XM_CNAME ,FL_ID from XMDA
where exists (select * from (select  FL_ID from FLDA WHERE ZT_ID=2006030002 ) a where XMDA.fl_id=a.fl_id)
order by type,FL_PARENTID ,FL_ID

q个句子的意思是两个sql语句union查询出来,查询的条件就是看XMDA表中的FL_ID是否和主表FLDA里的FL_ID值相匚w,(也就是存?.

UNION在进行表链接后会{选掉重复的记录,所以在表链接后会对所产生的结果集q行排序q算Q删除重复的记录再返回结果?

在查询中会遇?UNION ALL,它的用法和union一?只不qunion含有distinct的功?它会把两张表了重复的记录L,而union all不会,所以从效率?union all 会高一?但在实际中用到的q不是很?

表头会用W一个连接块的字Dc。。。。。。。。?

而UNION ALL只是单的两个结果合q后p回。这P如果q回的两个结果集中有重复的数据,那么q回的结果集׃包含重复的数据了?

  从效率上_UNION ALL 要比UNION快很多,所以,如果可以认合ƈ的两个结果集中不包含重复的数据的话,那么׃用UNION ALLQ如下:

量使用union allQ因为union需要进行排序,去除重复记录Q效率低



abin 2012-12-04 23:26 发表评论
]]>
Oracle natural join(自然q接)http://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392444.htmlabinabinTue, 04 Dec 2012 15:22:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392444.htmlhttp://www.aygfsteel.com/stevenjohn/comments/392444.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/12/04/392444.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/392444.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/392444.html

虽然natural join(自然q接)实际上的用的比较,但实际上q个q接是非常有用的Q若能经怋用一下,实际上是非常方便的?/p>

自然q接是在两张表中L那些数据cd和列名都相同的字D,然后自动地将他们q接hQƈq回所有符合条件按的结果?/p>

来看一下自然连接的例子?/p>

Select emp.ename,dept.dname

From emp natural join dept;

q里我们q没有指定连接的条gQ实际上oracle为我们自作主张的,emp中的deptno和dept中的deptno做了q接?/p>

也就是实际上相当?/p>

Select emp.ename,dept.dname

From emp join dept on emp.deptno = dept.deptno;

因ؓq两张表的这两个字段deptno的类型个名称完全相同。所以用natural join时被自然的连接在一起了?/p>

另外Q?/p>

1.如果做自然连接的两个表的有多个字D都满有相同名UCcdQ那么他们会被作然连接的条g?/p>

2.如果自然q接的两个表仅是字段名称相同Q但数据cd不同Q那么将会返回一个错误?/p>

3.׃oracle中可以进行这U非常简单的natural joinQ我们在设计表时Q应该尽量在不同表中h相同含义的字D用相同的名字和数据类型。以方便以后使用natural join

最后我们在前面丄例子都得C下的l果Q?/p>

SQL> Select emp.ename,dept.dname

2 From emp natural join dept;

ENAME DNAME

——————– —————-

SMITH RESEARCH

ALLEN SALES

WARD SALES

JONES RESEARCH

MARTIN SALES

BLAKE SALES

CLARK ACCOUNTING

SCOTT RESEARCH

KING ACCOUNTING

TURNER SALES

ADAMS RESEARCH

JAMES SALES

FORD RESEARCH

MILLER ACCOUNTING



abin 2012-12-04 23:22 发表评论
]]>
oracle alter tablehttp://www.aygfsteel.com/stevenjohn/archive/2012/12/03/392358.htmlabinabinMon, 03 Dec 2012 02:51:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/12/03/392358.htmlhttp://www.aygfsteel.com/stevenjohn/comments/392358.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/12/03/392358.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/392358.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/392358.html 
Table created

 SQL> desc lee
Name  Type          Nullable Default Comments
----- ------------- -------- ------- --------
ID    NUMBER                                 
NAME  VARCHAR2(100) Y                        
SCORE NUMBER        Y                        
 
SQL> alter table lee add createtime date;
 
Table altered
 
SQL> desc lee
Name       Type          Nullable Default Comments
---------- ------------- -------- ------- --------
ID         NUMBER                                 
NAME       VARCHAR2(100) Y                        
SCORE      NUMBER        Y                        
CREATETIME DATE          Y                        
 
SQL> alter table lee modify createtime nvarchar2(100);
 
Table altered
 
SQL> desc lee
Name       Type           Nullable Default Comments
---------- -------------- -------- ------- --------
ID         NUMBER                                  
NAME       VARCHAR2(100)  Y                        
SCORE      NUMBER         Y                        
CREATETIME NVARCHAR2(100) Y                        
 
SQL> alter table lee rename column createtime to mytime;
 
Table altered
 
SQL> desc lee
Name   Type           Nullable Default Comments
------ -------------- -------- ------- --------
ID     NUMBER                                  
NAME   VARCHAR2(100)  Y                        
SCORE  NUMBER         Y                        
MYTIME NVARCHAR2(100) Y                        
 
SQL> alter table lee modify mytime date;
 
Table altered
 
SQL> desc lee
Name   Type          Nullable Default Comments
------ ------------- -------- ------- --------
ID     NUMBER                                 
NAME   VARCHAR2(100) Y                        
SCORE  NUMBER        Y                        
MYTIME DATE          Y                        
 
SQL> desc lee
Name   Type          Nullable Default Comments
------ ------------- -------- ------- --------
ID     NUMBER                                 
NAME   VARCHAR2(100) Y                        
SCORE  NUMBER        Y                        
MYTIME DATE          Y                         
                  
 
SQL> alter table lee rename column mytime to createtime;
 
Table altered
 
SQL> desc lee
Name       Type          Nullable Default Comments
---------- ------------- -------- ------- --------
ID         NUMBER                                 
NAME       VARCHAR2(100) Y                        
SCORE      NUMBER        Y                        
CREATETIME DATE          Y                         
 
SQL> alter table lee drop column createtime;
 
Table altered
 
SQL> desc lee
Name  Type          Nullable Default Comments
----- ------------- -------- ------- --------
ID    NUMBER                                 
NAME  VARCHAR2(100) Y                        
SCORE NUMBER        Y                        
 
SQL>

abin 2012-12-03 10:51 发表评论
]]>
ORACLE查看q修Ҏ大连接数http://www.aygfsteel.com/stevenjohn/archive/2012/10/31/390497.htmlabinabinWed, 31 Oct 2012 01:47:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/10/31/390497.htmlhttp://www.aygfsteel.com/stevenjohn/comments/390497.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/10/31/390497.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/390497.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/390497.html1. 查看processes和sessions参数

SQL> show parameter processes

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     1
db_writer_processes                  integer     1
job_queue_processes                  integer     10
log_archive_max_processes            integer     2
processes                            integer     150

 

SQL> show parameter sessions

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size           integer     0
java_soft_sessionspace_limit         integer     0
license_max_sessions                 integer     0
license_sessions_warning             integer     0
logmnr_max_persistent_sessions       integer     1
mts_sessions                         integer     165
sessions                             integer     170
shared_server_sessions               integer     165
SQL>

 

2. 修改processes和sessions?/p>

SQL> alter system set processes=300 scope=spfile;

pȝ已更攏V?/p>

SQL> alter system set sessions=335 scope=spfile;

pȝ已更攏V?/p>

3. 修改processes和sessions值必重启oracle服务器才能生?/p>

ORACLE的连接数(sessions)与其参数文g中的q程?process)有关Q它们的关系如下Q?/p>

sessions=(1.1*process+5)

 

 查询数据库当前进E的q接敎ͼ

 select count(*) from v$process;

  查看数据库当前会话的q接敎ͼ

  select count(*) from v$session;

  查看数据库的q发q接敎ͼ

  select count(*) from v$session where status='ACTIVE';

  查看当前数据库徏立的会话情况Q?/p>

  select sid,serial#,username,program,machine,status from v$session;

 查询数据库允许的最大连接数Q?/p>

  select value from v$parameter where name = 'processes';

  或者:show parameter processes;

  修改数据库允许的最大连接数Q?/p>

  alter system set processes = 300 scope = spfile;

  (需要重启数据库才能实现q接数的修改)

  重启数据库:

  shutdown immediate;

  startup;

  查看当前有哪些用h在用数据:

  select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine

  from v$session a,v$sqlarea b

  where a.sql_address = b.address

  order by cpu_time/executions desc;

  备注QUNIX 1个用户session对应一个操作系lprocessQ而Windows体现在线E?/p>

  启动oracle

  su - oracle

  sqlplus system/pwd as sysdba   //q入sql

  startup                                      //启动数据?/p>

  lsnrctl start                               //启动监听

  sqlplus "/as sysdba"

  shutdown immediate;

  startup mount;

  alter database open;



abin 2012-10-31 09:47 发表评论
]]>
Oracle事务的ACIDҎ? http://www.aygfsteel.com/stevenjohn/archive/2012/10/21/389967.htmlabinabinSun, 21 Oct 2012 08:37:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/10/21/389967.htmlhttp://www.aygfsteel.com/stevenjohn/comments/389967.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/10/21/389967.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/389967.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/389967.html阅读全文

abin 2012-10-21 16:37 发表评论
]]>
Oracle type资料攉http://www.aygfsteel.com/stevenjohn/archive/2012/09/25/388459.htmlabinabinMon, 24 Sep 2012 16:37:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/25/388459.htmlhttp://www.aygfsteel.com/stevenjohn/comments/388459.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/25/388459.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/388459.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/388459.htmlhttp://blog.sina.com.cn/s/blog_6cfb6b090100ve92.html 

http://www.cnblogs.com/lanzi/archive/2011/03/30/1999790.html 




abin 2012-09-25 00:37 发表评论
]]>
Oracle 批处?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/17/387949.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Mon, 17 Sep 2012 15:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/17/387949.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387949.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/17/387949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387949.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387949.html</trackback:ping><description><![CDATA[<div>1、Connection创徏c?br /> <p>package com.abin.lee.db.oracle.batch;</p> <p>import java.sql.Connection;<br />import java.sql.DriverManager;</p> <p>public class OracleConnection {<br /> private static ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();<br /> private static final String URL="jdbc:oracle:thin:@localhost:1521:XE";<br /> private static final String USER="abin";<br /> private static final String PWD="abin";<br /> private static final String DRIVER="oracle.jdbc.driver.OracleDriver";<br /> <br /> public static Connection getConnection(){<br />  Connection conn=null;<br />  if(null==threadLocal.get()){<br />   try {<br />    Class.forName(DRIVER);<br />    conn=DriverManager.getConnection(URL, USER, PWD);<br />    threadLocal.set(conn);<br />   } catch (Exception e) {<br />    e.printStackTrace();<br />   }<br />  }else{<br />   conn=threadLocal.get();<br />  }<br />  return conn;<br /> }<br /> <br /> <br />}<br /></p><br /><br /><br /><br /><br />2、测试语?br /> <p>package com.abin.lee.db.oracle.batch;</p> <p>import java.sql.Connection;<br />import java.sql.PreparedStatement;<br />import java.sql.SQLException;<br />import java.text.SimpleDateFormat;</p> <p>import junit.framework.TestCase;</p> <p>public class OracleBatch extends TestCase {<br /> public void testinsert() throws SQLException {<br />  Connection conn = null;<br />  PreparedStatement ps = null;<br />  conn = OracleConnection.getConnection();<br />  String sql = "insert into abing(id,name) values (?,?)";<br />  ps = conn.prepareStatement(sql);<br />  System.out.println("start="<br />    + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")<br />      .format(new java.util.Date()));<br />  try {<br />   for (int i = 0; i <= 50000; i++) {<br />    ps.setObject(1, i);<br />    ps.setObject(2, "abin" + i);<br />    ps.addBatch();<br />    if (i % 10000 == 0) {<br />     // System.out.println("i="+i);<br />     ps.executeBatch();<br />     ps.clearBatch();<br />    }</p> <p>   }</p> <p>  } catch (SQLException e) {<br />   e.printStackTrace();<br />  }<br />  System.out.println("end="<br />    + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")<br />      .format(new java.util.Date()));</p> <p> }</p> <p>}<br /></p></div><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-17 23:15 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/17/387949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle function ?http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387721.htmlabinabinFri, 14 Sep 2012 06:21:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387721.htmlhttp://www.aygfsteel.com/stevenjohn/comments/387721.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387721.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/387721.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/387721.html阅读全文

abin 2012-09-14 14:21 发表评论
]]>
Java 接收Oracle函数游标q回l果?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387714.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Fri, 14 Sep 2012 04:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387714.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387714.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387714.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387714.html</trackback:ping><description><![CDATA[-- Create table<br />create table ABIN1<br />(<br />  ID1         NUMBER,<br />  NAME1       NVARCHAR2(100),<br />  CREATETIME1 DATE default sysdate<br />)<br /><br /><br /><br /> <p>create or replace function getFunction(myname varchar2)<br />return sys_refcursor<br />as</p> <p>v_sql varchar2(4000);<br />mylist sys_refcursor;<br />begin<br />       v_sql:='select * from abin1 where name1=:1';<br />       open myList for v_sql using myname;<br />       return(myList);<br />end;<br /><br /><br /><br /></p> <p>package com.abin.lee.db.oracle;</p> <p>import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.SQLException;</p> <p>public class OracleConnection {<br /> private static final String USER="abin";<br /> private static final String PWD="abin";<br /> private static final String URL="jdbc:oracle:thin:@localhost:1521:XE";<br /> private static final String DRIVER="oracle.jdbc.driver.OracleDriver";<br /> private static ThreadLocal<Connection> threadLocal=new ThreadLocal<Connection>(){<br />  protected Connection initialValue(){<br />   Connection conn=null;<br />   try {<br />    Class.forName(DRIVER);<br />    if(null==conn||conn.isClosed()){<br />     conn=DriverManager.getConnection(URL, USER, PWD);<br />    }<br />   } catch (Exception e) {<br />    e.printStackTrace();<br />   }<br />   return conn;<br />  }<br />  <br /> }; <br /> <br /> <br /> public static Connection getConnection() throws ClassNotFoundException, SQLException{<br />  Connection conn=null;<br />  if(threadLocal.get()==null){<br />   Class.forName(DRIVER);<br />   conn=DriverManager.getConnection(URL, USER, PWD);<br />   threadLocal.set(conn);<br />  }else {<br />   return threadLocal.get();<br />  }<br />  return conn;<br /> }</p> <p>}<br /></p> <p><br /><br /><br /></p> <p>package com.abin.lee.db.oracle;</p> <p>import java.sql.CallableStatement;<br />import java.sql.Connection;<br />import java.sql.ResultSet;</p> <p>import junit.framework.TestCase;<br />import oracle.jdbc.OracleTypes;</p> <p>public class GetFunctionResultSet extends TestCase{<br /> public void test(){<br />  Connection conn=null;<br />  CallableStatement cs=null;<br />  ResultSet rs=null;<br />  try {<br />   conn=OracleConnection.getConnection();<br /> /*此处是关键,不要写错了。第一个问号代表返回|getFunctionQ)括号里面是function的输入参数?/   <br />   cs=conn.prepareCall("{?=call getFunction(?)}");<br />   cs.registerOutParameter(1, OracleTypes.CURSOR);<br />   cs.setString(2, "a1");<br />   cs.execute();<br />   rs=(ResultSet)cs.getObject(1);<br />   while(rs.next()&&rs!=null){<br />    System.out.println("ID="+rs.getInt("id1"));<br />    System.out.println("NAME="+rs.getString("name1"));<br />    System.out.println("NAME="+rs.getString("createtime1"));<br />   }<br />   <br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  }<br />  /**<br />   * create or replace function getFunction(myname varchar2)<br />   return sys_refcursor<br />   as<br />   v_sql varchar2(4000);<br />   mylist sys_refcursor;<br />   begin<br />          v_sql:='select * from abin1 where name1=:1';<br />          open myList for v_sql using myname;<br />          return(myList);<br />   end;<br />   */<br />  <br /> }<br />}<br /></p> <p><br /><br /><br />参考资料:<br /><a >http://lanselixiangxc.bokee.com/267623.html</a></p><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-14 12:46 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 接收Oracle存储q程游标l果?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387712.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Fri, 14 Sep 2012 04:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387712.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387712.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387712.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387712.html</trackback:ping><description><![CDATA[-- Create table<br />create table ABIN1<br />(<br />  ID1         NUMBER,<br />  NAME1       NVARCHAR2(100),<br />  CREATETIME1 DATE default sysdate<br />)<br /><br />create or replace procedure getList(myname varchar2,mylist out sys_refcursor)<br />is<br />v_sql varchar2(4000);<br />begin<br />      v_sql:='select * from abin1 where name1=:1';<br />       open myList for v_sql using myname;<br />end;<br /><br /><br /><br /><br /> <p>package com.abin.lee.db.oracle;</p> <p>import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.SQLException;</p> <p>public class OracleConnection {<br /> private static final String USER="abin";<br /> private static final String PWD="abin";<br /> private static final String URL="jdbc:oracle:thin:@localhost:1521:XE";<br /> private static final String DRIVER="oracle.jdbc.driver.OracleDriver";<br /> private static ThreadLocal<Connection> threadLocal=new ThreadLocal<Connection>(){<br />  protected Connection initialValue(){<br />   Connection conn=null;<br />   try {<br />    Class.forName(DRIVER);<br />    if(null==conn||conn.isClosed()){<br />     conn=DriverManager.getConnection(URL, USER, PWD);<br />    }<br />   } catch (Exception e) {<br />    e.printStackTrace();<br />   }<br />   return conn;<br />  }<br />  <br /> }; <br /> <br /> <br /> public static Connection getConnection() throws ClassNotFoundException, SQLException{<br />  Connection conn=null;<br />  if(threadLocal.get()==null){<br />   Class.forName(DRIVER);<br />   conn=DriverManager.getConnection(URL, USER, PWD);<br />   threadLocal.set(conn);<br />  }else {<br />   return threadLocal.get();<br />  }<br />  return conn;<br /> }</p> <p>}<br /></p><br /><br /><br /><br /><br /> <p>package com.abin.lee.db.oracle;</p> <p>import java.sql.CallableStatement;<br />import java.sql.Connection;<br />import java.sql.ResultSet;</p> <p>import junit.framework.TestCase;<br />import oracle.jdbc.OracleTypes;</p> <p>public class GetProcedureResultSet extends TestCase{<br /> public void test(){<br />  Connection conn=null;<br />  CallableStatement cs=null;<br />  ResultSet rs=null;<br />  try {<br />   conn=OracleConnection.getConnection();<br />   cs=conn.prepareCall("{call getList(?,?)}");<br />   cs.setString(1, "a1");<br />   cs.registerOutParameter(2, OracleTypes.CURSOR);<br />   cs.execute();<br />   rs=(ResultSet)cs.getObject(2);<br />   while(rs.next()&&rs!=null){<br />    System.out.println("ID="+rs.getInt("id1"));<br />    System.out.println("NAME="+rs.getString("name1"));<br />    System.out.println("NAME="+rs.getString("createtime1"));<br />   }<br />   <br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  }<br />  <br />  <br /> }<br /> /**<br />  * create or replace procedure getList(myname varchar2,mylist out sys_refcursor)<br />  is<br />  v_sql varchar2(4000);<br />  begin<br />        v_sql:='select * from abin1 where name1=:1';<br />         open myList for v_sql using myname;<br />  end;<br />  */<br />}<br /></p><br /><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-14 12:42 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/14/387712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle表分?http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387569.htmlabinabinWed, 12 Sep 2012 08:59:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387569.htmlhttp://www.aygfsteel.com/stevenjohn/comments/387569.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387569.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/387569.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/387569.html此文从以下几个方面来整理关于分区表的概念及操?
        1.表空间及分区表的概念
        2.表分区的具体作用
        3.表分区的优缺?/div>
        4.表分区的几种cd及操作方?/div>
        5.对表分区的维护性操?
(1.) 表空间及分区表的概念
表空_
  是一个或多个数据文g的集合,所有的数据对象都存攑֜指定的表I间中,但主要存攄是表Q?所以称作表I间?/div>
 
分区表:
当表中的数据量不断增大,查询数据的速度׃变慢Q应用程序的性能׃下降Q这时就应该考虑对表q行分区。表q行分区后,逻辑上表仍然是一张完整的表,只是表中的数据在物理上存放到多个表I间(物理文g?Q这h询数据时Q不至于每次都扫描整张表?/div>
 
( 2).表分区的具体作用
Oracle的表分区功能通过改善可管理性、性能和可用性,从而ؓ各式应用E序带来了极大的好处。通常Q分区可以某些查询以及l护操作的性能大大提高。此?分区q可以极大简化常见的理dQ分区是构徏千兆字节数据pȝ或超高可用性系l的关键工具?
 
分区功能能够表、烦引或索引l织表进一步细分ؓD,q些数据库对象的D叫做分区。每个分区有自己的名Uͼq可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段Q这些段既可q行集体理Q也可单独管理,q就使数据库理员在理分区后的对象时有相当大的灉|性。但是,从应用程序的角度来看Q分区后的表与非分区表完全相同,使用 SQL DML 命o讉K分区后的表时Q无需M修改?/div>
 
什么时候用分Q?br />1、表的大超q?GB?/div>
2、表中包含历史数据,新的数据被增加都新的分区中?/div>
 
 (3).表分区的优缺?/div>
表分区有以下优点Q?
1、改善查询性能Q对分区对象的查询可以仅搜烦自己兛_的分区,提高索速度?/div>
2、增强可用性:如果表的某个分区出现故障Q表在其他分区的数据仍然可用Q?/div>
3、维护方便:如果表的某个分区出现故障Q需要修复数据,只修复该分区卛_Q?
4、均衡I/OQ可以把不同的分区映到盘以^衡I/OQ改善整个系l性能?/div>
 
~点Q?
分区表相养I已经存在的表没有Ҏ可以直接转化为分。不q?Oracle 提供了在UK定义表的功能?/div>
 
(4).表分区的几种cd及操作方?/div>
 一.范围分区Q?br />范围分区数据基于范围映到每一个分区,q个范围是你在创建分区时指定的分区键军_的。这U分区方式是最为常用的Qƈ且分区键l常采用日期。D个例子:你可能会销售数据按照月份进行分区?/div>
当用范围分区时Q请考虑以下几个规则Q?/div>
1、每一个分区都必须有一个VALUES LESS THEN子句Q它指定了一个不包括在该分区中的上限倹{分区键的Q何值等于或者大于这个上限值的记录都会被加入到下一个高一些的分区中?/div>
2、所有分区,除了W一个,都会有一个隐式的下限|q个值就是此分区的前一个分区的上限倹{?/div>
3、在最高的分区中,MAXVALUE被定义。MAXVALUE代表了一个不定的倹{这个值高于其它分Z的Q何分区键的|也可以理解ؓ高于M分区中指定的VALUE LESS THEN的|同时包括I倹{?/div>
例一Q?/div>
假设有一个CUSTOMER表,表中有数?00000行,我们此表通过CUSTOMER_IDq行分区Q每个分区存?00000行,我们每个分Z存到单独的表I间中,q样数据文g可以跨多个物理磁盘。下面是创徏表和分区的代码,如下Q?/div>
CREATE TABLE CUSTOMER
(
    CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,
    FIRST_NAME  VARCHAR2(30) NOT NULL,
    LAST_NAME   VARCHAR2(30) NOT NULL,
    PHONE        VARCHAR2(15) NOT NULL,
    EMAIL        VARCHAR2(80),
    STATUS       CHAR(1)
)
PARTITION BY RANGE (CUSTOMER_ID)
(
    PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,
    PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02
)
例二Q按旉划分
CREATE TABLE ORDER_ACTIVITIES
(
    ORDER_ID      NUMBER(7) NOT NULL,
    ORDER_DATE    DATE,
    TOTAL_AMOUNT NUMBER,
    CUSTOTMER_ID NUMBER(7),
    PAID           CHAR(1)
)
PARTITION BY RANGE (ORDER_DATE)
(
  PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACEORD_TS01,
  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,
  PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03
)
例三QMAXVALUE
CREATE TABLE RangeTable
(
  idd   INT PRIMARY KEY ,
  iNAME VARCHAR(10),
  grade INT 
)
PARTITION  BY  RANGE (grade)
(
      PARTITION  part1 VALUES  LESS  THEN (1000) TABLESPACE  Part1_tb,
      PARTITION  part2 VALUES  LESS  THEN (MAXVALUE) TABLESPACE  Part2_tb
);
 
?列表分区Q?/div>
该分区的特点是某列的值只有几个,Zq样的特Ҏ们可以采用列表分区?/div>
例一
CREATE TABLE PROBLEM_TICKETS
(
    PROBLEM_ID   NUMBER(7) NOT NULL PRIMARY KEY,
    DESCRIPTION  VARCHAR2(2000),
    CUSTOMER_ID  NUMBER(7) NOT NULL,
    DATE_ENTERED DATE NOT NULL,
    STATUS       VARCHAR2(20)
)
PARTITION BY LIST (STATUS)
(
      PARTITION PROB_ACTIVE   VALUES ('ACTIVE') TABLESPACE PROB_TS01,
      PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
例二
CREATE  TABLE  ListTable
(
    id    INT  PRIMARY  KEY ,
    name  VARCHAR (20),
    area  VARCHAR (10)
)
PARTITION  BY  LIST (area)
(
    PARTITION  part1 VALUES ('guangdong','beijing') TABLESPACE  Part1_tb,
    PARTITION  part2 VALUES ('shanghai','nanjing')  TABLESPACE  Part2_tb
);
)
 
?散列分区Q?br />q类分区是在列g使用散列法Q以定行攑օ哪个分区中。当列的值没有合适的条gӞ使用散列分区?/div>
散列分区为通过指定分区~号来均匀分布数据的一U分区类型,因ؓ通过在I/O讑֤上进行散列分区,使得q些分区大小一致?/div>
例一Q?
CREATE TABLE HASH_TABLE
(
  COL NUMBER(8),
  INF VARCHAR2(100)
)
PARTITION BY HASH (COL)
(
  PARTITION PART01 TABLESPACE HASH_TS01,
  PARTITION PART02 TABLESPACE HASH_TS02,
  PARTITION PART03 TABLESPACE HASH_TS03
)
写:
CREATE TABLE emp
(
    empno NUMBER (4),
    ename VARCHAR2 (30),
    sal   NUMBER
)
PARTITION BY  HASH (empno) PARTITIONS 8
STORE IN (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);
 
hash分区最主要的机制是Ҏhash法来计具体某条纪录应该插入到哪个分区?hash法中最重要的是hash函数QOracle中如果你要用hash分区Q只需指定分区的数量即可。徏议分区的数量采用2的nơ方Q这样可以得各个分区间数据分布更加均匀?/div>
 
?l合范围散列分区
q种分区是基于范围分区和列表分区Q表首先按某列进行范围分区,然后再按某列q行列表分区Q分Z中的分区被称为子分区?/div>
CREATE TABLE SALES
(
PRODUCT_ID VARCHAR2(5),
SALES_DATE DATE,
SALES_COST NUMBER(10),
STATUS VARCHAR2(20)
)
PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS)
(
   PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE rptfact2009
          (
              SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,
              SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009
          ),
   PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE rptfact2009
          (
              SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,
              SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009
          )
)
 
?复合范围散列分区Q?/div>
q种分区是基于范围分区和散列分区Q表首先按某列进行范围分区,然后再按某列q行散列分区?/div>
create table dinya_test
 (
 transaction_id number primary key,
 item_id number(8) not null,
 item_description varchar2(300),
 transaction_date date
 )
 partition by range(transaction_date)subpartition by hash(transaction_id)  subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03)
 (
     partition part_01 values less than(to_date(‘2006-01-01’,’yyyy-mm-dd’)),
     partition part_02 values less than(to_date(‘2010-01-01’,’yyyy-mm-dd’)),
     partition part_03 values less than(maxvalue)
 );
 
(5).有关表分区的一些维护性操作:
一、添加分?
以下代码lSALES表添加了一个P3分区
ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD'));
注意Q以上添加的分区界限应该高于最后一个分区界限?
以下代码lSALES表的P3分区d了一个P3SUB1子分?
ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES('COMPLETE');
二、删除分?
以下代码删除了P3表分区:
ALTER TABLE SALES DROP PARTITION P3;
在以下代码删除了P4SUB1子分区:
ALTER TABLE SALES DROP SUBPARTITION P4SUB1;
注意Q如果删除的分区是表中唯一的分区,那么此分区将不能被删除,要想删除此分区,必须删除表?
三、截断分?
截断某个分区是指删除某个分区中的数据Qƈ不会删除分区Q也不会删除其它分区中的数据。当表中即只有一个分区时Q也可以截断该分区。通过以下代码截断分区Q?
ALTER TABLE SALES TRUNCATE PARTITION P2;
通过以下代码截断子分区:
ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;
四、合q分?
合ƈ分区是将盔R的分区合q成一个分区,l果分区采用较高分区的界限Q值得注意的是Q不能将分区合ƈ到界限较低的分区。以下代码实CP1 P2分区的合qӞ
ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;
五、拆分分?
拆分分区一个分区拆分两个新分区Q拆分后原来分区不再存在。注意不能对HASHcd的分行拆分?
ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE('2003-02-01','YYYY-MM-DD')) INTO (PARTITION P21,PARTITION P22);
六、接合分?coalesca)
l合分区是将散列分区中的数据接合到其它分ZQ当散列分区中的数据比较大时Q可以增加散列分区,然后q行接合Q值得注意的是Q接合分区只能用于散列分Z。通过以下代码q行接合分区Q?
ALTER TABLE SALES COALESCA PARTITION;
七、重命名表分?
以下代码P21更改为P2
ALTER TABLE SALES RENAME PARTITION P21 TO P2;
八、相x?br />跨分区查?
select sum( *) from
(select count(*) cn from t_table_SS PARTITION (P200709_1)
union all
select count(*) cn from t_table_SS PARTITION (P200709_2)
);
查询表上有多分?
SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME='tableName'
查询索引信息
select object_name,object_type,tablespace_name,sum(value)
from v$segment_statistics
where statistic_name IN ('physical reads','physical write','logical reads')and object_type='INDEX'
group by object_name,object_type,tablespace_name
order by 4 desc
 
--昄数据库所有分的信息:
select * from DBA_PART_TABLES
 
--昄当前用户可访问的所有分信息:
select * from ALL_PART_TABLES
 
--昄当前用户所有分的信息:
select * from USER_PART_TABLES
 
--昄表分Z?昄数据库所有分的详l分Z息:
select * from DBA_TAB_PARTITIONS
 
--昄当前用户可访问的所有分的详l分Z息:
select * from ALL_TAB_PARTITIONS
 
--昄当前用户所有分的详l分Z息:
select * from USER_TAB_PARTITIONS
 
--昄子分Z?昄数据库所有组合分的子分区信息Q?
select * from DBA_TAB_SUBPARTITIONS
 
--昄当前用户可访问的所有组合分的子分区信息Q?
select * from ALL_TAB_SUBPARTITIONS
 
--昄当前用户所有组合分的子分区信息Q?
select * from USER_TAB_SUBPARTITIONS
 
--昄分区?昄数据库所有分的分区列信息Q?
select * from DBA_PART_KEY_COLUMNS
 
--昄当前用户可访问的所有分的分区列信息Q?
select * from ALL_PART_KEY_COLUMNS
 
--昄当前用户所有分的分区列信息Q?
select * from USER_PART_KEY_COLUMNS
 
--昄子分区列 昄数据库所有分的子分区列信息:
select * from DBA_SUBPART_KEY_COLUMNS
 
--昄当前用户可访问的所有分的子分区列信息:
select * from ALL_SUBPART_KEY_COLUMNS
 
--昄当前用户所有分的子分区列信息:
select * from USER_SUBPART_KEY_COLUMNS
 
--怎样查询出oracle数据库中所有的的分
select * from user_tables a where a.partitioned='YES'
 
--删除一个表的数据是
truncate table table_name;
 
--删除分区表一个分区的数据?
alter table table_name truncate partition p5;




http://tianzt.blog.51cto.com/459544/171759/

abin 2012-09-12 16:59 发表评论
]]>Oracle表分区和索引分区汇?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387568.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Wed, 12 Sep 2012 08:53:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387568.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387568.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387568.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387568.html</trackback:ping><description><![CDATA[<div class="wmqeeuq" id="cnblogs_post_body"> <p>Oracle表分区和索引分区汇?/p> <p>Z化数据库大表的管?例如在数据仓库中一般都是TBU的数量U?ORACLE8以后推出了分区选项.分区表分离在若于不同的表空间上,用分而治之的Ҏ来支撑元限膨胀的大?l大表在物理一U的可管理?大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能?/p> <p>分区的优点:</p> <p>1?nbsp; 增强可用性:如果表的一个分区由于系l故障而不能用,表的其余好的分区仍可以用;</p> <p>2?nbsp; 减少关闭旉Q如果系l故障只影响表的一部䆾分区Q那么只有这部䆾分区需要修复,矿能比整个大表修复花的时间更;</p> <p>3?nbsp; l护LQ如果需要得Q独产管理每个公区比理单个大表要轻村־多;</p> <p>4?nbsp; 均衡I/OQ可以把表的不同分区分配C同的盘来^衡I/O改善性能Q?/p> <p>5?nbsp; 改善性能Q对大表的查询、增加、修改等操作可以分解到表的不同分区来q行执行Q可使运行速度更快Q在数据仓库的TP查询特别有用?/p> <p>6?nbsp; 分区对用户透明Q最l用h觉不到分区的存在?/p> <p><br />create tablespace dw1</p> <p>datafile 'D:\oracle\oradata\ora9\dw11.ora' size 50M<br /> </p> <p>create tablespace dw2</p> <p>datafile 'D:\oracle\oradata\ora9\dw21.ora' size 50M</p> <p> </p> <p>一、按范围分区Q固名思义是按一定range来分区,看下面的例子:</p> <p>SQL> set linesize 1000</p> <p>SQL> create table niegc_part</p> <p>   (</p> <p>    part_id integer primary key,</p> <p>    part_date date,</p> <p>    part_dec varchar2(100)</p> <p>    )</p> <p>    partition by range(part_date)</p> <p>    (</p> <p>    partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace dw1,</p> <p>   partition part_02 values less than(to_date('2007-01-01','yyyy-mm-dd')) tablespace dw2,</p> <p>   partition part_03 values less than(maxvalue) tablespace dw1</p> <p>   );</p> <p> </p> <p>表已创徏?/p> <p> </p> <p>SQL></p> <p>SQL> insert into niegc_part values(1,to_date('2005-12-30','yyyy-mm-dd'),'less 20</p> <p>06-01-01');</p> <p> </p> <p>已创?1 行?/p> <p> </p> <p>SQL> commit;</p> <p> </p> <p>提交完成?/p> <p> </p> <p>SQL> insert into niegc_part values(2,to_date('2006-01-01','yyyy-mm-dd'),'equal 2</p> <p>007-01-01');</p> <p> </p> <p>已创?1 行?/p> <p> </p> <p>SQL> commit;</p> <p> </p> <p>提交完成?/p> <p> </p> <p>SQL> insert into niegc_part values(3,sysdate,'sysdate');</p> <p> </p> <p>已创?1 行?/p> <p> </p> <p>SQL> commit;</p> <p> </p> <p>提交完成?/p> <p> </p> <p>SQL></p> <p>SQL></p> <p>SQL> select * from niegc_part partition(part_01);</p> <p> </p> <p>   PART_ID PART_DATE  PART_DEC</p> <p>---------- ---------- ----------------------------------------------------------</p> <p>         1 30-12?05 less 2006-01-01</p> <p>SQL></p> <p> </p> <p>怿只要对oracle 有点?都能知道上面的range分区的意思了.</p> <p> </p> <p>两个字段以上的range分区大同异,L下面的例?</p> <p>create table niegc_part<br />(<br />part_id integer primary key,<br />part_date date,<br />part_dec varchar2(100)<br />)<br />partition by range(part_id,part_date)<br />(<br />partition part_01 values less than(1,to_date('2006-01-01','yyyy-mm-dd')) tablespace dw,<br />partition part_02 values less than(10,to_date('2007-01-01','yyyy-mm-dd')) tablespace dw,<br />partition part_03 values less than(maxvalue,maxvalue) tablespace dw<br />);<br /> </p> <p> </p> <p>二、Hash分区Q散列分区)?散列分区通过指定分区~号来均匀分布数据的一U分区类型,因ؓ通过在I/O讑֤上进行散列分区,使行q些分区大小一致。如part_id的数据根据自w的情况散列地存攑֜指定的三个表I间中:</p> <p>create table niegc_part</p> <p>(</p> <p>part_id integer primary key,</p> <p>part_date date,</p> <p>part_dec varchar2(100)</p> <p>)</p> <p>partition by hash(part_id)</p> <p>(</p> <p>partition part_01  tablespace dw1,</p> <p>partition part_02  tablespace dw2</p> <p>);</p> <p> </p> <p>pȝ按part_id记录散列地插入三个分区中,q里也就是二个不同的表空间中?/p> <p> </p> <p>三、复合分区。根据范围分区后Q每个分区内的数据再散列地分布在几个表空间中Q这h们就要用复合分区。复合分区是先用范围分区,然后在每个分区同再用散列分区的一U分区方法,如将part_date的记录按旉分区Q然后每个分Z的数据分三个子分区,数据散列地存储在三个指定的表空间中Q?/p> <p>create table niegc_part</p> <p>(</p> <p>part_id integer primary key,</p> <p>part_date date,</p> <p>part_dec varchar2(100)</p> <p>)</p> <p>partition by range(part_date) subpartition by hash(part_id)</p> <p>subpartitions 2 store in(dw1,dw2)</p> <p>(</p> <p>partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace dw1,</p> <p>partition part_02 values less than(to_date('2007-01-01','yyyy-mm-dd')) tablespace dw2,</p> <p>partition part_03 values less than(maxvalue) tablespace dw1</p> <p>);</p> <p><br />先根据part_dateq行范围分区Q然后根据交易的ID记录散列地存储在二个表I间中?/p> <p> </p> <p> </p> <p>四、烦引分区:</p> <p>注意Q?Ҏ个字D已做了分区了,是不允许再徏立烦引分区的。这一点要非常注意?br />全局索引建立时global子句允许指定索引的范围|q个范围gؓ索引字段的范围|</p> <p>create index idx_part_id on niegc_part(part_dec)</p> <p>global partition by range(part_dec)</p> <p>(</p> <p>partition idx_1 values less than('1000') tablespace dw,</p> <p>partition idx_2 values less than(maxvalue) tablespace dw</p> <p>)</p> <p> </p> <p>局部烦引分区的建立Q(注意Q表必须存在分区Q此分区的个数必d分区表的分区个数一P不然是徏立不h的)</p> <p>create index idx_part_id on niegc_part(part_dec)</p> <p>local</p> <p>(</p> <p>partition idx_1 tablespace dw1,</p> <p>partition idx_2 tablespace dw2</p> <p>)</p> <p> </p> <p>五、分区维护:(只对范围分区)</p> <p>Q?Q、增加一个分区:分区范围只能往上增Q不能增加一个少于原有的分区Q?/p> <p>alter table niegc_part add partition part_03 values less than(maxvalue)</p> <p>Q?Q、合q分区:Q合q后的分区必L下最后一个大value的分区)</p> <p>alter table niegc_part merge partitions part_02,part_03 into  partition part_03</p> <p>Q?Q、删除一个分区:</p> <p>alter table niegc_part drop partition part_01</p> <p> </p> <p><br />分区l护Q?只对范围分区) </p> <p>  Q?Q、增加一个分区:分区范围只能往上增Q不能增加一个少于原有的分区Q?</p> <p>  alter table tablename add partition new_partitionname values less than(maxvalue) </p> <p>  Q?Q、合q?拆分分区Q(合ƈ后的分区必须指下最后一个大value的分区) </p> <p>  alter table tablename merge partitions partitionname1,partitionname2 into partition partitionname2; </p> <p>  alter table tablename split partition partitionname1 at (xx) into ( </p> <p>  partition newpartition1 ,partition newpartition2) ; </p> <p>  注意Qxx为分割点 </p> <p>  Q?Q、删除一个分区: </p> <p>  alter table niegc_part drop partition partitionname; </p> <p>  (4)分区改?</p> <p>  alter table table_name rename Partition partition_name to partition_name </p> <p>  (5)分区改表空?</p> <p>  alter table table_name move partition_name </p> <p>  tablespace tablespace_name nologging </p> <p>  (6)查询特定分区 </p> <p>  select count(*) from table_name partition (partition_name); </p> <p>  (7)d数据 </p> <p>  insert into table_name select * from table_name partition (partition_name) </p> <p>  (8)分区表的导出 </p> <p>  userid=USER/PWD </p> <p>  buffer=102400 </p> <p>  tables=table_name:partition_name, </p> <p>  file=E:exp_paraxxx.dmp </p> <p>  log=E:exp_paraxxx.log </p> <p>  (9)技巧:删除表中一个字D?</p> <p>  alter table table_name set unused column column_name; </p> <p>  (10)加一个字D?</p> <p>  alter table table_name add column_name number(1);  <br /><br /><br /><br /><br /><a >http://www.cnblogs.com/rootq/archive/2008/12/24/1361631.html</a></p></div><img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-12 16:53 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/12/387568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle type(一)http://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387354.htmlabinabinSun, 09 Sep 2012 14:37:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387354.htmlhttp://www.aygfsteel.com/stevenjohn/comments/387354.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387354.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/387354.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/387354.html自定义类型:
create or replace type mytype as object(
id int,
name varchar(20)
)

使用刚刚定义的mytypeQ?br />create table MYTYPETABLE
(
  ID     NUMBER,
  PERSON MYTYPE
)


相表里面插入数据Q?br />insert into mytypetable values (1,mytype(2,'abin'))


查找数据Q?br />select t.id,t.person.id,t.person.name from mytypetable t



abin 2012-09-09 22:37 发表评论
]]>oracle sys_refcursor cursor http://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387347.htmlabinabinSun, 09 Sep 2012 11:55:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387347.htmlhttp://www.aygfsteel.com/stevenjohn/comments/387347.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/09/09/387347.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/387347.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/387347.html
-- Create table
create table ABIN
(
  ID         NVARCHAR2(50),
  NAME       VARCHAR2(30),
  SID        VARCHAR2(180),
  CREATETIME NVARCHAR2(20)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate indexes 
create index AID on ABIN (ID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create unique index ALLINDEX on ABIN (ID, NAME, SID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create unique index USID on ABIN (SID)
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );



-- Create table
create table LEE
(
  ID   NVARCHAR2(50) not null,
  NAME VARCHAR2(30),
  SID  VARCHAR2(180)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table LEE
  add constraint SSSSSID primary key (ID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );



-- Create table
create table LI
(
  ID   NVARCHAR2(50) not null,
  NAME VARCHAR2(30),
  SID  VARCHAR2(180)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table LI
  add constraint TTTID primary key (ID)
  using index 
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );



create or replace procedure getProcess(tdate date,tid nvarchar2,tname varchar2)
as
mydate date;
v_sql varchar2(4000);
ssid varchar2(180):='';
cursor mycur is select * from lee where name=tname;
myrow lee%rowtype;
shecur sys_refcursor;
myexception EXCEPTION;
mysqlcode nvarchar2(50);
mysqlerrm varchar2(180);
jdate abin.createtime%type;
type hcur is ref cursor ;
hecur hcur;
herow li%rowtype;
begin
     if(tid=1) then
               begin
                  select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
                  jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
                  dbms_output.put_line(jdate);
               end;
               if(to_char(tdate,'yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd'))then
                       begin
                            dbms_output.put_line('this current tname is: '||tname);
                            select sid into ssid from lee where name=tname;
                            dbms_output.put_line('this current sid is: '||ssid);
                            if(ssid is not null)then  
                                v_sql:='insert into abin (id,name,sid,createtime) values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                                dbms_output.put_line('v_sql='||v_sql);
                                execute immediate v_sql;
                                 dbms_output.put_line(' execute immediate v_sql='||v_sql);
                                commit;
                            end if;
                       end;
                       dbms_output.put_line('this input equals');
               end if;
               if(to_char(tdate,'yyyy-MM-dd')=to_char(sysdate-1,'yyyy-MM-dd'))then
                       begin
                            select sid into ssid from li where name=tname;
                            if(ssid is not null)then
                                v_sql:='insert into abin (id,name,sid,createtime)values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                                execute immediate v_sql;
                                commit;          
                            end if;       
                       end;
                       dbms_output.put_line(' this input not equals ');
               end if;
     end if;
     if(tid=2) then
          begin
                select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
                jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
                dbms_output.put_line(jdate);
          end;
          dbms_output.put_line('tid :'||tid);
          open mycur;
          loop
          fetch mycur into myrow;
                ssid:=myrow.sid;
                dbms_output.put_line('ssid :'||ssid);
                if(ssid is not null)then
                      v_sql:='insert into abin (id,name,sid,createtime)values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                      dbms_output.put_line('v_sql :'||v_sql);
                      execute immediate v_sql;
                      dbms_output.put_line('execute immediate v_sql :'||v_sql);
                      commit; 
                end if;
          exit when mycur%NOTFOUND;
          end loop;
          if mycur%isopen then
          close mycur;   
          end if; 
     end if;  
     if(tid=3) then
          begin
                select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
                jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
                dbms_output.put_line(jdate);
          end;
          v_sql:='select * from li where name=:1';
          open shecur for v_sql using tname;
               loop
               fetch shecur into myrow ;   
               ssid:=myrow.sid;
               if(ssid is not null)then
                    v_sql:='insert into abin (id,name,sid,createtime)values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                    execute immediate v_sql;
                    commit;
               end if;
               exit when shecur%NOTFOUND;
               end loop;
               if shecur%isopen then
                  close shecur;
               end if;
     end if;
     if(tid=4)then
          begin
              select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
              jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
              dbms_output.put_line(jdate);
          end;
          v_sql:='select * from li t where t.name=:1';
          open hecur for v_sql using tname;
          loop 
               fetch hecur into herow;
               ssid:=herow.sid;
               if(ssid is not null)then
                    v_sql:='insert into abin (id,name,sid,createtime)values ('''||tid||''','''||tname||''','''||ssid||''','''||jdate||''')';    
                    execute immediate v_sql;
                    commit;  
               end if;
          exit when hecur%NOTFOUND;
          end loop;
          if(hecur%isopen)then
              close hecur;
          end if;     
          
     end if;
     if(tid=5)then
         RAISE myexception;
     end if;
     exception   
         when myexception then
           mysqlcode:=SQLCODE;
           mysqlerrm:=SQLERRM; 
           begin
                select to_date(to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'yyyy-MM-dd HH24:mi:ss') into mydate from dual;
                jdate:=to_char(mydate,'yyyy-MM-dd HH24:mi:ss');
                dbms_output.put_line(jdate);
           end;
           begin
               v_sql:='insert into abin(id,name,sid,createtime) values ('''||mysqlcode||''','''||tname||''','''||mysqlerrm||''','''||jdate||''')';
               dbms_output.put_line('v_sql='||v_sql);
               execute immediate v_sql;
               commit;
           end;
           when others then
               rollback;
end;



试代码Q?br />
declare
mydate date:=to_date('2012-09-09','yyyy-MM-dd');
tid nvarchar2(50):='4';
tname varchar2(30):='abin';
begin
       getProcess(mydate,tid,tname);
end;



abin 2012-09-09 19:55 发表评论
]]>Oracle 游标q回l果?/title><link>http://www.aygfsteel.com/stevenjohn/archive/2012/09/06/387204.html</link><dc:creator>abin</dc:creator><author>abin</author><pubDate>Thu, 06 Sep 2012 15:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/stevenjohn/archive/2012/09/06/387204.html</guid><wfw:comment>http://www.aygfsteel.com/stevenjohn/comments/387204.html</wfw:comment><comments>http://www.aygfsteel.com/stevenjohn/archive/2012/09/06/387204.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/stevenjohn/comments/commentRss/387204.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/stevenjohn/services/trackbacks/387204.html</trackback:ping><description><![CDATA[有俩U方?<br />一U是声明pȝ游标,一U是声明自定义游?然后后面操作一?参数cd?br />in out 或out<br />(1)声明个hpȝ游标.(推荐)<br />create or replace p_temp_procedure<br />(<br />    cur_arg out sys_refcursor;     --Ҏ1<br />)<br />begin<br />    open cur_arg for select * from tablename;<br />end<br />调用<br />declare<br />    cur_calling sys_refcursor;<br />begin<br />    p_temp_procedure(cur_calling);  --q样q个游标有g<br />    for rec_next in cur_calling loop<br />     ....<br />    end loop;<br />end;<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />create or replace procedure getList(id in varchar2,mycur out sys_refcursor)<br />is<br />v_sql varchar2(4000);<br />begin<br />dbms_output.put_line('call it success');<br />v_sql:='select * from userbean s where s.id=:1';<br />open mycur for v_sql using id;<br />commit;<br />end;<br /><br /><br /><br />create or replace procedure my_procedure<br />(mypageNo number,mypageSize number,myInfo_Cursor out sys_refcursor)<br />as<br />pageNO number;<br />pageSize number;<br /><br />begin <br />open myInfo_Cursor for <br />select * from product <br />where pid between 1 + (pageNo - 1) * pageSize and 4 + (pageNo - 1) * pageSize;<br /><br />end;<br /><br /><br /><br /><br />declare <br />my_cursor sys_refcursor;<br />begin<br />my_procedure(1,2,my_cursor);<br />for rec_next in my_cursor loop<br />dbms_output.put_line('pid:'||rec_next.pid||'  ptypeid:'||rec_next.ptypeid||'  proname:'||rec_next.proname||'  price:'||rec_next.price||'  pronum:'||rec_next.pronum);<br />end loop;<br />end;<img src ="http://www.aygfsteel.com/stevenjohn/aggbug/387204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/stevenjohn/" target="_blank">abin</a> 2012-09-06 23:30 <a href="http://www.aygfsteel.com/stevenjohn/archive/2012/09/06/387204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle sys_refcursorhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/15/385502.htmlabinabinTue, 14 Aug 2012 16:57:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/15/385502.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385502.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/15/385502.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385502.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385502.htmlcreate table ABING1
(
  ID         INTEGER not null,
  CREATETIME DATE default sysdate not null,
  FIRSTNAME  NVARCHAR2(100) not null,
  LASTNAME   CLOB not null,
  MIDDLENAME NCLOB not null
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table ABING1
  add constraint PK_ABING primary key (ID)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );




create or replace procedure abin55(abing in varchar2,abin out sys_refcursor)
as
begin
declare
createtime date:=to_date(abing,'yyyy:MM:dd HH24:MI:SS');
cursor mycur is select * from abing1 t where t.createtime=createtime;
abin mycur%rowtype;
begin
open mycur;
loop
     fetch mycur into abin;
     exit when mycur%NOTFOUND;
end loop;
close mycur;
end;
end;


abin 2012-08-15 00:57 发表评论
]]>
我的W一个oracle triggerhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/14/385434.htmlabinabinMon, 13 Aug 2012 16:01:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/14/385434.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385434.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/14/385434.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385434.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385434.html-- Create table
create table EMP
(
  ID         NUMBER,
  ENAME      VARCHAR2(50),
  EMPNO      VARCHAR2(50),
  SALARY     NUMBER(10),
  DEPTNO     VARCHAR2(50),
  CREATETIME DATE default sysdate
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );


建立历史表:
create table emp_his as select * from emp where 1=2



建立oracle触发器:
create or replace trigger tri_del_emp
before delete on emp
for each row
begin
insert into emp_his(id,ename,empno,salary,deptno,createtime) values
(:old.id,:old.ename,:old.empno,:old.salary,:old.deptno,:old.createtime);
end;


执行试操作Q?br />delete emp where id=8

q个时候,历史表,信息已经插入q去了,呵呵




abin 2012-08-14 00:01 发表评论
]]>
oracle function异常http://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385433.htmlabinabinMon, 13 Aug 2012 15:34:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385433.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385433.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385433.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385433.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385433.html建立异常表:

-- Create table
create table ORACLEEXCEPTION
(
  ID          VARCHAR2(36),
  CREATETIME  DATE,
  SQLCODE1    NVARCHAR2(300),
  SQLERRM1    NVARCHAR2(300),
  MYEXCEPTION NVARCHAR2(100)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

 

 

~写oracle--functionQ?/p>

create or replace function getabin(abin in varchar2)
return varchar2
is
result varchar2(50);
sqlcode2 nvarchar2(500):='';
sqlerrm2 nvarchar2(500):='';
myexception nvarchar2(500):='';
exception1 exception;
begin
if(abin is not null) then
select count(1) into result from bing1 t where t.name1 like abin;
return(result);
elsif(abin is null) then
result:='there is a defined exception';
raise exception1;
end if;

exception
when exception1 then
sqlcode2:=sqlcode;
sqlerrm2:=sqlerrm;
begin
insert into oracleexception(id,createtime,sqlcode1,sqlerrm1,myexception) values (sys_guid(),sysdate,sqlcode2,sqlerrm2,'exception1');
commit;
end;
return(result);
when others then
result:='there is a other exception';
sqlcode2:=sqlcode;
sqlerrm2:=sqlerrm;
begin
insert into oracleexception(id,createtime,sqlcode1,sqlerrm1,myexception) values (sys_guid(),sysdate,sqlcode2,sqlerrm2,'others');
commit;
end;
return(result);
end;

 

 

 

试oracle--function代码Q?/p>

declare 
ename varchar2(50):='';
result varchar2(50);
begin
result:=getabin(ename);
dbms_output.put_line(result);
end;

 



abin 2012-08-13 23:34 发表评论
]]>
oracle 存储q程异常Q触发器http://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385345.htmlabinabinSun, 12 Aug 2012 17:10:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385345.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385345.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/13/385345.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385345.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385345.htmlhttp://hi.baidu.com/mylin/blog/item/5a3ca6c2b321fd0c0ef4779b.html

ORACLE PL/SQL~程之八Q?

把触发器说?
http://www.cnblogs.com/huyong/archive/2011/04/27/2030466.html



abin 2012-08-13 01:10 发表评论
]]>
我写的oracle functionhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/12/385325.htmlabinabinSun, 12 Aug 2012 13:01:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/08/12/385325.htmlhttp://www.aygfsteel.com/stevenjohn/comments/385325.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/08/12/385325.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/385325.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/385325.htmlcreate or replace function getBin
return varchar2
is
result varchar2(50);
begin
select count(1) into result from bing1;
return(result);
end;

试代码Q?br />declare
result varchar2(50);
begin
result:=getBin;
dbms_output.put_line(result);
end;

oracle函数二:
create or replace function getBin3(ename in varchar2)
return varchar2
is
result varchar(50);
begin
select count(1) into result from bing1 t where t.name1 like '%'||ename||'%';
return(result);
end;

试代码二:
declare
result varchar2(50);
ename varchar2(10):='a';
begin
result:=getBin3(ename);
dbms_output.put_line(result);
end;




abin 2012-08-12 21:01 发表评论
]]>
վ֩ģ壺 ¡| ī| | | Ϸ| ֦| | ʯɽ| | | | ݳ| | ɽ| | Ϻӿ| ƽԭ| | | | ¡Ң| ƽ| | | | ϲ| | | ն| մ| ƽ| | | | ͩ| ƺ| ζ| | ¸| | |