1) È«±íɨÃè(Full Table Scans, FTS)
ΪʵÏÖÈ«±íɨÃ裬Oracle¶ÁÈ¡±íÖÐËùÓеÄÐУ¬²¢¼ì²éÿһÐÐÊÇ·ñÂú×ãÓï¾äµÄWHEREÏÞÖÆÌõ¼þÒ»¸ö¶à¿é¶Á²Ù×÷¿ÉÒÔʹһ´ÎI/OÄܶÁÈ¡¶à¿éÊý¾Ý¿é(db_block_multiblock_read_count²ÎÊýÉ趨)£¬¶ø²»ÊÇÖ»¶Áȡһ¸öÊý¾Ý¿é£¬Õ⼫´óµÄ¼õÉÙÁËI/O×Ü´ÎÊý£¬Ìá¸ßÁËϵͳµÄÍÌÍÂÁ¿£¬ËùÒÔÀûÓöà¿é¶ÁµÄ·½·¨¿ÉÒÔÊ®·Ö¸ßЧµØÊµÏÖÈ«±íɨÃ裬¶øÇÒÖ»ÓÐÔÚÈ«±íɨÃèµÄÇé¿öϲÅÄÜʹÓöà¿é¶Á²Ù×÷¡£ÔÚÕâÖÖ·ÃÎÊģʽÏ£¬Ã¿¸öÊý¾Ý¿éÖ»±»¶ÁÒ»´Î¡£
ʹÓÃFTSµÄǰÌáÌõ¼þ£ºÔڽϴóµÄ±íÉϲ»½¨ÒéʹÓÃÈ«±íɨÃ裬³ý·ÇÈ¡³öÊý¾ÝµÄ±È½Ï¶à£¬³¬¹ý×ÜÁ¿µÄ5% -- 10%£¬»òÄãÏëʹÓò¢Ðвéѯ¹¦ÄÜʱ¡£
ʹÓÃÈ«±íɨÃèµÄÀý×Ó£º¡¡
SQL> explain plan for select * from dual;
Query Plan SELECT STATEMENT[CHOOSE] Cost= TABLE ACCESS FULL DUAL
2) ͨ¹ýROWIDµÄ±í´æÈ¡(Table Access by ROWID»òrowid lookup)
ÐеÄROWIDÖ¸³öÁ˸ÃÐÐËùÔÚµÄÊý¾ÝÎļþ¡¢Êý¾Ý¿éÒÔ¼°ÐÐÔڸÿéÖеÄλÖã¬ËùÒÔͨ¹ýROWIDÀ´´æÈ¡Êý¾Ý¿ÉÒÔ¿ìËÙ¶¨Î»µ½Ä¿±êÊý¾ÝÉÏ£¬ÊÇOracle´æÈ¡µ¥ÐÐÊý¾ÝµÄ×î¿ì·½·¨¡£
ÕâÖÖ´æÈ¡·½·¨²»»áÓõ½¶à¿é¶Á²Ù×÷£¬Ò»´ÎI/OÖ»ÄܶÁȡһ¸öÊý¾Ý¿é¡£ÎÒÃǻᾳ£ÔÚÖ´Ðмƻ®Öп´µ½¸Ã´æÈ¡·½·¨£¬Èç ......
Èç¹ûtemp_t1²»´æÔÚ£¬
oracle:
create table temp_t1
as
select * from t1
sql server:
select * into temp_t1 from t1
Èç¹ûtemp_t1´æÔÚ£¬
oracle:
insert into table temp_t1
select * from t1
sql server:
insert into table temp_t1
select * from t1 ......
Èç¹ûtemp_t1²»´æÔÚ£¬
oracle:
create table temp_t1
as
select * from t1
sql server:
select * into temp_t1 from t1
Èç¹ûtemp_t1´æÔÚ£¬
oracle:
insert into table temp_t1
select * from t1
sql server:
insert into table temp_t1
select * from t1 ......
Ñ¡Ôñ10gÊÇÒòΪ¶ÔÍø¸ñ¼¼Êõ±È½ÏºÃÆæ£¬ºÃÏñ»¹Ã»µÃµ½¹ã·ºÓ¦Óã¬Ò²¾ÍÎÞËùνÓëÇ°Ãæ°æ±¾ÓкܴóÇø±ðÁË¡£
ÔÚѸÀ×ÉÏÏÂÁ˸öÈí¼þ£¬ÔËÐÐsqlplusw£¬È»ºóÕÕ×ÅÊ飬¿ñÇÃÁËÒ»·£¬ÓÐÔÚÍøÉÏÏÂÁ˸öÊÓÆµ½Ì³Ì£¨MLDNħÀֿƼ¼_Oracle¿ÎÌã©£¬½²µÃͦºÃµÄ£¬¾ÍÊÇʱ¼ä³¤Á˵㣬²»Èç¿´ÊéÀ´µÃ¿ì¡£·´ÕýÏÖÔÚÖ»ÊÇÏëÊìϤһÏ»ù±¾Óï¾ä¡£
¿´ÁËÁ½ÌìÊéÁË¡£Á˽âÁËһЩÊý¾Ý¿â»ù´¡ÖªÊ¶£¬¼òµ¥µÄ´æ´¢ºÍ¼ìË÷Êý¾ÝºÍһЩ´øWHEREµÄ²Ù×÷£¬SQLº¯Êý¡£
´òËãÕâ¸öÐÇÆÚ°ÑÊé¿´Í꣬²»Ê±µÄÕÕ×ÅÇÃÒ»±é£¬ÄªµÃÆäËû·¨×Ó¡£ÎÒÏÖÔÚ»¹Óò»µ½Êý¾Ý¿â£¬ÐÄÀï¿Õ¿ÕµÄ£¬¾ÍÀ´ÍæÍæ¡£µÈ¿´ÍêÁËÊéºóÔÙ¼ÌÐøÎÒµÄÐĵÃÌå»á¡£
½ñÌìÊǵÚÒ»ÌìÔÚÕâ¸ö²©¿ÍÉÏд¶«Î÷£¬ËùÒÔ»°¾Í¶àÁËЩ¡£°´ÄͲ»×¡°¡¡£¡£¡£
¾õµÃÓÐÓõģº
1.Êý¾Ý¿âÓëµç×ÓÊý¾Ý±íµÄÇø±ð£º
a£©¿É°üº¬´óÁ¿ÐУ¬µç×Ó±íµÄÐÐÊýÏÞÖÆÔÚ65536.
b£©ÔÊÐí¶àÓû§Í¬Ê±Ê¹Óã¬Ò»¸öÉè¼ÆÓÅÁ¼µÄÊý¾Ý¿â¿ÉÒÔͬʱÏìÓ¦Êýǧ£¨ÉõÖÁ°ÙÍò£©¸öÓû§µÄÇëÇó¡£
c£©°²È«ÐÔ£¬Êý¾Ý¿âϵͳÖÐËùÓÐÊý¾Ý¶¼ÊǾ¹ý¼ÓÃÜ´¦ÀíµÄ£¬°üÀ¨Óû§µÇ¼ʱÊý¾Ý¿âºÍÓû§¼ÆËã»úÖ®¼ä´«ÊäµÄÐÅÏ¢£¬Óû§»¹¿ÉÄܻᱻ¸³Óè·ÃÎÊÌØ¶¨ÎĵµµÄȨÏÞ¡£
d£©¹ØÁª£¬¹ØÏµÊý¾Ý¿â¡£
e£©È·±£Êý¾ÝÖÊÁ¿µÄÒ»Ð©Ô¼Êø£¬Éè¼ÆÊý¾Ý¿âʱ¶¨ÒåÒ»Ð©Ô¼ÊøÌõ¼þ£¬Ìá¸ßÓÐЧÐÔ¡£
2.SQL*Plus£¬ÓÉOracleÌṩ£ ......
Ñ¡Ôñ10gÊÇÒòΪ¶ÔÍø¸ñ¼¼Êõ±È½ÏºÃÆæ£¬ºÃÏñ»¹Ã»µÃµ½¹ã·ºÓ¦Óã¬Ò²¾ÍÎÞËùνÓëÇ°Ãæ°æ±¾ÓкܴóÇø±ðÁË¡£
ÔÚѸÀ×ÉÏÏÂÁ˸öÈí¼þ£¬ÔËÐÐsqlplusw£¬È»ºóÕÕ×ÅÊ飬¿ñÇÃÁËÒ»·£¬ÓÐÔÚÍøÉÏÏÂÁ˸öÊÓÆµ½Ì³Ì£¨MLDNħÀֿƼ¼_Oracle¿ÎÌã©£¬½²µÃͦºÃµÄ£¬¾ÍÊÇʱ¼ä³¤Á˵㣬²»Èç¿´ÊéÀ´µÃ¿ì¡£·´ÕýÏÖÔÚÖ»ÊÇÏëÊìϤһÏ»ù±¾Óï¾ä¡£
¿´ÁËÁ½ÌìÊéÁË¡£Á˽âÁËһЩÊý¾Ý¿â»ù´¡ÖªÊ¶£¬¼òµ¥µÄ´æ´¢ºÍ¼ìË÷Êý¾ÝºÍһЩ´øWHEREµÄ²Ù×÷£¬SQLº¯Êý¡£
´òËãÕâ¸öÐÇÆÚ°ÑÊé¿´Í꣬²»Ê±µÄÕÕ×ÅÇÃÒ»±é£¬ÄªµÃÆäËû·¨×Ó¡£ÎÒÏÖÔÚ»¹Óò»µ½Êý¾Ý¿â£¬ÐÄÀï¿Õ¿ÕµÄ£¬¾ÍÀ´ÍæÍæ¡£µÈ¿´ÍêÁËÊéºóÔÙ¼ÌÐøÎÒµÄÐĵÃÌå»á¡£
½ñÌìÊǵÚÒ»ÌìÔÚÕâ¸ö²©¿ÍÉÏд¶«Î÷£¬ËùÒÔ»°¾Í¶àÁËЩ¡£°´ÄͲ»×¡°¡¡£¡£¡£
¾õµÃÓÐÓõģº
1.Êý¾Ý¿âÓëµç×ÓÊý¾Ý±íµÄÇø±ð£º
a£©¿É°üº¬´óÁ¿ÐУ¬µç×Ó±íµÄÐÐÊýÏÞÖÆÔÚ65536.
b£©ÔÊÐí¶àÓû§Í¬Ê±Ê¹Óã¬Ò»¸öÉè¼ÆÓÅÁ¼µÄÊý¾Ý¿â¿ÉÒÔͬʱÏìÓ¦Êýǧ£¨ÉõÖÁ°ÙÍò£©¸öÓû§µÄÇëÇó¡£
c£©°²È«ÐÔ£¬Êý¾Ý¿âϵͳÖÐËùÓÐÊý¾Ý¶¼ÊǾ¹ý¼ÓÃÜ´¦ÀíµÄ£¬°üÀ¨Óû§µÇ¼ʱÊý¾Ý¿âºÍÓû§¼ÆËã»úÖ®¼ä´«ÊäµÄÐÅÏ¢£¬Óû§»¹¿ÉÄܻᱻ¸³Óè·ÃÎÊÌØ¶¨ÎĵµµÄȨÏÞ¡£
d£©¹ØÁª£¬¹ØÏµÊý¾Ý¿â¡£
e£©È·±£Êý¾ÝÖÊÁ¿µÄÒ»Ð©Ô¼Êø£¬Éè¼ÆÊý¾Ý¿âʱ¶¨ÒåÒ»Ð©Ô¼ÊøÌõ¼þ£¬Ìá¸ßÓÐЧÐÔ¡£
2.SQL*Plus£¬ÓÉOracleÌṩ£ ......
ιʶøÖªÐ£¬¹ûÈ»Èç´Ëѽ£¬µÚ¶þ´ÎÔÙ·¿ªÍ¬ÑùµÄÄÚÈݹûÈ»Óв»Í¬µÄÊÕ»ñ£¬ÓÐЩÊǵÚÒ»´Î¿´µÄʱºòûÓÐ×ÐϸÀí½âµÄ£¬»¹ÓÐЩ¿ÉÄÜÊÇÔÚµÚÒ»´Î¿´´Ò´Ò¾ÍÌø¹ýµÄ£¬µ±È»£¬¿ÉÄÜ»¹Óв¿·ÖÊÇ×Ô¼ºµ±Ê±¼ÇסÁËÍêÁËÓÖ¸øÍü¼ÇÁË¡£½ñÌìµÚ¶þ´Î¿´µ½×Ó³ÌÐòÕâÒ»Õ½ڣ¬·¢ÏÖÁËЩеÄÄÚÈÝ£¬ºÇºÇ¡£ÔÚÕâÀïÎÒ¾ÍдÏÂһЩ»ù±¾ÄÚÈݺÍÈÝÒ×Íü¼ÇµÄ£¬ÃâµÃÏ´ÎÓÖ¸øÍüÁË¡£ÄÚÈÝ¿ÉÄܲ»Ì«È«Ã棬ÓеãÕë¶ÔÎÒ¸öÈËŶ£¬ºÇºÇ£¡
1.´´½¨×Ó³ÌÐòµÄÓï·¨
´´½¨¹ý³Ì
CREATE [OR REPLACE] PROCEDURE procedure_name
[(argument [{IN | OUT| IN OUT}] type,
...
argument [{IN | OUT| IN OUT}] type)]
{IS | AS} --ISºÍASÃ»Çø±ð
procedure_body
´´½¨º¯Êý
CREATE [OR REPLACE] FUNCTION function_name
[(argument [{IN | OUT| IN OUT}] type,
...
argument [{IN | OUT| IN OUT}] type)]
RETURN return_type {IS | AS} --ISºÍASÃ»Çø±ð
procedure_body
2.²ÎÊýģʽ
IN
µ÷Óùý³ÌµÄʱºò£¬Êµ¼Ê²ÎÊýµÄÖµ¾Í»á´«µÝµ½¸Ã¹ý³ÌÖС£ÔÚ¹ý³ÌÄÚ²¿£¬ÐÎʽ²ÎÊý¾ÍÏñPL/SQLµÄ³£Á¿Ò»Ñù--Ëü»á±»¿´×÷ÊÇÖ»¶ÁÇÒ²»ÄÜÐ޸ĵġ£µ±¹ý³ÌÖ´ÐÐÍê±Ï£¬³ÌÐòµÄ¿ØÖÆ·µ»Øµ½µ÷Óû·¾³µÄʱºò£¬Êµ¼Ê²ÎÊýµÄÖµ²»»áÓÐÈκ ......
ιʶøÖªÐ£¬¹ûÈ»Èç´Ëѽ£¬µÚ¶þ´ÎÔÙ·¿ªÍ¬ÑùµÄÄÚÈݹûÈ»Óв»Í¬µÄÊÕ»ñ£¬ÓÐЩÊǵÚÒ»´Î¿´µÄʱºòûÓÐ×ÐϸÀí½âµÄ£¬»¹ÓÐЩ¿ÉÄÜÊÇÔÚµÚÒ»´Î¿´´Ò´Ò¾ÍÌø¹ýµÄ£¬µ±È»£¬¿ÉÄÜ»¹Óв¿·ÖÊÇ×Ô¼ºµ±Ê±¼ÇסÁËÍêÁËÓÖ¸øÍü¼ÇÁË¡£½ñÌìµÚ¶þ´Î¿´µ½×Ó³ÌÐòÕâÒ»Õ½ڣ¬·¢ÏÖÁËЩеÄÄÚÈÝ£¬ºÇºÇ¡£ÔÚÕâÀïÎÒ¾ÍдÏÂһЩ»ù±¾ÄÚÈݺÍÈÝÒ×Íü¼ÇµÄ£¬ÃâµÃÏ´ÎÓÖ¸øÍüÁË¡£ÄÚÈÝ¿ÉÄܲ»Ì«È«Ã棬ÓеãÕë¶ÔÎÒ¸öÈËŶ£¬ºÇºÇ£¡
1.´´½¨×Ó³ÌÐòµÄÓï·¨
´´½¨¹ý³Ì
CREATE [OR REPLACE] PROCEDURE procedure_name
[(argument [{IN | OUT| IN OUT}] type,
...
argument [{IN | OUT| IN OUT}] type)]
{IS | AS} --ISºÍASÃ»Çø±ð
procedure_body
´´½¨º¯Êý
CREATE [OR REPLACE] FUNCTION function_name
[(argument [{IN | OUT| IN OUT}] type,
...
argument [{IN | OUT| IN OUT}] type)]
RETURN return_type {IS | AS} --ISºÍASÃ»Çø±ð
procedure_body
2.²ÎÊýģʽ
IN
µ÷Óùý³ÌµÄʱºò£¬Êµ¼Ê²ÎÊýµÄÖµ¾Í»á´«µÝµ½¸Ã¹ý³ÌÖС£ÔÚ¹ý³ÌÄÚ²¿£¬ÐÎʽ²ÎÊý¾ÍÏñPL/SQLµÄ³£Á¿Ò»Ñù--Ëü»á±»¿´×÷ÊÇÖ»¶ÁÇÒ²»ÄÜÐ޸ĵġ£µ±¹ý³ÌÖ´ÐÐÍê±Ï£¬³ÌÐòµÄ¿ØÖÆ·µ»Øµ½µ÷Óû·¾³µÄʱºò£¬Êµ¼Ê²ÎÊýµÄÖµ²»»áÓÐÈκ ......
@echo off
REM ###########################################################
REM # Windows Server 2003ÏÂOracleÊý¾Ý¿â×Ô¶¯±¸·ÝÅú´¦Àí½Å±¾
REM ###########################################################
REM È¡µ±Ç°ÏµÍ³Ê±¼ä,¿ÉÄÜÒò²Ù×÷ϵͳ²»Í¬¶øÈ¡Öµ²»Ò»Ñù
set CURDATE=%date:~0,4%%date:~5,2%%date:~8,2%
set CURTIME=%time:~0,2%
REM СʱÊýÈç¹ûСÓÚ10£¬ÔòÔÚÇ°Ãæ²¹0
if "%CURTIME%"==" 0" set CURTIME=00
if "%CURTIME%"==" 1" set CURTIME=01
if "%CURTIME%"==" 2" set CURTIME=02
if "%CURTIME%"==" 3" set CURTIME=03
if "%CURTIME%"==" 4" set CURTIME=04
if "%CURTIME%"==" 5" set CURTIME=05
if "%CURTIME%"==" 6" set CURTIME=06
if "%CURTIME%"==" 7" set CURTIME=07
if "%CURTIME%"==" 8" set CURTIME=08
if "%CURTIME%"==" 9" set CURTIME=09
set CURTIME=%CURTIME%%time:~3,2%%time:~6,2%
REM ÉèÖÃËùÓÐÕß¡¢Óû§ÃûºÍÃÜÂë
set OWNER=OWNER
set USER=USER
set PASSWORD=PASSWORD
set PREFIX=OWNER
REM ´´½¨±¸·ÝÓÃĿ¼£¬Ä¿Â¼½á¹¹Îªbackup/YYYYMMDD/
if not exist "%CURDATE%" mkdir %CURDATE%
set CURDIR=%CUR ......
1) »ù±¾½á¹¹
BEGIN
... --Óï¾ä
EXCEPTION -- ÀýÍâ´¦Àí
WHEN ...
...
WHEN OTHERS
...
END;
2) ³£ÓÃÔ¤¶¨ÒåÀýÍâ
EXCEPTION
WHEN CURSOR_ALREADY_OPEN THEN -- ORA-06511 SQLCODE = -6511 ÓαêÒѾ´ò¿ª
...
WHEN DUP_VAL_ON_INDEX THEN -- ORA-00001 SQLCODE = -1 ÏòΨһË÷ÒýÖвåÈëÖØ¸´Êý¾Ý
...
WHEN INVALID_CURSOR THEN -- ORA-01001 SQLCODE = -1001 ·Ç·¨Óαê²Ù×÷
...
WHEN INVALID_NUMBER THEN -- ORA-01722 SQLCODE = -1722 ×Ö·ûÏòÊý×Öת»»Ê§°Ü
...
WHEN LOGIN_DENIED THEN -- ORA-01017 SQLCODE = -1017
...
WHEN NO_DATA_FOUND THEN -- ORA-01403 SQLCODE = +100 ûÓÐÕÒµ½Êý¾Ý
......