Oracle ¸ôÀë¼¶±ð
¸ôÀë¼¶±ð£¨isoation level£©
¸ôÀë¼¶±ð¶¨ÒåÁËÊÂÎñÓëÊÂÎñÖ®¼äµÄ¸ôÀë³Ì¶È¡£
¸ôÀë¼¶±ðÓë²¢·¢ÐÔÊÇ»¥ÎªÃ¬¶ÜµÄ£º¸ôÀë³Ì¶ÈÔ½¸ß£¬Êý¾Ý¿âµÄ²¢·¢ÐÔÔ½²î£»¸ôÀë³Ì¶ÈÔ½µÍ£¬Êý¾Ý¿âµÄ²¢·¢ÐÔÔ½ºÃ¡£
ANSI/ISO SQ92±ê×¼¶¨ÒåÁËһЩÊý¾Ý¿â²Ù×÷µÄ¸ôÀë¼¶±ð£º
δÌá½»¶Á£¨read uncommitted£©
Ìá½»¶Á£¨read committed£©
ÖØ¸´¶Á£¨repeatabe read£©
ÐòÁл¯£¨seriaizable£©
ͨ¹ýһЩÏÖÏ󣬿ÉÒÔ·´Ó³³ö¸ôÀë¼¶±ðµÄЧ¹û¡£ÕâЩÏÖÏóÓУº
¸üжªÊ§£¨lost update£©£ºµ±ÏµÍ³ÔÊÐíÁ½¸öÊÂÎñͬʱ¸üÐÂͬһÊý¾ÝÊÇ£¬·¢Éú¸üжªÊ§¡£
Ôà¶Á£¨dirty read£©£ºµ±Ò»¸öÊÂÎñ¶ÁÈ¡ÁíÒ»¸öÊÂÎñÉÐδÌá½»µÄÐÞ¸Äʱ£¬²úÉúÔà¶Á¡£
·ÇÖØ¸´¶Á£¨nonrepeatabe read£©£ºÍ¬Ò»²éѯÔÚͬһÊÂÎñÖжà´Î½øÐУ¬ÓÉÓÚÆäËûÌá½»ÊÂÎñËù×öµÄÐ޸Ļòɾ³ý£¬Ã¿´Î·µ»Ø²»Í¬µÄ½á¹û¼¯£¬´Ëʱ·¢Éú·ÇÖØ¸´¶Á¡£(A transaction rereads data it has previousy read and finds that another committed transaction has modified or deeted the data. )
»ÃÏñ£¨phantom read£©£ºÍ¬Ò»²éѯÔÚͬһÊÂÎñÖжà´Î½øÐУ¬ÓÉÓÚÆäËûÌá½»ÊÂÎñËù×öµÄ²åÈë²Ù×÷£¬Ã¿´Î·µ»Ø²»Í¬µÄ½á¹û¼¯£¬´Ëʱ·¢Éú»ÃÏñ¶Á¡£(A transaction reexecutes a query returning a set of rows that satisfies a search condition and finds that another committed transaction has inserted additiona rows that satisfy the condition. )
ÏÂÃæÊǸôÀë¼¶±ð¼°Æä¶ÔÓ¦µÄ¿ÉÄܳöÏÖ»ò²»¿ÉÄܳöÏÖµÄÏÖÏó
Dirty Read
NonRepeatabe Read
Phantom Read
Read uncommitted
Possible
Possible
Possible
Read committed
not possible
Possible
Possible
Repeatabe read
not possible
not possible
Possible
Seriaizabe
not possible
not possible
not possible
ORACEµÄ¸ôÀë¼¶±ð
ORACEÌṩÁËSQ92±ê×¼ÖеÄread committedºÍseriaizabe£¬Í¬Ê±ÌṩÁË·ÇSQ92±ê×¼µÄread-ony¡£
read committed£º
ÕâÊÇORACEȱʡµÄÊÂÎñ¸ôÀë¼¶±ð¡£
ÊÂÎñÖеÄÿһÌõÓï¾ä¶¼×ñ´ÓÓï¾ä¼¶µÄ¶ÁÒ»ÖÂÐÔ¡£
±£Ö¤²»»áÔà¶Á£»µ«¿ÉÄܳöÏÖ·ÇÖØ¸´¶ÁºÍ»ÃÏñ¡£
seriaizabe£º£¨´®ÐÐÖ´ÐÐÊÂÎñ£¬²¢·¢ÐÔ×îС£©
¼òµ¥µØËµ£¬seriaizabe¾ÍÊÇʹÊÂÎñ¿´ÆðÀ´ÏóÊÇÒ»¸ö½Ó×ÅÒ»¸öµØË³ÐòµØÖ´ÐС£
½ö½öÄÜ¿´¼ûÔÚ±¾ÊÂÎñ¿ªÊ¼Ç°ÓÉÆäËüÊÂÎñÌá½»µÄ¸ü¸ÄºÍÔÚ±¾ÊÂÎñÖÐËù×öµÄ¸ü¸Ä¡£
±£Ö¤²»»á³öÏÖ·ÇÖØ¸´¶ÁºÍ»ÃÏñ¡£
Seriaizabe
Ïà¹ØÎĵµ£º
Êý¾Ý×Öµädict×ÜÊÇÊôÓÚOracleÓû§sysµÄ¡£
1¡¢Óû§£º
¡¡select username from dba_users;
¸Ä¿ÚÁî
¡¡alter user spgroup identified by spgtest;
2¡¢±í¿Õ¼ä£º
¡¡select * from dba_data_files;
¡¡select * from dba_tablespaces;//±í¿Õ¼ä
¡¡select tablespace_name,sum(bytes), sum(blocks)
from dba_ ......
¡¡Ò»¡¢ÉèÖóõʼ»¯²ÎÊý job_queue_processes
¡¡¡¡sql> alter system set job_queue_processes=n;£¨n>0£©
¡¡¡¡job_queue_processes×î´óֵΪ1000
¡¡¡¡
¡¡¡¡²é¿´job queue ºǫ́½ø³Ì
¡¡¡¡sql>select name,description from v$bgprocess;
¡¡¡¡
¡¡¡¡¶þ£¬dbms_job package Ó÷¨½éÉÜ
¡¡¡¡°üº¬ÒÔÏÂ×Ó¹ý³Ì£º
......
Êý¾Ý×Öµädict×ÜÊÇÊôÓÚOracleÓû§sysµÄ¡£
¡¡¡¡1¡¢Óû§£º
¡¡¡¡¡¡select username from dba_users;
¡¡¡¡¸Ä¿ÚÁî
¡¡¡¡¡¡alter user spgroup identified by spgtest;
¡¡¡¡2¡¢±í¿Õ¼ä£º
¡¡¡¡¡¡select * from dba_data_files;
¡¡¡¡¡¡select * from dba_tablespaces;//±í¿Õ¼ä
¡¡¡¡¡¡select tablespace_name,sum(bytes), sum(b ......
¿ª·¢×éÔÚÊý¾ÝÇ¨ÒÆÊ±£¬±¨¸æ·¢ÏÖһЩÊýֵΪ'0000/00/00'µÄdateÊý¾Ý£¬µ¼ÖÂÊý¾ÝÇ¨ÒÆÊ§°Ü¡£
Õâ¸öÎÊÌâÓÐµãÆæ¹Ö£¬ÒòΪÔÚOracleÖУ¬dateÀàÐ͵ÄÊý¾ÝµÄȡֵ·¶Î§ÊÇ´Ó-4712/12/31µ½9999/12/31Ö®¼ä£¬²¢ÇÒÄê·Ý²»ÄÜΪ0¡£Ò²¾ÍÊÇ˵'0000/00/00'ÊÇÒ»¸ö·Ç·¨Êý¾Ý£¬²»ÎªOracleËù½ÓÊÜ¡£
SQL> select to_date('0000-00-00', 'yyyy-mm- ......
Stream ÊÇOracle µÄÏûÏ¢¶ÓÁÐ(Ò²½ÐOracle Advanced Queue)¼¼ÊõµÄÒ»ÖÖÀ©Õ¹Ó¦ÓᣠOracle µÄÏûÏ¢¶ÓÁÐÊÇͨ¹ý·¢²¼/¶©Ôĵķ½Ê½À´½â¾öʼþ¹ÜÀí¡£Á÷¸´ÖÆ(Stream replication)Ö»ÊÇ»ùÓÚËüµÄÒ»¸öÊý¾Ý¹²Ïí¼¼Êõ£¬Ò²¿ÉÒÔ±»ÓÃ×÷Ò»¸ö¿ÉÁé»î¶¨ÖƵĸ߿ÉÓÃÐÔ·½°¸¡£ Ëü¿ÉÒÔʵÏÖÁ½¸öÊý¾Ý¿âÖ®¼äÊý¾Ý¿â¼ ......