??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩黄在线观看,高清av一区,777精品伊人久久久久大香线蕉http://www.aygfsteel.com/wangbing/category/39741.html本处文章除注明“{载”外均ؓ原创Q{载请注明出处?zh-cnWed, 17 Mar 2010 04:31:20 GMTWed, 17 Mar 2010 04:31:20 GMT60讲解大型数据库的设计原则与开发技?/title><link>http://www.aygfsteel.com/wangbing/archive/2010/03/16/315579.html</link><dc:creator>wangchangbing</dc:creator><author>wangchangbing</author><pubDate>Tue, 16 Mar 2010 05:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangbing/archive/2010/03/16/315579.html</guid><wfw:comment>http://www.aygfsteel.com/wangbing/comments/315579.html</wfw:comment><comments>http://www.aygfsteel.com/wangbing/archive/2010/03/16/315579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangbing/comments/commentRss/315579.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangbing/services/trackbacks/315579.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000; ">讲解大型数据库的设计原则与开发技?br /> 原文引自Qhttp://tech.ccidnet.com/art/1105/20080315/1391565_1.html<br /> 目前Q计机技术已l广泛地应用于国民经的各个领域当中Q在计算机硬件不断微型化的同Ӟ应用pȝ也逐渐向着复杂化、大型化的方向发展。数据库是整个系l的核心Q它的设计直接关pȝl执行的效率和系l的E_性。因此在软gpȝ开发中Q数据库设计应遵循必要的数据库范式理论,以减冗余、保证数据的完整性与正确性。只有在合适的数据库品上设计出合理的数据库模型,才能降低整个pȝ的编E和l护隑ֺQ提高系l的实际q行效率。虽然对于小目或中{规模的目开发h员可以很Ҏ地利用范式理计出一套符合要求的数据库,但对于一个包含大型数据库的Y仉目,必L一套完整的设计原则与技巧?br /> 一、成立数据小l?br /> 大型数据库数据元素多Q在设计上有必要成立专门的数据小l。由于数据库设计者不一定是使用者,对系l设计中的数据元素不可能考虑周全Q数据库设计出来后,往往难以扑ֈ所需的库表,因此数据组最好由熟悉业务的项目骨q组成?br /> 数据组的职能ƈ非是设计数据库,而是通过需求分析,在参考其他相似系l的基础上,提取pȝ的基本数据元素,担负Ҏ据库的审核。审核内容包括审核新的数据库元素是否完全、能否实现全部业务需求;Ҏ数据库(如果存在旧系l)的分析及数据转换Q数据库设计的审核、控制及必要调整?br /> 二、设计原?br /> Q.规范命名。所有的库名、表名、域名必遵循统一的命名规则,q进行必要说明,以方便设计、维护、查询?br /> Q.控制字段的引用。在设计Ӟ可以选择适当的数据库设计理工具Q以方便开发h员的分布式设计和数据组的集中审核管理。采用统一的命名规则,如果设计的字D已l存在,可直接引用;否则Q应重新设计?br /> Q.库表重复控制。在设计q程中,如果发现大部分字D都已存在,开发h员应怀疑所设计的库表是否已存在。通过对字D|在库表及相应设计人员的查询,可以认库表是否实重复?br /> Q.q发控制。设计中应进行ƈ发控Ӟ卛_于同一个库表,在同一旉只有一个h有控制权Q其他h只能q行查询?br /> Q.必要的讨论。数据库设计完成后,数据组应与相关人员q行讨论Q通过讨论来熟悉数据库Q从而对设计中存在的问题q行控制或从中获取数据库设计的必要信息?br /> Q.数据组的审核。库表的定版、修Ҏl都要通过数据组的审核,以保证符合必要的要求?br /> Q.头文件处理。每ơ数据修改后Q数据小l要对相应的头文件进行修改(可由理软g自动完成Q,q知相关的开发h员,以便q行相应的程序修攏V?br /> 三、设计技?br /> Q.分类拆分数据量大的表。对于经怋用的表(如某些参数表或代码对照表Q,׃其用频率很高,要尽量减表中的记录数量。例如,银行的户主̎表原来设计成一张表Q虽然可以方便程序的设计与维护,但经q分析发玎ͼ׃数据量太大,会媄响数据的q速定位。如果将户主账表分别设计为活期户主̎、定期户主̎及对公户主̎{,则可以大大提高查询效率?br /> Q.索引设计。对于大的数据库表,合理的烦引能够提高整个数据库的操作效率。在索引设计中,索引字段应挑选重复D的字段Q在对徏有复合烦引的字段q行索时Q应注意按照复合索引字段建立的顺序进行。例如,如果对一个5万多条记录的水表以日期和流水号为序建立复合索引Q由于在该表中日期的重复值接q整个表的记录数Q用水可行查询所用的旉接近Q秒Q而如果以水号ؓ索引字段建立索引q行相同的查询,所用时间不刎ͼU。因此在大型数据库设计中Q只有进行合理的索引字段选择Q才能有效提高整个数据库的操作效率?br /> Q.数据操作的优化。在大型数据库中Q如何提高数据操作效率值得x。例如,每在数据库流水表中增加一W业务,必M水控制表中取出水Pq将其流水号的数值加一。正常情况下Q单W操作的反应速度属正常Q但当用它进行批量业务处理时Q速度会明昑և慢。经q分析发玎ͼ每次Ҏ水控制表中的水h值加一旉要锁定该表,而该表却是整个系l操作的核心Q有可能在操作时被其他进E锁定,因而整个事务操作速度变慢。对q一问题的解决的办法是,Ҏ扚w业务的ȝ数批量申h水号QƈҎ水控制表q行一ơ更斎ͼ卛_提高扚w业务处理的速度。另一个例子是Ҏ表的优化。对于大扚w的业务处理,如果在插入数据库表时用普通的Qnsert语句Q速度会很慢。其原因在于Q每ơ插表都要进行一ơテ/Q操作,p较长的时间。改q后Q可以用Qͽt语句等~冲区Ş式等满页后再q行Q?Q操作,从而提高效率。对大的数据库表q行删除Ӟ一般会直接用Delete语句,q个语句虽然可以q行表操作Q但对大表却会因带来大事务而导致删除速度很慢甚至p|。解决的Ҏ是去掉事务,但更有效的办法是先进行Drop操作再q行重徏?br /> Q.数据库参数的调整。数据库参数的调整是一个经验不断积累的q程Q应由有l验的系l管理员完成。以Qnformix数据库ؓ例,记录锁的数目太少会造成锁表的失败;逻辑日志的文件数目太会造成插入大表p|{,q些问题都应Ҏ实际情况q行必要的调整?br /> Q.必要的工兗在整个数据库的开发与设计q程中,可以先开发一些小的应用工P如自动生成库表的头文件、插入数据的初始化、数据插入的函数装、错误跟t或自动昄{,以此提高数据库的设计与开发效率?br /> Q.避免长事务。对单个大表的删除或插入操作会带来大事务Q解决的办法是对参数q行调整Q也可以在插入时Ҏ件进行分剌Ӏ对于一个由一pd事务顺序操作共同构成的长事务(如银行交易系l的日终交易Q,可以׃pd操作完成整个事务Q但其缺Ҏ有可能因整个事务太大而不能完成Q或者,׃偶然的意外而事务重做所需的时间太ѝ较好的解决Ҏ是,把整个事务分解成几个较小的事务,再由应用E序控制整个pȝ的流E。这P如果其中某个事务不成功,则只需重做该事务,因而既可节U时_又可避免长事务?br /> Q.适当前。计机技术发展日新月异,数据库的设计必须h一定前L,不但要满_前的应用要求Q还要考虑未来的业务发展,同时必须有利于扩展或增加应用pȝ的处理功能?br /> 与小型数据库相比Q大型数据库的设计与开发要复杂得多Q因此在设计、开发过E中Q除了要遵@数据库范式理论、增加系l的一致性和完整性外Q还要在M上根据具体情况进行分布式设计Q紧紧把握集中控制、统一审核的基本原则,保证数据库设计结构紧凑、分布^衡、定位迅速。在数据库操作上Q要采用一定的技巧提高整个应用系l的执行效率Qƈ注意适当前Q以适应不断变化的应用及pȝ发展的要求。(</span></div> <img src ="http://www.aygfsteel.com/wangbing/aggbug/315579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangbing/" target="_blank">wangchangbing</a> 2010-03-16 13:09 <a href="http://www.aygfsteel.com/wangbing/archive/2010/03/16/315579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于oracle中varchar2的最大长?/title><link>http://www.aygfsteel.com/wangbing/archive/2010/03/15/315482.html</link><dc:creator>wangchangbing</dc:creator><author>wangchangbing</author><pubDate>Mon, 15 Mar 2010 06:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangbing/archive/2010/03/15/315482.html</guid><wfw:comment>http://www.aygfsteel.com/wangbing/comments/315482.html</wfw:comment><comments>http://www.aygfsteel.com/wangbing/archive/2010/03/15/315482.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangbing/comments/commentRss/315482.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangbing/services/trackbacks/315482.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000; ">关于 varchar2 的最大长?br /> varchar2有两个最大长度:一个是在字D늱?000Q一个是在PL/SQL中变量类?2767。今天犯了一个小错误Q就是函数的varchar2cd的返回值长度也?000Q而不是我以ؓ?2767?br />  <br /> 想了一下,q是一个比较容易出错的地方。因为在函数中我可以声明长度过4000的字W串变量Qƈ且将它作回|q里是不会提C编译错误的。这个函数^旉可以正常执行Q而一旦这个字W串长度过4000Q函数执行就会出错。所以这个问题虽然比较简单,仍然记录一下?br />  <br /> C:\Documents and Settings\yuechao.tianyc>sqlplus<br />  <br /> SQL*Plus: Release 10.2.0.1.0 - Production on 星期?nbsp;5?nbsp;5 17:15:59 2009<br />  <br /> Copyright (c) 1982, 2005, Oracle.  All rights reserved.<br />  <br /> 误入用户名:  test/test<br />  <br /> q接?<br /> Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production<br /> With the Partitioning, OLAP and Data Mining options<br />  <br /> SQL> create or replace function funny return varchar2<br />   2  is<br />   3    v_yct varchar2(32767);<br />   4  begin<br />   5    v_yct := rpad('a', 4001, 'b');<br />   6    return v_yct;<br />   7  end;<br />   8  /<br />  <br /> 函数已创建?br />  <br /> SQL> select funny from dual;<br /> select funny from dual<br />        *<br /> W?nbsp;1 行出现错?<br /> ORA-06502: PL/SQL: 数字或值错?nbsp;:  字符串缓冲区太小<br /> ORA-06512: ?nbsp;"TEST.FUNNY", line 6<br />  <br /> 本来以ؓ记录下来好。刚才跟一位同事讨Z一下,认ؓ有可能在schemaUvarchar2的长度限刉?000Q而在PL/SQL代码U的长度限制?2767。下面l测试:<br />  <br /> -- 1. 作ؓ函数入参的限制是32767<br /> SQL> create or replace function funny( p_char in varchar2 ) return number<br />   2  is<br />   3  begin<br />   4    return length(p_char);<br />   5  end;<br />   6  /<br />  <br /> 函数已创建?br />  <br /> SQL> declare<br />   2    v_char varchar2(32767);<br />   3  begin<br />   4    v_char := rpad('a', 32767, 'b');<br />   5    dbms_output.put_line(funny(v_char));<br />   6  end;<br />   7  /<br /> 32767<br />  <br /> PL/SQL q程已成功完成?br />  <br /> -- 2. 同样的函敎ͼ在schemaU和在PL/SQL代码U长度限制不?br /> SQL> select length(rpad('a', 4001, 'b')) from dual;<br />  <br /> LENGTH(RPAD('A',3276558,'B'))<br /> -----------------------------<br />                          4000<br />  <br /> SQL> begin<br />   2    dbms_output.put_line(length(rpad('a', 4001, 'b')));<br />   3  end;<br />   4  /<br /> 4001<br />  <br /> PL/SQL q程已成功完成?br />  <br />  <br /> 如果中间l果字符串长度超q限制会怎样呢?<br />  <br /> Q?Q在PL/SQL中,如果中间l果过32767Q没有媄响:<br />  <br /> SQL> declare<br />   2    v_char1 varchar2(32767);<br />   3    v_char2 varchar2(32767);<br />   4    v_char3 varchar2(10);<br />   5  begin<br />   6    v_char1 := lpad('a', 32767, 'a');<br />   7    v_char2 := lpad('b', 32767, 'b');<br />   8    v_char3 := substr(v_char1 || v_char2, 32763, 10);<br />   9    dbms_output.put_line(v_char3);<br />  10  end;<br />  11  /<br /> aaaaabbbbb<br />  <br /> PL/SQL q程已成功完成?br />  <br /> Q?Q在schemaU如果中间结果超q?000Q会提示错误Q?br />  <br /> SQL> select substr(rpad('a', 4000, 'a')||rpad('b', 4000, 'b'), 3996, 10) from dual;<br /> select substr(rpad('a', 4000, 'a')||rpad('b', 4000, 'b'), 3996, 10) from dual<br />                                                                          *<br /> W?nbsp;1 行出现错?<br /> ORA-01489: 字符串连接的l果q长<br />  <br />  <br /> 如果字符串长度超q限制怎么办?可以使用CLOBcd。比如最开始的那个例子Q可以将q回值改为CLOBcdQ?br />  <br /> SQL> create or replace function funny return clob<br />   2  is<br />   3    v_yct varchar2(32767);<br />   4  begin<br />   5    v_yct := rpad('a', 4001, 'b');<br />   6    return v_yct;<br />   7  end;<br />   8  /<br />  <br /> 函数已创建?br />  <br /> SQL> select funny from dual;<br />  <br /> FUNNY<br /> --------------------------------------------------------------------------------<br /> abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br />  <br /> SQL> set long 10000<br /> SQL> select funny from dual;<br /> FUNNY<br /> --------------------------------------------------------------------------------<br /> abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br /> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br /> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br /> bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb<br /> <img src="http://www.aygfsteel.com/Images/dot.gif" alt="" />.<br />  <br /> q样q回字符串的最大长度就?2767了?/span></div> <img src ="http://www.aygfsteel.com/wangbing/aggbug/315482.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangbing/" target="_blank">wangchangbing</a> 2010-03-15 14:29 <a href="http://www.aygfsteel.com/wangbing/archive/2010/03/15/315482.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]什么是savepointQ?/title><link>http://www.aygfsteel.com/wangbing/archive/2010/03/05/314557.html</link><dc:creator>wangchangbing</dc:creator><author>wangchangbing</author><pubDate>Fri, 05 Mar 2010 01:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangbing/archive/2010/03/05/314557.html</guid><wfw:comment>http://www.aygfsteel.com/wangbing/comments/314557.html</wfw:comment><comments>http://www.aygfsteel.com/wangbing/archive/2010/03/05/314557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangbing/comments/commentRss/314557.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangbing/services/trackbacks/314557.html</trackback:ping><description><![CDATA[<span style="font-family: verdana, sans-serif; font-size: 16px; line-height: 26px; ">什么是savepoint?<br /> Use the SAVEPOINT statement to identify a point in a transaction to which you can later roll back.<br /> 例如Q?nbsp;<br /> SQL> SELECT * FROM SCOTT.DEPT  ;<br /> <br /> DEPTNO DNAME          LOC<br /> ------ -------------- -------------<br />     10 ACCOUNTING     NEW YORK<br />     20 RESEARCH       DALLAS<br />     30 SALES          CHICAGO<br />     40 OPERATIONS     BOSTON<br /> SQL> UPDATE SCOTT.DEPT  SET loc ='a' WHERE loc='NEW YORK';<br /> <br /> 1 row updated<br /> SQL> SAVEPOINT a;<br /> <br /> Savepoint created<br /> SQL> UPDATE SCOTT.DEPT  SET loc ='b' WHERE loc='DALLAS';<br /> <br /> 1 row updated<br /> SQL> SAVEPOINT b;<br /> <br /> Savepoint created<br /> SQL> ROLLBACK TO SAVEPOINT a;<br /> <br /> Rollback complete<br /> SQL> COMMIT;<br /> <br /> Commit complete<br /> SQL> SELECT * FROM SCOTT.DEPT  ;<br /> <br /> DEPTNO DNAME          LOC<br /> ------ -------------- -------------<br />     10 ACCOUNTING     a<br />     20 RESEARCH       DALLAS<br />     30 SALES          CHICAGO<br />     40 OPERATIONS     BOSTON <br /> <br /> 事务中的Savepoints <br /> 你可以在事务上下文中声明UCؓsavepoint的中间标记。Savepoint一个长事务分隔的部分?nbsp;<br /> 使用savepointQ你可以在长事务中Q何点L标记你的操作。然后你可以选择回滚在事务中当前点之前、声明的savepoint之后执行的操作。比如,你可以在一长段复杂的更C使用savepointQ如果犯了个错,你不需要重新提交所有语句?nbsp;<br /> Savepoints在应用程序中同样有用。如果一个过E包含几个函敎ͼ那可以在每个函数前创Z个savepoint。如果一个函数失败,q回数据到函数开始前的状态ƈ在修改参数或执行一个恢复操作后重新q行函数非常容易?nbsp;<br /> 在回滚到一个savepoint后,Oracle释放p回滚的语句持有的锁。其他等待之前被锁资源的事务可以q行了。其他要更新之前被锁行的事务也可以执行?nbsp;<br /> 当一个事务回滚到一个savepointQ发生下列事Ӟ <br /> 1. Oracle仅回滚savepoint之后的语句?nbsp;<br /> 2. Oracle保留q一savepointQ但所有徏立于此后的savepoints丢失?nbsp;<br /> 3. Oracle释放在该savepoint后获得的所有表、行锁,但保留之前获得的所有锁?nbsp;<br /> 事务保持zdq可l箋?nbsp;<br /> 无论何时一个会话在{待事务Q到savepoint的回滚不会释放行锁。ؓ了确保事务如果无法获得锁也不会悬挂(hangQ,在执行UPDATE或DELETE前用FOR UPDATE ... NOWAIT。(q里指回滚的savepoint之前获得的锁。该savepoint后获得的行锁会被释放Q之后执行的语句也会被彻底回滚。) <br />   <br /> <br /> 注意Q?br /> 1.savepoint 名字保持唯一<br /> 2.如果后面新设|的一个savepoint的名字和前面的一个savepoint名字重复Q前一个savepoint被取消<br /> 3.讄savepoint后,事务可以l箋commit,全部回退或者回退到具体一个savepoints<br /> (Savepoint names must be distinct within a given transaction. If you create a second savepoint with the same identifier as an earlier savepoint, then the earlier savepoint is erased. After a savepoint has been created, you can either continue processing, commit your work, roll back the entire transaction, or roll back to the savepoint.) <br /> 4.撤销的处理必L在没有发出commit命o的前提下才能有效?br /> 如下Q在commit;后执行rollback to savepointp| <br /> SQL> SELECT * FROM SCOTT.DEPT  ;<br /> <br /> DEPTNO DNAME          LOC<br /> ------ -------------- -------------<br />     10 ACCOUNTING     NEW YORK<br />     20 RESEARCH       DALLAS<br />     30 SALES          CHICAGO<br />     40 OPERATIONS     BOSTON<br /> SQL> UPDATE SCOTT.DEPT  SET loc ='a' WHERE loc='NEW YORK';<br /> <br /> 1 row updated<br /> SQL> SAVEPOINT a;<br /> <br /> Savepoint created<br /> SQL> UPDATE SCOTT.DEPT  SET loc ='b' WHERE loc='DALLAS';<br /> <br /> 1 row updated<br /> SQL> SAVEPOINT b;<br /> <br /> Savepoint created<br /> SQL> COMMIT;<br /> <br /> Commit complete<br /> SQL> ROLLBACK TO SAVEPOINT a;<br /> <br /> ROLLBACK TO SAVEPOINT a<br /> <br /> ORA-01086: 从未创徏保留?'A'<br /> SQL> SELECT * FROM SCOTT.DEPT  ;<br /> <br /> DEPTNO DNAME          LOC<br /> ------ -------------- -------------<br />     10 ACCOUNTING     a<br />     20 RESEARCH       b<br />     30 SALES          CHICAGO<br />     40 OPERATIONS     BOSTON</span> <img src ="http://www.aygfsteel.com/wangbing/aggbug/314557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangbing/" target="_blank">wangchangbing</a> 2010-03-05 09:06 <a href="http://www.aygfsteel.com/wangbing/archive/2010/03/05/314557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle常用的监控语?/title><link>http://www.aygfsteel.com/wangbing/archive/2010/02/03/311821.html</link><dc:creator>wangchangbing</dc:creator><author>wangchangbing</author><pubDate>Wed, 03 Feb 2010 09:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangbing/archive/2010/02/03/311821.html</guid><wfw:comment>http://www.aygfsteel.com/wangbing/comments/311821.html</wfw:comment><comments>http://www.aygfsteel.com/wangbing/archive/2010/02/03/311821.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangbing/comments/commentRss/311821.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangbing/services/trackbacks/311821.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; ">--ҎFILE_ID & BLOCK_ID获得对象名称<br /> SELECT /*+ RULE*/ owner, segment_name, segment_type<br />   FROM dba_extents<br />  WHERE file_id = &file_id<br />    AND &block_id BETWEEN block_id AND block_id + blocks - 1;<br /> <br /> --Ҏ操作pȝPID,查询SESSION信息<br /> SELECT a.sid, a.serial#, b.spid, a.terminal, a.machine, a.program, a.osuser<br />   FROM v$session a, v$process b<br />  WHERE a.paddr = b.addr AND b.spid = '&SPID';<br /> <br /> --ҎSESSION SID,查询操作pȝPID<br /> SELECT a.sid, a.serial#, b.spid, a.terminal, a.machine, a.program, a.osuser<br />   FROM v$session a, v$process b<br />  WHERE a.paddr = b.addr AND a.sid = '&SID';<br /> <br /> --查询用户正在执行的SQL<br /> SELECT sql_text<br />   FROM v$sqltext<br />  WHERE hash_value = (SELECT sql_hash_value<br />                        FROM v$session<br />                       WHERE sid = &sid)<br />  ORDER BY piece;<br /> <br /> --查询当前的系l等待事?br /> SELECT *<br />   FROM v$session_wait<br />  WHERE event NOT LIKE '%SQL*Net%'<br />    AND event NOT LIKE '%rdbms%'<br />    AND event NOT LIKE '%timer%'<br />    AND event NOT LIKE '%jobq%'<br />  ORDER BY event, seconds_in_wait;<br /> <br /> --查询详细的当前系l等待事?br /> SELECT s.sid, s.username, w.seq#, w.event, w.p1text, w.p1, w.p2text, w.p2, w.p3text, w.p3,<br />        w.seconds_in_wait, w.state, s.logon_time, s.osuser, s.program<br />   FROM v$session s, v$session_wait w<br />  WHERE s.sid = w.sid<br />    AND w.event NOT LIKE '%SQL*Net%'<br />    AND w.event NOT LIKE '%rdbms%'<br />    AND w.event NOT LIKE '%timer%'<br />    AND w.event NOT LIKE '%jobq%'<br />  ORDER BY w.event, w.seconds_in_wait;<br /> <br /> --查询{待db file sequential/scattered read的Session正在执行的SQL<br /> SELECT s.sid, s.username, t.hash_value, t.piece, t.sql_text<br />   FROM v$session s, v$session_wait w, v$sqltext t<br />  WHERE s.sid = w.sid<br />    AND s.sql_hash_value = t.hash_value<br />    AND w.event IN ('db file sequential read', 'db file scattered read')<br />  ORDER BY s.sid, t.piece;<br /> <br /> --查询{待db file sequential/scattered read对应的数据库对象<br /> SELECT /*+ RULE*/ s.sid, s.username, w.seq#, w.event,<br />        d.segment_type, d.owner || '.' || d.segment_name AS segment_name,<br />        w.seconds_in_wait, w.state, s.logon_time<br />   FROM v$session s, v$session_wait w, dba_extents d<br />  WHERE s.sid = w.sid<br />    AND d.file_id = w.p1<br />    AND w.p2 BETWEEN d.block_id AND d.block_id + d.blocks - 1<br />    AND w.event IN ('db file sequential read', 'db file scattered read')<br />  ORDER BY w.event, segment_name;<br /> <br /> --查询DLOCK的SID,SPID,LOCKED_OBJECT,LOCK_TYPE{信?br /> SELECT /*+ RULE*/<br />        l.sid, p.spid, s.username,s.logon_time, s.osuser, s.program, l.type,<br />        CASE l.TYPE WHEN 'TM' THEN O.object_name WHEN 'TX' THEN '' END as OBJECT_NAME,<br />        DECODE (l.lmode, 0, '0=NONE', 1, '1=NULL', 2, '2=RS', 3, '3=RX', 4, '4=S', 5, '5=SRX', 6, '6=X') lmode,<br />        CASE l.request WHEN 0 THEN '' ELSE 'BLOCKED BY ' || l.id2 END as BLOCKED,<br />        CASE l.block WHEN 0 THEN '' ELSE l.id2 || ' IS BLOCKING' END as BLOCKING,<br />        l.request, l.ctime<br />   FROM v$lock l, v$session s, dba_objects o, v$process p<br />  WHERE l.type in ('TX', 'TM')<br />    AND s.paddr = p.addr<br />    AND l.sid = s.sid<br />    AND l.id1 = o.object_id(+)<br />  ORDER BY s.username, l.sid, l.ctime;<br /> <br /> --查询DDDL LOCK的详l信?br /> SELECT s.sid, p.spid, s.username, a.owner || '.' || a.NAME AS OBJECT_NAME,<br />        a.TYPE, a.mode_held, a.mode_requested, s.osuser, s.logon_time, s.program<br />   FROM dba_ddl_locks a, v$session s, v$process p<br />  WHERE s.sid = a.session_id<br />    AND s.paddr = p.addr<br />    AND (a.mode_held = 'Exclusive' OR a.mode_requested = 'Exclusive')<br />  ORDER BY s.USERNAME, a.NAME;<br /> <br /> --查询事务使用的回滚段<br /> SELECT s.username, s.sid, s.serial#, t.ubafil "UBA filenum",<br />        t.ubablk "UBA Block number", t.used_ublk "Number of undo Blocks Used",<br />        t.start_time, t.status, t.start_scnb, t.xidusn rollid, r.name rollname<br />   FROM v$session s, v$transaction t, v$rollname r<br />  WHERE s.saddr = t.ses_addr AND t.xidusn = r.usn;<br /> ####################################################################################################<br /> <br /> <br /> --查询LIBRARY CACHE PIN{待事g{待的对?br /> --视图~写:[K]ernel [G]eneric [L]ibrary Cache Manager [OB]ject<br /> SELECT /*+ RULE*/ addr, kglhdadr, kglhdpar, kglnaobj, kglnahsh, kglhdobj<br />   FROM x$kglob<br />  WHERE kglhdadr IN (SELECT p1raw<br />                       FROM v$session_wait<br />                      WHERE event LIKE '%library%');<br /> <br /> --查询LIBRARY CACHE PIN{待事g中持有被{待对象的SESSION信息<br /> --视图~写:[K]ernel [G]eneric [L]ibrary Cache Manager Object [P]i[N]s<br /> SELECT /*+ RULE*/ a.SID, a.username, a.program, b.addr, b.kglpnadr, b.kglpnuse,<br />        b.kglpnses, b.kglpnhdl, b.kglpnlck, b.kglpnmod, b.kglpnreq<br />   FROM v$session a, x$kglpn b<br />  WHERE a.saddr = b.kglpnuse<br />    AND b.kglpnmod <> 0<br />    AND b.kglpnhdl IN (SELECT p1raw<br />                         FROM v$session_wait<br />                        WHERE event LIKE '%library%');<br /> <br /> --查询LIBRARY CACHE PIN{待事g中持有被{待对象的SESSION执行的SQL语句<br /> SELECT sql_text<br />   FROM v$sqlarea<br />  WHERE (v$sqlarea.address, v$sqlarea.hash_value) IN (<br />           SELECT sql_address, sql_hash_value<br />             FROM v$session<br />            WHERE SID IN (<br />                     SELECT /*+ RULE*/ SID<br />                       FROM v$session a, x$kglpn b<br />                      WHERE a.saddr = b.kglpnuse<br />                        AND b.kglpnmod <> 0<br />                        AND b.kglpnhdl IN (SELECT p1raw<br />                                             FROM v$session_wait<br />                                            WHERE event LIKE '%library%')));<br /> <br /> --查询哪个SESSION正在使用某个对象(LIBRARY CACHE)<br /> SELECT DISTINCT s.sid,<br />                 s.username,<br />                 s.logon_time,<br />                 s.osuser,<br />                 s.program,<br />                 b.kglnahsh as SQL_HASH_VALUE,<br />                 b.kglnaobj as SQL_TEXT<br />   FROM v$session s, x$kglpn n, x$kglob b<br />  WHERE n.kglpnuse = s.saddr<br />    AND upper(b.kglnaobj) LIKE upper('%&OBJECT_NAME%')<br />    AND n.kglpnhdl = b.kglhdadr;<br /> <br /> --查询V$SESSION_WAIT用户PIN住了哪些对象(LIBRARY CACHE)<br /> SELECT DISTINCT s.sid,<br />                 s.username,<br />                 s.logon_time,<br />                 s.osuser,<br />                 s.program,<br />                 n.kglpnmod,<br />                 b.kglnahsh AS SQL_HASH_VALUE,<br />                 b.kglnaobj AS SQL_TEXT<br />   FROM v$session s, x$kglpn n, x$kglob b<br />  WHERE n.kglpnuse = s.saddr<br />    AND n.kglpnhdl = b.kglhdadr<br />    AND s.sid IN (SELECT sid<br />                    FROM v$session_wait<br />                   WHERE event NOT LIKE '%SQL*Net%'<br />                     AND event NOT LIKE '%rdbms%'<br />                     AND event NOT LIKE '%timer%'<br />                     AND event NOT LIKE '%jobq%')<br />  ORDER BY s.username;<br /> <br /> --查询哪些大对象被载入SHARED POOL时导致其它对象被老化<br /> SELECT s.sid, s.username, s.logon_time, s.osuser, s.program,<br />        k.ksmlrcom, k.ksmlrsiz, k.ksmlrnum, k.ksmlrhon, k.ksmlrses<br />   FROM x$ksmlru k, v$session s<br />  WHERE s.saddr = k.ksmlrses<br />    AND ksmlrsiz > 0;<br /> ####################################################################################################<br /> <br /> <br /> --查询Schema哪些表是全表扫描<br /> SELECT o.name, x.tch<br />   FROM obj$ o, x$bh x, dba_users u<br />  WHERE x.obj = o.dataobj#<br />    AND STANDARD.bitand(x.flag, 524288) > 0<br />    AND u.username = UPPER('&username')<br />  ORDER BY x.tch DESC;<br /> <br /> --查询低效率的SQL(BUFFER_GETS排序)<br /> SELECT *<br />   FROM (SELECT s.sid,<br />                b.spid,<br />                s.sql_hash_value,<br />                q.sql_text,<br />                q.executions,<br />                q.buffer_gets,<br />                ROUND(q.buffer_gets / q.executions) AS buffer_per_exec,<br />                ROUND(q.elapsed_time / q.executions) AS cpu_time_per_exec,<br />                q.cpu_time,<br />                q.elapsed_time,<br />                q.disk_reads,<br />                q.rows_processed<br />           FROM v$session s, v$process b, v$sql q<br />          WHERE s.sql_hash_value = q.hash_value<br />            AND s.paddr = b.addr<br />            AND s.status = 'ACTIVE'<br />            AND s.TYPE = 'USER'<br />            AND q.buffer_gets > 0<br />            AND q.executions > 0<br />          ORDER BY buffer_per_exec DESC)<br />  WHERE ROWNUM <= 10;<br /> ####################################################################################################<br /> <br /> <br /> --监控BufferCache命中?br /> SELECT a.value + b.value logical_reads, c.value phys_reads,<br />        ROUND (100 * (1 - c.value / (a.value + b.value)), 4) hit_ratio<br />   FROM v$sysstat a, v$sysstat b, v$sysstat c<br />  WHERE a.NAME = 'db block gets'<br />    AND b.NAME = 'consistent gets'<br />    AND c.NAME = 'physical reads';<br /> <br /> --监控LibraryCache命中?br /> SELECT SUM (pins) total_pins, SUM (reloads) total_reloads,<br />        SUM (reloads) / SUM (pins) * 100 libcache_reload_ratio<br />   FROM v$librarycache;<br /> <br /> --查询产生的跟t文件名<br /> SELECT p1.VALUE || '/' || p2.VALUE || '_ora_' || p.spid || '.trc' filename<br />   FROM v$process p, v$session s, v$parameter p1, v$parameter p2<br />  WHERE p1.NAME = 'user_dump_dest'<br />    AND p2.NAME = 'db_name'<br />    AND p.addr = s.paddr<br />    AND s.audsid = USERENV ('SESSIONID');<br /> <br /> --删除表中的重复记?br /> DELETE FROM table_name a<br />       WHERE ROWID ><br />                (SELECT MIN (ROWID)<br />                   FROM table_name b<br />                  WHERE b.pk_column_1 = a.pk_column_1<br />                    AND b.pk_column_2 = a.pk_column_2);</span> <img src ="http://www.aygfsteel.com/wangbing/aggbug/311821.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangbing/" target="_blank">wangchangbing</a> 2010-02-03 17:09 <a href="http://www.aygfsteel.com/wangbing/archive/2010/02/03/311821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>又回C从前http://www.aygfsteel.com/wangbing/archive/2010/02/02/311654.htmlwangchangbingwangchangbingTue, 02 Feb 2010 04:37:00 GMThttp://www.aygfsteel.com/wangbing/archive/2010/02/02/311654.htmlhttp://www.aygfsteel.com/wangbing/comments/311654.htmlhttp://www.aygfsteel.com/wangbing/archive/2010/02/02/311654.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/311654.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/311654.html

wangchangbing 2010-02-02 12:37 发表评论
]]>
存储q程事务控制http://www.aygfsteel.com/wangbing/archive/2010/01/26/310894.htmlwangchangbingwangchangbingTue, 26 Jan 2010 10:58:00 GMThttp://www.aygfsteel.com/wangbing/archive/2010/01/26/310894.htmlhttp://www.aygfsteel.com/wangbing/comments/310894.htmlhttp://www.aygfsteel.com/wangbing/archive/2010/01/26/310894.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/310894.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/310894.html存储q程里的事务操作Q?br /> create or replace procedure pr_mypro2(p_a in varchar2,p_b in varchar2,p_count out number)
temp varchar2(1000);   /**//*定义临时变量*/
is
begin
select code into p_count from table1 where a=p_a; /**//*查询q返回?/
temp := p_count;  /**//*返回Dl时变?/
savepoint point1;  /**//*保存?/
insert into table2(a,b)values(temp,p_b); /**//*时变量值添加到新表的字D?/
savepoint point2;
insert into 

 exception   
      when   others   then   
          rollback to savepoint point1;  /**//*异常处理Q保存点下面的操作都不会被执?/
         return;
end;
 
    保存?br /> (SAVEPOINT)是事务处理过E中的一个标志,与回滚命?ROLLBACK)l合使用Q主要的用途是允许用户某一D处理回滚而不必回滚整个事务?br />       如果定义了多个savepointQ当指定回滚到某个savepointӞ那么回滚操作回滚这个savepoint后面的所有操作(即后面可能标记了N个savepointQ?br /> 例如Q在一D处理中定义了五个savepointQ从W三个savepoint回滚Q后面的W四、第五个标记的操作都被回滚Q如果不使用ROLLBACK TO savepoint_name而用ROLLBACKQ将会滚整个事务处理?/span>

wangchangbing 2010-01-26 18:58 发表评论
]]>
[转]ODI定时dhttp://www.aygfsteel.com/wangbing/archive/2009/09/02/293530.htmlwangchangbingwangchangbingWed, 02 Sep 2009 01:44:00 GMThttp://www.aygfsteel.com/wangbing/archive/2009/09/02/293530.htmlhttp://www.aygfsteel.com/wangbing/comments/293530.htmlhttp://www.aygfsteel.com/wangbing/archive/2009/09/02/293530.html#Feedback1http://www.aygfsteel.com/wangbing/comments/commentRss/293530.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/293530.html我当时就是按照这个文章学会如何配|ODI的定时Q务的。具体地址Qhttp://www.dbform.com/html/2008/516.html


对于讄ODI的定时执行场景,需要启动Scheduler AgentQ在一个新的ODI安装完毕之后Q默认的odiparams.bat文g中设|的是连接DEMO环境的数据库q接配置Q如果我们在自己的数据库里创ZMaster Repository和Work RepositoryQ那么需要修改连接参数?br />
在我的测试环境中Q我使用的是自己机器上Oracle 11g数据库,实例名是orcl11gQ则需要做如下修改Q?br />
set ODI_SECU_DRIVER
=oracle.jdbc.driver.OracleDriver
set ODI_SECU_URL
=jdbc:oracle:thin:@localhost:1521:orcl11g
set ODI_SECU_USER
=snpm
set ODI_SECU_ENCODED_PASS
=b9yX4CpBkdmaP8Y3mYbaoye2p
set ODI_SECU_WORK_REP
=WORKREP1
set ODI_USER
=SUPERVISOR
set ODI_ENCODED_PASS
=hZypfAZQf.Yo8VWVI6HZzc

其中Q?br /> ODI_SECU_USER需要设|ؓ创徏Master Repository时候的用户名,在这里是snpm?br /> ODI_SECU_ENCODED_PASS需要用agent实用E序加密一下,用法是agent encode 
%PASSWORD%?br /> ODI_SECU_WORK_REP讄为创建Work Repository时候v的名字?br /> ODI_USER默认是SUPERVISORQ这是连接ODI的用户名?br /> ODI_ENCODED_PASS默认是SUNOPSISQ也需要用agent encode加密之后的倹{?br />
讄完毕Q启动Scheduler AgentQ会遇到下面的错误:
java.lang.Exception: Agent is not declared in Topology Manager

我们q需要在Topology Manager 
-> Physical Architecture -> Agents里面创徏一个AgentQ填写Agent的名字,监听的机器,端口。如果需要设|ScheduleQ还需要在Topology Manager -> Logical Architecture -> Agents里面再创Z个AgentQ将刚才创徏的Physical Agent和此Logical Agentl定在一赗?br />
然后Q在Designer 
-> Projects -> Scenarios -> Scheduling中创Z个执行计划,之后再次启动Scheduler AgentOK了?br />
C:\OraODI\oracledi\bin
>agentscheduler “-port=20910″ “-NAME=myFirstAgent”
A JDK is required to execute Web Services with OracleDI. You are currently using a JRE.
OracleDI: Starting Scheduler Agent …
Starting Oracle Data Integrator Agent…
Version : 
10.1.3.4.0 – 30/10/2007
Agent in scheduling mode
Number of items 
for scheduled executions:0
08/17/2008 02:58:09 PM(main): Server Launched
Aug 
172008 3:06:27 PM com.sunopsis.j.s a
INFO: Start Thread[
1001@2008/08/17_03:06:27:000,5,main] @ Aug 172008 3:06:27 PM

最后一行显CZ在Schedule中定义的计划被执行成功?br />
在Windows操作pȝ中可以把AgentE序讄为ServiceQ通过以下命o讄Q其中倒数两个参数分别为Physical Agent Name和Agent PortQ?br /> agentservice.bat 
--s myFirstAgent 20910

q行成功之后Q将会生OracleDI Agent Scheduler myFirstAgentq样命名的Windows服务?br />
通过以下命o可以删除创徏的服务:
agentservice.bat 
--s myFirstAgent





wangchangbing 2009-09-02 09:44 发表评论
]]>
oracle的flashback功能使用http://www.aygfsteel.com/wangbing/archive/2009/06/18/283053.htmlwangchangbingwangchangbingThu, 18 Jun 2009 07:00:00 GMThttp://www.aygfsteel.com/wangbing/archive/2009/06/18/283053.htmlhttp://www.aygfsteel.com/wangbing/comments/283053.htmlhttp://www.aygfsteel.com/wangbing/archive/2009/06/18/283053.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/283053.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/283053.htmlalter table table_name  enable row movement;

flashback table table_name to timestamp(to_date('20090618 13:00:00','yyyymmdd hh24:mi:ss'))

wangchangbing 2009-06-18 15:00 发表评论
]]>
oracle包——AJ_SHOWCASETABLEhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271972.htmlwangchangbingwangchangbingThu, 21 May 2009 06:39:00 GMThttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271972.htmlhttp://www.aygfsteel.com/wangbing/comments/271972.htmlhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271972.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/271972.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/271972.htmldrop package LQ / /*==============================================================...  阅读全文

wangchangbing 2009-05-21 14:39 发表评论
]]>
oracle包—?TRANSPORT_CHECKhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271971.htmlwangchangbingwangchangbingThu, 21 May 2009 06:38:00 GMThttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271971.htmlhttp://www.aygfsteel.com/wangbing/comments/271971.htmlhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271971.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/271971.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/271971.htmldrop package TRANSPORT_CHECK / /*=================================================...  阅读全文

wangchangbing 2009-05-21 14:38 发表评论
]]>
oracle包,动态执行sql—?TESTFUNINPROChttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271970.htmlwangchangbingwangchangbingThu, 21 May 2009 06:37:00 GMThttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271970.htmlhttp://www.aygfsteel.com/wangbing/comments/271970.htmlhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271970.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/271970.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/271970.htmldrop package TESTFUNINPROC
/

/*==============================================================*/
/* Database package: TESTFUNINPROC                              */
/*==============================================================*/
create or replace package TESTFUNINPROC as
   type OUTLIST 
is REF CURSOR;
   
function TESTFUN (TYPENUM IN varchar2return outlist;
   
procedure TESTPROC (TYPENUM IN varchar2,RESULT OUT outlist);
end TESTFUNINPROC;
/

create or replace package body TESTFUNINPROC as
   
function TESTFUN (TYPENUM IN varchar2return outlist as
   rc outlist;
     
Begin
           
open rc for
         
select * 
         
from GG_BOOK book
         
where book.BOOK_ZBLX = typeNum ;
         
return rc;
     
End;
   
procedure TESTPROC (TYPENUM IN varchar2,RESULT OUT outlist) as
   
Begin
            result :
= hblz_new.TestFunInProc.testFun(typeNum);
     
End;
end TESTFUNINPROC;
/

wangchangbing 2009-05-21 14:37 发表评论
]]>
oracle包—?CUT_COUNTSENDBOOKhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271969.htmlwangchangbingwangchangbingThu, 21 May 2009 06:36:00 GMThttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271969.htmlhttp://www.aygfsteel.com/wangbing/comments/271969.htmlhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271969.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/271969.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/271969.htmldrop package CUT_COUNTSENDBOOK / /*===============================================...  阅读全文

wangchangbing 2009-05-21 14:36 发表评论
]]>
oracle函数包—?COMMON_FUNCTIONhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271968.htmlwangchangbingwangchangbingThu, 21 May 2009 06:35:00 GMThttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271968.htmlhttp://www.aygfsteel.com/wangbing/comments/271968.htmlhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271968.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/271968.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/271968.htmldrop package COMMON_FUNCTION / /*=================================================...  阅读全文

wangchangbing 2009-05-21 14:35 发表评论
]]>
发一个很久以前的oracle包代码——CUT_COUNTQUOTAhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271966.htmlwangchangbingwangchangbingThu, 21 May 2009 06:30:00 GMThttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271966.htmlhttp://www.aygfsteel.com/wangbing/comments/271966.htmlhttp://www.aygfsteel.com/wangbing/archive/2009/05/21/271966.html#Feedback0http://www.aygfsteel.com/wangbing/comments/commentRss/271966.htmlhttp://www.aygfsteel.com/wangbing/services/trackbacks/271966.htmldrop package CUT_COUNTQUOTA / /*==================================================...  阅读全文

wangchangbing 2009-05-21 14:30 发表评论
]]>
ODI的一Ҏ?/title><link>http://www.aygfsteel.com/wangbing/archive/2009/05/21/271964.html</link><dc:creator>wangchangbing</dc:creator><author>wangchangbing</author><pubDate>Thu, 21 May 2009 06:25:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangbing/archive/2009/05/21/271964.html</guid><wfw:comment>http://www.aygfsteel.com/wangbing/comments/271964.html</wfw:comment><comments>http://www.aygfsteel.com/wangbing/archive/2009/05/21/271964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangbing/comments/commentRss/271964.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangbing/services/trackbacks/271964.html</trackback:ping><description><![CDATA[最q一直没有文章,今天发一点在工作中遇到的问题。主要是oracle的etl产品odi的相关问题,在OTN论坛上面很快扑ֈ了答案。下面抄录论坛里面的发帖和回复,减少我打字的数量?br /> <br /> <span style="font-family: tahoma; font-size: 11px; ">Hi,<br /> <br /> I have two tables with same structure. Now I want to union the data from these two table and load the result in target table. How can I achieve this functionality in ODI? In formatica this can be done using UNION Transformation but I don't know about ODI. <br /> Please help.<br /> <br /> Thanks,<br /> Monika<br /> <br /> <br /> Hi Monika,<br /> <br /> Union transformation cannot be done by Interface in ODI.<br /> <br /> There are three option in ODI to achieve your task<br /> <br /> 1) you need to create two interfaces like int1 and int2<br /> where int1 will transfer the data from tab1(source) to target table and int2 will transfer the tab2(source) to target table.<br /> <br /> 2) In second option, create a view for the union of tab1 and tab2 and use that view as source in the interafce to tranfer the union data to target. In this method we can achive this by single interface.<br /> <br /> 3) create the ODI procedure with a sql query of <strong>insert into target_table (select * from tab1 union select * from tab2)</strong>.<br /> <br /> Thanks,<br /> Madha.</span> <img src ="http://www.aygfsteel.com/wangbing/aggbug/271964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangbing/" target="_blank">wangchangbing</a> 2009-05-21 14:25 <a href="http://www.aygfsteel.com/wangbing/archive/2009/05/21/271964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">潭</a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">齭</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ന</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ߺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ԭ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>