ºìÁªLinuxÃÅ»§
Linux°ïÖú

SQL ServerºÍOracle·ÀÖ¹Êý¾ÝËø¶¨µÄ±È½Ï

·¢²¼Ê±¼ä:2006-11-20 00:52:07À´Ô´:ºìÁª×÷Õß:williamEXE
¡¡¡¡Êý¾Ý¿â²¢ÐзÃÎÊ£¬Ò²¾ÍÊÇÁ½¸ö»òÁ½ÒÔÉÏÓû§Í¬Ê±·ÃÎÊͬһÊý¾Ý£¬ÕâÒ²ÊÇÊý¾Ý¿âÒýÇæÈçºÎÉè¼ÆºÍʵÏÖÊʶȷ´Ó¦ËùÃæÁÙµÄ×î´óÎÊÌâ¡£Éè¼ÆÓÅÁ¼¡¢ÐÔÄÜ׿ԽµÄÊý¾Ý¿âÒýÇæ¿ÉÒÔÇáËɵØͬʱΪ³ÉǧÉÏÍòµÄÓû§·þÎñ¡£¶ø¡°µ×Æø²»×㡱µÄÊý¾Ý¿âϵͳËæןü¶àµÄÓû§Í¬Ê±·ÃÎÊϵͳ½«´ó´ó½µµÍÆäÐÔÄÜ¡£×îÔã¸âµÄÇé¿öÏÂÉõÖÁ¿ÉÄܵ¼ÖÂϵͳµÄ±ÀÀ£¡£

¡¡¡¡µ±È»£¬²¢ÐзÃÎÊÊÇÈκÎÊý¾Ý¿â½â¾ö·½°¸¶¼×îΪÖØÊÓµÄÎÊÌâÁË£¬ÎªÁ˽â¾ö²¢ÐзÃÎÊ·½ÃæµÄÎÊÌâ¸÷ÀàÊý¾Ý¿âϵͳÌá³öÁ˸÷ÖÖ¸÷ÑùµÄ·½°¸¡£ SQL ServerºÍOracleÁ½´óDBMSÒ²·Ö±ð²ÉÓÃÁ˲»Í¬µÄ²¢Ðд¦Àí·½·¨¡£ËüÃÇÖ®¼äµÄʵÖʲî±ðÔÚÄÄÀïÄØ£¿

²¢ÐзÃÎʵÄÎÊÌâ

¡¡¡¡²¢ÐзÃÎʳöÏÖÎÊÌâ´æÔÚÈô¸ÉÖÖÇé¿ö¡£ÔÚ×î¼òµ¥µÄÇéÐÎÏ£¬ÊýÁ¿³¬¹ýÒ»¸öµÄÓû§¿ÉÄÜͬʱ²éѯͬһÊý¾Ý¡£¾ÍÕâÖÖÇé¿ö¶øÑÔÊý¾Ý¿âµÄ²Ù×÷Ä¿±êºÜ¼òµ¥£º¾¡¿ÉÄܵØΪÓû§ÃÇÌṩ¿ìËÙµÄÊý¾Ý·ÃÎÊ¡£ Õâ¶ÔÎÒÃÇÏÖÔÚ³£¼ûµÄÊý¾Ý¿âÀ´Ëµ²»³ÉÎÊÌ⣺SQL ServerºÍ Oracle ¶¼²ÉÓÃÁ˶àÏ̻߳úÖÆ£¬ËüÃǵ±È»Äܹ»Ò»´Î´¦Àí¶à¸öÇëÇó¡£

¡¡¡¡²»¹ý£¬ÔÚÓû§ÐÞ¸ÄÊý¾ÝµÄÇé¿öϲ¢ÐзÃÎÊÎÊÌâ¾Í±äµÃ¸´ÔÓÆðÀ´ÁË¡£ÏÔÈ»£¬Êý¾Ý¿âͨ³£Ö»ÔÊÐíΨһÓû§Ò»´ÎÐÞ¸ÄÌض¨µÄÊý¾Ý¡£µ±Ä³Ò»Óû§¿ªÊ¼ÐÞ¸Äij¿éÊý¾Ýʱ£¬ SQL ServerºÍ Oracle ¶¼ÄܺܿìµØËø¶¨Êý¾Ý£¬×èÖ¹ÆäËûÓû§¶ÔÕâ¿éÊý¾Ý½øÐиüУ¬Ö±µ½Ð޸ĸÃÊý¾ÝµÄµÚ1λÓû§Íê³ÉÆä²Ù×÷²¢Ìá½»½»Ò×£¨commit transaction£©¡£µ«ÊÇ£¬µ±Ä³Ò»Î»Óû§ÕýÔÚÐÞ¸Äij¿éÊý¾Ýʱ¼ÙÉèÁíһλÓû§ÓÖÕýÏë²éѯ¸ÃÊý¾ÝµÄÐÅϢʱ»á·¢ÉúʲôÇé¿öÄØ£¿ÔÚÕâÖÖÇé¿öÏÂÊý¾Ý¿â¹ÜÀíϵͳÓÖ¸ÃÈçºÎ¶¯×÷ÄØ£¿Oracle ºÍ SQL ServerÕë¶ÔÕâÒ»ÎÊÌâ²ÉÈ¡Á˲»Í¬µÄ½â¾ö·½°¸¡£

SQL Server·½·¨

¡¡¡¡ÏÖÔÚ²»·Á¼ÙÉèÓÐÈË¿ªÊ¼ÐÞ¸ÄSQL ServerÉÏ´æ´¢µÄÊý¾Ý£¬ÓÚÊÇÕâ¿éÊý¾ÝÁ¢¼´±»Êý¾Ý¿âËø¶¨¡£Êý¾ÝËø¶¨²Ù×÷×èÈûÆäËûÈκηÃÎʸÃÊý¾ÝµÄÁ¬½Ó----Á¬²éѯ²Ù×÷¶¼²»»á·Å¹ý¡£ÓÚÊÇ£¬Õâ¿é±»Ëø¶¨µÄÊý¾ÝÖ»ÓÐÔÚ½»Ò×±»Ìá½»»òÕ߻عöÖ®ºó²ÅÄܽÓÊÜÆäËû·ÃÎʲÙ×÷¡£

¡¡¡¡ÏÂÃæÓÃSQL ServerËæ´øµÄpubsʾÀýÊý¾Ý¿â×öÒ»¸ö¼òµ¥Ê¾·¶¡£ÔÚQuery AnalyzerÄÚ´ò¿ªÁ½¸ö´°¿Ú¡£ÔÚµÚ1¸ö´°¿ÚÖÐÖ´ÐÐÏÂÁÐSQL²Ù×÷Óï¾ä£¬¸üÐÂpubsÊý¾Ý¿âÖÐijһͼÊéµÄ¼Û¸ñ£º

use pubs
go
begin tran
update titles
set price = price * 1.05
where

title_id = %27BU2075%27

¡¡¡¡ÓÉÓÚ´úÂëÖв¢Ã»ÓÐÖ´ÐÐcommitÓï¾ä£¬ËùÒÔÊý¾Ý±ä¶¯²Ù×÷ʵ¼ÊÉÏ»¹Ã»ÓÐ×îÖÕÍê³É¡£½ÓÏÂÀ´£¬ÔÚÁíÒ»¸ö´°¿ÚÀïÖ´ÐÐÏÂÁÐÓï¾ä²éѯtitlesÊý¾Ý±í£º
select title_id,title,price
from titles
order by title_id.

¡¡¡¡Äãʲô½á¹ûÒ²µÃ²»µ½¡£´°¿Úµ×²¿µÄСµØÇòͼ±ê»áת¸ö²»Í£¡£¾¡¹ÜÎÒÔÚÏÈÇ°µÄ²Ù×÷Öнö½ö¸üÐÂÁËÒ»ÐУ¬µ«ÊÇ£¬selectÓï¾äµÄÖ´ÐжÔÏóÈ´Ç¡ºÃ°üº¬ÁËÆäÊý¾ÝÕý±»Ð޸ĵÄÒ»ÐС£Òò´Ë£¬ÉÏÃæµÄ²Ù×÷²»»á·µ»ØÈκÎÊý¾Ý£¬³ý·Ç»Øµ½µÚ1¸ö´°¿ÚÌá½»½»Ò×»òÕ߻عö¡£

¡¡¡¡SQL ServerµÄÊý¾ÝËø¶¨·½°¸¿ÉÄܻήµÍϵͳµÄÐÔÄܺÍЧÂÊ¡£Êý¾Ý±»Ëø¶¨µÄʱ¼äÔ½³¤£¬»òÕßËø¶¨µÄÊý¾ÝÁ¿Ô½´ó£¬ÆäËûÊý¾Ý·ÃÎÊÓû§¾ÍÔ½¿ÉÄܲ»µÃ²»µÈ´ýÆä²éѯÓï¾äµÄÖ´ÐС£Òò´Ë£¬´Ó³ÌÐòÔ±µÄ½Ç¶ÈÀ´¿´£¬¶ÔSQL Server±à³ÌµÄʱºòÓ¦¸Ã¾¡Á¿µØ°Ñ½»Ò×´úÂëÉè¼ÆµÃ¼ÈСÓÖ¿ì¡£

¡¡¡¡ÔÚSQL ServerµÄ×î½ü°æ±¾ÖУ¬Î¢Èí¶ÔSQL Server½øÐÐÁËijЩÐ޸ģ¬Ê¹ÆäÒ»´ÎËø¶¨µÄÊý¾ÝÁ¿´ó´ó¼õÉÙ£¬ÕâÊÇÊý¾Ý¿âÉè¼ÆÖеÄÒ»´óÖØÒª¸Ä½ø¡£ÔÚ6.5°æ¼°ÒÔÇ°°æ±¾ÖУ¬×îÉÙµÄÊý¾ÝËø¶¨Á¿ÊÇÒ»Ò³¡£ÄÄÅÂÄãÖ»ÔÚÐÞ¸ÄÒ»ÐÐÊý¾Ý£¬¶ø¸ÃÐÐÊý¾ÝλÓÚ°üº¬10ÐÐÊý¾ÝµÄÒ»Ò³ÉÏ£¬ÔòÕûÒ³10ÐÐÊý¾Ý¶¼»á±»Ëø¶¨¡£ÏÔÈ»£¬Õâô´óµÄÊý¾ÝËø¶¨Á¿Ôö¼ÓÁËÆäËûÊý¾Ý·ÃÎÊÁ¬½Ó²»µÃ²»µÈ´ýÊý¾ÝÐÞÕýÍê³ÉµÄ¸ÅÂÊ¡£ÔÚSQL Server 7ÖУ¬Î¢ÈíÒýÈëÁËÐÐËø¶¨¼¼Êõ£¬ÕâÑù£¬Ä¿Ç°µÄSQL ServerÖ»Ëø¶¨Êµ¼ÊÕý±»¸Ä±äµÄÊý¾ÝÐС£

¡¡¡¡SQL ServerµÄ½â¾ö·½°¸ÌýÆðÀ´ºÜ¼òµ¥£¬µ«Êµ¼ÊÉÏÆäÄ»ºóΪÌṩ×ã¹»µÄϵͳ¸ßÐÔÄܶø²ÉÈ¡Á˺ܶà´ëÊ©¡£ÀýÈ磬Èç¹ûÄãÔÚͬʱÐ޸ĶàÐÐÊý¾Ý£¬SQL ServerÔò»á°ÑÊý¾ÝËø¶¨·¶Î§ÌáÉýµ½Ò³¼¶±ðÄËÖÁËø¶¨Õû¸öÊý¾Ý±í£¬´Ó¶ø²»±ØÕë¶Ôÿһ¼Ç¼¸ú×ÙºÍά»¤¸÷×ÔµÄÊý¾ÝËø¡£

Oracle·½·¨

¡¡¡¡ÏÂÃæÎÒÃÇÔÙ¿´¿´OracleÊý¾Ý¿âÊÇÈçºÎʵʩÀàËƲÙ×÷µÄ¡£Ê×ÏÈ£¬ÎÒ´ò¿ªÒ»¸öSQLPlusʵÀýÖ´ÐÐÏÂÁвéѯÓï¾ä£¨Õâ¸öÀý×Ó¿ÉÒÔÔÚOracle 9iÖÐʾÀýÖÐÕÒµ½£©¡£Õâ¸öʵÀý³Æ×ö²éѯʵÀý£º
select first_name, last_name, salary
from hr.employees
where
department_id = 20;
´úÂë·µ»ØÁ½ÐÐÊý¾Ý£¬ÈçÏÂËùʾ£º

¡¡¡¡È»ºó£¬ÔÙ´ò¿ªÁíÒ»¸öSQLPlusʵÀý----¸üÐÂʵÀýÀ´Ö´ÐÐÒÔÏÂÃüÁ
SQL> update hr.employees
2 set salary = salary * 1.05
3 where
4 department_id = 20
5 /
´úÂëÖ´Ðкó»Ø¸´ÏûÏ¢³ÆÁ½ÐÐÊý¾ÝÒѱ»¸üС£
¡¡¡¡×¢Ò⣬ÒÔÉÏ´úÂëÖв¢Ã¿ÓÐÏñÔÚSQL ServerʾÀýÄÇÑù¼üÈë¡°begin tran¡±×ÖÑùµÄ´úÂë¡£Oracle µÄSQLPlusÒþº¬ÆôÓý»Ò×£¨Ä㻹¿ÉÒÔÄ£·ÂSQL ServerµÄÐÐΪ£¬ÉèÖá°autocommit to on¡±×Ô¶¯µØÌá½»½»Ò×£©¡£½ÓÏÂÀ´ÎÒÃÇÔÚSQLPlus¸üÐÂʵÀýÖÐÔÙÖ´ÐÐͬ²éѯʵÀýÒ»ÑùµÄselectÓï¾ä¡£

¡¡¡¡½á¹ûÇå³þµØ±íÃ÷£ºMichaelºÍPatµÄнˮ¶¼Ôö¼ÓÁË£¬È»¶øÕâ¸öʱºòÎÒ»¹Ã»ÓÐÌá½»Êý¾Ý±ä¸ü½»Òס£

¡¡¡¡ÏÖÔÚתµ½µÚ1¸öSQLPlus²éѯʵÀýÖØÐÂÔËÐвéѯ£¬½á¹ûÈçÏ£º

¡¡¡¡Oracle²»ÐèÒªÓû§µÈ´ýÊý¾Ý¸üÐÂʵÀýÖвÙ×÷±»Ìá½»£¬Ëü¾¶Ö±·µ»ØMichaelºÍPatµÄ²éѯÐÅÏ¢£¬µ«Êµ¼ÊÉÏ·µ»ØµÄÊÇÊý¾Ý¸üпªÊ¼Ö®Ç°µÄÊý¾ÝÊÓͼ£¡

¡¡¡¡Õâʱºò£¬ÊìϤSQL ServerµÄÈË¿ÉÄÜ»á˵ÁË£¬ÔÚ²éѯÖÐÉèÖã¨NOLOCK£©²»Ò²ÄܴﵽͬÑùµÄЧ¹ûÂ𣿿ÉÊÇ£¬¶ÔSQL Server¶øÑÔ£¬ÔÚÊý¾ÝÓ³Ïñ֮ǰÊDz»ÄÜ»ñÈ¡Êý¾ÝµÄ¡£Ö¸¶¨£¨NOLOCK£©Êµ¼ÊÉÏÖ»Êǵõ½ÁËûÓÐÌá½»µÄÊý¾Ý¡£OracleµÄ·½·¨ÔòÌṩÁËÊý¾ÝµÄÒ»ÖÂÊÓͼ£¬ËùÓеÄÐÅÏ¢¶¼ÊÇÕë¶Ô½»Ò׵ġ¢»ùÓÚ´æ´¢Êý¾Ý¿ìÕյġ£

¡¡¡¡Èç¹ûÔÚSQLPlusµÄ¸üÐÂʵÀýÖÐÌá½»¸üн»Ò×ÔÚ²éѯʵÀýÖоÍÄÜ¿´µ½Ð½Ë®Êý¾Ý·¢Éú±ä»¯¡£Èç¹ûÔÚ²éѯʵÀýÖÐÖØÐÂÔËÐÐÏÈÇ°µÄ²éѯÓï¾ä£¬ÄÇôOracle½«·µ»ØеÄнˮÊýÖµ¡£

´æ´¢Êý¾Ý¿ìÕÕ

¡¡¡¡ËµÁË°ëÌ죬ÔÚ¸øÓû§ÏÔʾÏÈÇ°°æ±¾µÄÊý¾Ýͬʱ£¬OracleÊÇÈçºÎÔÊÐíÆäËûÓû§ÐÞ¸ÄÊý¾ÝµÄÄØ£¿Æäʵ£¬Ö»ÒªÄ³Ò»Óû§Æô¶¯ÁËÒ»×ÚÐÞ¸ÄÊý¾ÝµÄ½»Ò×£¬Ö®Ç°µÄÊý¾ÝÓ³Ïñ¾Í»á±»Ð´µ½Ò»¸öÌØÊâµÄ´æ´¢ÇøÓò¡£ÕâÖÖ¡°Ç°Ó³Ïñ¡±ÓÃÀ´ÏòÈκβéѯÊý¾ÝµÄÓû§ÌṩһÖµÄÊý¾Ý¿âÊÓͼ¡£ÕâÑù£¬µ±ÆäËûÓû§ÔÚÐÞ¸ÄÊý¾ÝµÄʱºò£¬ÔÚÒÔÉϵIJâÊÔÖÐÎÒÃǾÍÄÜ¿´µ½ÉÐδ·¢Éú±ä¸üµÄн½ðÊý¾Ý¡£

¡¡¡¡Õâ¸öÌØÊâµÄ´æ´¢ÇøÓòÔÚÄÄÀïÄØ£¿Õâ¸öÎÊÌâµÄ´ð°¸¾Í¸úÄãÕýÔÚʹÓõÄOracle°æ±¾ÓйØÁË¡£ÔÚ Oracle 8i¼°ÆäÒÔÇ°°æ±¾ÖлáΪÕâһĿµÄ´´½¨ÌØÊâµÄ»Ø¹ö¶Î¡£È»¶ø£¬ÕâÖÖ¾Ù´ë»á¸øÊý¾Ý¿â¹ÜÀíÔ±£¨DBA£©´øÀ´¹ÜÀíºÍµ÷ÕûÊý¾Ý¶ÎµÄ¹¤×÷¸ºµ£¡£ÀýÈ磬DBA±ØÐëÈ·¶¨Îª´ËÐèÒªµÄÊý¾Ý¶ÎµÄÊýÁ¿ÒÔ¼°´óСµÈ¡£¼ÙÈç»Ø¹ö¶ÎûÓÐÕýÈ·ÅäÖã¬ÄÇô¶Ô½»Ò׶øÑÔËüÃǾͿÉÄܲ»µÃ²»ÅŶӵȴý»Ø¹ö¶ÎÖгöÏÖ±ØÒªµÄÊý¾Ý¿Õ¼ä¡£

¡¡¡¡Oracle 9i¾Í²»Í¬ÁË£¬ÕâÊÇOracleµÄ×îа汾£¬OracleʵÏÖÁËÒ»ÖÖÐÂÌØÐÔ£¬Õâ¾ÍÊÇËùνµÄundo±í¿Õ¼ä£¬ËüÓÐЧµØÏû³ýÁËÒÔÉϵĹÜÀí¸´ÔÓÐÔ¡£ËäÈ»»Ø¹ö¶ÎÈÔÈ»¿ÉÒÔ¼ÌÐøʹÓ㬵«ÊÇ£¬DBAÏÖÔÚ¿ÉÒÔÑ¡Ôñ´´½¨undo±í¿Õ¼äµÄ·½Ê½ÁîOracle×Ô¼º¹ÜÀí¡°Ç°Ó³Ïñ¡±µÄ¸´ÔÓ¿Õ¼ä·ÖÅä¡£

¡¡¡¡OracleµÄÕâÖÖ·½·¨¶Ô³ÌÐòÔ±¾ßÓÐÖØÒªÒâÒå¡£ÒòΪ»Ø¹ö¿Õ¼ä²»ÊÇÎÞÏ޵ģ¬ËùÒÔ£¬¸üн»Ò×µÄÊý¾Ý¿ìÕÕ»áÈ¡´úÏÈÇ°½»Ò×µÄÓ³Ïñ¡£Òò´Ë£¬Èç¹û±ØÒªµÄ»Ø¹ö¶Î±»ÆäËû½»Ò×µÄÓ³Ïñ¸²¸ÇµÄ»°¡£ÔËÐÐʱ¼ä½Ï³¤µÄ²éѯ²Ù×÷¾Í¿ÉÄܲúÉú¡° snapshot too old¡±´íÎó¡£

¡¡¡¡ÏÂÃæ¾Ù¸ö¿ÉÄÜ·¢ÉúµÄ°¸Àý¡£¼ÙÉèÔÚÉÏÎç11:59µÄʱºòijλְԱ¿ªÊ¼¸üÐÂJohn DoeÕÊÎñµÄ½»Òס£Õâ×Ú½»Ò×ÔÚÏÂÎç12:01±»Ìá½»¡£Í¬Ê±£¬ÏÂÎç12:00ij²ÆÎñ¾­Àí¿ªÊ¼²éѯËùÓеĿͻ§ÕÊÎñ±¨±íºÍµ±ÔÂÊÕ·Ñ×ܼơ£ÒòΪ¿Í»§ºÜ¶à£¬ËùÒÔÕâÒ»²éѯ²Ù×÷ºÜ·ÑÁ˵ãʱ¼ä£¬µ«ÊDz»ÂÛÕâ´Î²Ù×÷µ½µ×Ö´ÐÐÁ˶à¾Ã£¬·´ÕýËü¼ìË÷³öµÄ½á¹û¾ÍÊÇÏÂÎç12:00Êý¾Ý¿âÖдæÔÚµÄÊý¾Ý¡£Èç¹û°üº¬John DoeÕÊÎñÇ°Ó³ÏñµÄ»Ø¹ö¿Õ¼äÔÚ²éѯִÐе½¸Ã¿Í»§Ãû×ÖµÄʱºò±»¸²¸ÇÔò²éѯ·µ»Ø´íÎóÏûÏ¢¡£

¡¡¡¡OracleµÄ½â¾ö·½°¸µ±È»¸üΪºÏÀí£¬ÔÚ³éÏóÒâÒåÉÏÌṩÁËÏà±ÈSQL Server¸ü¼ÑµÄÊý¾ÝÒ»ÖÂÐÔ¡£ÔÚÖ´ÐÐOracle²éѯµÄʱºòÎÞÐëµ£ÐĽϳ¤µÄ²éѯ²Ù×÷»áËø¶¨ÖØÒªµÄ½»Òס£µ«ÊÇ£¬ÔÚÁ½ÖÖÊý¾Ý¿âͬʱ֧³Öº£Á¿Óû§µÄÇé¿öÏÂÒ²ºÜÄÑÖ¤Ã÷OracleÊÇ·ñ¾ÍÄÜÕæÕýʵÏÖ¾ßÌåÌõ¼þϵÄÊý¾ÝÒ»ÖÂÐÔ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ