OracleË÷ÒýʹÓùæÔò
Ê×ÏÈ£¬ÎÒÃÇҪȷ¶¨Êý¾Ý¿âÔËÐÐÔÚºÎÖÖÓÅ»¯Ä£Ê½Ï£¬ÏàÓ¦µÄ²ÎÊýÊÇ£ºoptimizer_mode¡£¿ÉÔÚsvrmgrlÖÐÔËÐГshow parameter optimizer_mode"À´²é¿´¡£ORACLE V7ÒÔÀ´È±Ê¡µÄÉèÖÃÓ¦ÊÇ"choose"£¬¼´Èç¹û¶ÔÒÑ·ÖÎöµÄ±í²éѯµÄ»°Ñ¡ÔñCBO£¬·ñÔòÑ¡ÔñRBO¡£Èç¹û¸Ã²ÎÊýÉèΪ“rule”£¬Ôò²»ÂÛ±íÊÇ·ñ·ÖÎö¹ý£¬Ò»¸ÅÑ¡ÓÃRBO£¬³ý·ÇÔÚÓï¾äÖÐÓÃhintÇ¿ÖÆ¡£
¡¡¡¡Æä´Î£¬¼ì²é±»Ë÷ÒýµÄÁлò×éºÏË÷ÒýµÄÊ×ÁÐÊÇ·ñ³öÏÖÔÚPL/SQLÓï¾äµÄWHERE×Ó¾äÖУ¬ÕâÊǓִÐмƻ®”ÄÜÓõ½Ïà¹ØË÷ÒýµÄ±ØÒªÌõ¼þ¡£
¡¡¡¡µÚÈý£¬¿´²ÉÓÃÁËÄÄÖÖÀàÐ͵ÄÁ¬½Ó·½Ê½¡£ORACLEµÄ¹²ÓÐSort Merge Join£¨SMJ£©¡¢Hash Join£¨HJ£©ºÍNested Loop Join£¨NL£©¡£ÔÚÁ½ÕűíÁ¬½Ó£¬ÇÒÄÚ±íµÄÄ¿±êÁÐÉϽ¨ÓÐË÷Òýʱ£¬Ö»ÓÐNested Loop²ÅÄÜÓÐЧµØÀûÓõ½¸ÃË÷Òý¡£SMJ¼´Ê¹Ïà¹ØÁÐÉϽ¨ÓÐË÷Òý£¬×î¶àÖ»ÄÜÒòË÷ÒýµÄ´æÔÚ£¬±ÜÃâÊý¾ÝÅÅÐò¹ý³Ì¡£HJÓÉÓÚÐë×öHASHÔËË㣬Ë÷ÒýµÄ´æÔÚ¶ÔÊý¾Ý²éѯËٶȼ¸ºõûÓÐÓ°Ïì¡£
¡¡¡¡µÚËÄ£¬¿´Á¬½Ó˳ÐòÊÇ·ñÔÊÐíʹÓÃÏà¹ØË÷Òý¡£¼ÙÉè±íempµÄdeptnoÁÐÉÏÓÐË÷Òý£¬±ídeptµÄÁÐdeptnoÉÏÎÞË÷Òý£¬WHEREÓï¾äÓÐemp.deptno=dept.deptnoÌõ¼þ¡£ÔÚ×öNLÁ¬½Óʱ£¬emp×öΪÍâ±í£¬Ïȱ»·ÃÎÊ£¬ÓÉÓÚÁ¬½Ó»úÖÆÔÒò£¬Íâ±íµÄÊý¾Ý·ÃÎÊ·½Ê½ÊÇÈ«±íɨÃ裬emp.deptnoÉϵÄË÷ÒýÏÔÈ»ÊÇÓò»ÉÏ£¬×î¶àÔÚÆäÉÏ×öË÷ÒýȫɨÃè»òË÷Òý¿ìËÙȫɨÃè¡£
¡¡¡¡µÚÎ壬ÊÇ·ñÓõ½ÏµÍ³Êý¾Ý×Öµä±í»òÊÓͼ¡£ÓÉÓÚϵͳÊý¾Ý×Öµä±í¶¼Î´±»·ÖÎö¹ý£¬¿ÉÄܵ¼Ö¼«²îµÄ“Ö´Ðмƻ®”¡£µ«ÊDz»ÒªÉÃ×Ô¶ÔÊý¾Ý×Öµä±í×ö·ÖÎö£¬·ñÔò¿ÉÄܵ¼ÖÂËÀËø£¬»òϵͳÐÔÄÜϽµ¡£
¡¡¡¡µÚÁù£¬Ë÷ÒýÁÐÊÇ·ñº¯ÊýµÄ²ÎÊý¡£ÈçÊÇ£¬Ë÷ÒýÔÚ²éѯʱÓò»ÉÏ¡£
¡¡¡¡µÚÆß£¬ÊÇ·ñ´æÔÚDZÔÚµÄÊý¾ÝÀàÐÍת»»¡£È罫×Ö·ûÐÍÊý¾ÝÓëÊýÖµÐÍÊý¾Ý±È½Ï£¬ORACLE»á×Ô¶¯½«×Ö·ûÐÍÓÃto_number()º¯Êý½øÐÐת»»£¬´Ó¶øµ¼ÖµÚÁùÖÖÏÖÏóµÄ·¢Éú¡£
¡¡¡¡µÚ°Ë£¬ÊÇ·ñΪ±íºÍÏà¹ØµÄË÷ÒýËѼ¯×ã¹»µÄͳ¼ÆÊý¾Ý¡£¶ÔÊý¾Ý¾³£ÓÐÔö¡¢É¾¡¢¸ÄµÄ±í×îºÃ¶¨ÆÚ¶Ô±íºÍË÷Òý½øÐзÖÎö£¬¿ÉÓÃSQLÓï¾ä“analyze table xxxx compute statistics for all indexes;"¡£ORACLEÕÆÎÕÁ˳ä·Ö·´Ó³Êµ¼ÊµÄͳ¼ÆÊý¾Ý£¬²ÅÓпÉÄÜ×ö³öÕýÈ·µÄÑ¡Ôñ¡£
¡¡¡¡µÚ¾Å£¬Ë÷ÒýÁеÄÑ¡ÔñÐÔ²»¸ß¡£
¡¡¡¡ÎÒÃǼÙÉèµäÐÍÇé¿ö£¬Óбíemp£¬¹²ÓÐÒ»°ÙÍòÐÐÊý¾Ý£¬µ«ÆäÖеÄemp.deptnoÁУ¬Êý¾ÝÖ»ÓÐ4ÖÖ²»Í¬µÄÖµ£¬Èç10¡¢20¡¢30¡¢40¡£ËäÈ»empÊý¾ÝÐÐÓкܶ࣬ORACLEȱʡÈ϶¨±íÖÐÁеÄÖµÊÇÔÚËùÓÐÊý¾ÝÐоùÔÈ·Ö²¼µÄ£¬Ò²¾ÍÊÇ˵ÿÖÖdeptnoÖµ¸÷ÓÐ25ÍòÊý¾ÝÐÐÓëÖ®¶ÔÓ¦¡£¼ÙÉèSQLËÑË÷Ìõ¼þDEPTNO=10£¬ÀûÓÃdeptnoÁÐÉϵÄË÷Òý½øÐÐÊ
Ïà¹ØÎĵµ£º
extent--×îС¿Õ¼ä·ÖÅ䵥λ --tablespace management
block --×îСi/oµ¥Î» --segment management
create tablespace james
datafile '/export/home/oracle/oradata/james.dbf'
size 100M ¡¡¡¡¡¡¡¡¡¡¡¡--³õʼµÄÎļþ´óС¡¡
autoextend On¡¡¡¡¡¡¡¡ --×Ô¶¯Ôö³¤
next 10M¡ ......
1£ºÒÔÒ»¸öDBAÉí·ÖµÄÓû§µÇ½£¬´ò¿ªÒ»¸öÃüÁî´°¿Ú¡£Ö´ÐÐÃüÁî
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
from v$session s,v$lock l,dba_objects o
WHERE ......
/*sum()over()*/
--ĬÈϼÆËãËùÓÐÐеĺϼÆ
select t.empno,t.ename,t.sal,t.deptno,sum(t.sal)over()
from scott.emp t;
--partition by·Ö×éºÏ¼Æ
select t.empno,t.ename,t.sal,t.deptno,
sum(t.sal)over(partition by t.deptno)
from scott.emp t
order by t.deptno,t.sal;
......
String sql = "select t.FILE_INFO from T_FILE_DB_DETAIL t where t.id= "
+ fileDBUpDownDetail.getId() + " for update";
rs = stmt.executeQuery(sql);
if (rs.next()) {
// ÔÚweblogicϲ¿Êðʱ£¬ÐèÒª¸ü¸ÄΪBea We ......