Oracle Latch¼°latchì¶Ü
СÒý
Oracle RdbmsÊ©ÓÃÁ˸÷ÖÖ²»Í¬ÀàÐ͵ÄËø¶¨»úÖÆ£¬latchµÈÓÚ´ËÖеÄÒ»ÖÖ£¬ÕýÎĽ«¼¯ÖÐÒý¼ûlatch(ãÅ)µÄ¸ÅÄ¶®µÃlatchµÄ¶ÒÏÖ²½Ö貢˵Ã÷»½ÆðlatchĦ²ÁµÄÔµ¹Ê¡£
ʲôÊÇlatch
LatchÊÇÓÃÀ´±£»¤SGAÇøÖй²ÏíÊý¾Ý½á¹¹µÄÒ»ÖÖ´®Ðл¯Ëø¶¨»úÖÆ¡£LatchµÄ¶ÒÏÖÊÇÓë²Ù×÷ϵͳÏà¸ÉµÄ£¬ÓÈÉõºÍÒ»¸ö¹ý³ÌÊDz»ÊÇØ½ÐèµÈºòÒ»¸ölatch¡¢¼±ÐèµÈºò¶à³¤Ê±¼äÏà¹Ø¡£
Latch ÊÇÒ»ÖÖÄܹ»¼«¿ìµØ±»»ñÈ¡ºÍ¿ªÊ͵ÄËø£¬ËüÒ»°ãÓÃÀ´±£»¤ÃèÊöbuffer cacheÖÐblockµÄÊý¾Ý½á¹¹¡£Óëÿ¸ölatchÏàÁªÏµµÄÔÙÓÐÒ»¸öɨ³ý½ø³Ì£¬Ó¦»³ÓÐlatchµÄÀú³Ì±ä³ÉËÀÀú³Ìʱ£¬¸Ãɨ³ýÀú³Ì¾Í»á±»µ÷Óá£Latch »¹¾ßÓÐÏà¸É¼¶±ð£¬ÓÃÀ´·ÀÖ¹ËÀËø£¬ÍòÒ»Ò»¸öÀú³ÌÔÚij¸ö¼¶±ðÉÏʧȥһ¸ölatch£¬Ëü¾Í²»¿ÉÄÜÔÙÈ¡µÃͬµÈ»ò½ö´ÎÓڸü¶±ðµÄlatch¡£
LatchÓëEnqueue£¨ÐÐÁУ©
Enqueue ÊÇOracleÊ©ÓõÄÁíÒ»ÖÖËø¶¨»úÖÆ£¬ËüÓú¼Ó¸´ÔÓ£¬ÈÝÐí¼¸¸ö²¢·¢¹ý³Ì²»Í¬³Ì¶ÈµØ¹²ÏíijЩ×ÊÔ´¡£Èκοɱ»²¢·¢ÔËÓõĶÔÏó¾ù¿ÉÓ¦ÓÃenqueue¼ÓÒÔ±£»¤¡£1 ¸öµäÐ͵ÄÊÂÀýÊDZíµÄËø¶¨£¬ÎÒÃÇÈÝÐíÔÚÒ»¸ö±íÉÏÓв»Æ½¼¶±ðµÄ¹²Ïí¡£Óëlatch²»Í¬Ö®¾ÓÓÚÓÚ£¬enqueueÊÇÔËÓòÙ×÷ÏµÍ³ÌØ¶¨µÄËø¶¨»úÖÆ£¬Ò»¸ö enqueueÈÝÐíÓû§ÔÚËøÉÏÖü´æÒ»¸ö±ê¼Ç£¬À´±íÃ÷ÇëÇóËøµÄ·½Ê½¡£²Ù×÷ϵͳlock manager×·×ÙÈ«²¿±»Ëø¶¨µÄ×ÊÔ´£¬ÈçÆäij¸ö¹ý³Ì²»ÄÜ»ñÈ¡ËüËùÇëÇóµÄÄÇÖÖËø£¬²Ù×÷ϵͳ¾Í°ÑÇëÇó¹ý³ÌÖÃÓÚÒ»¸öµÈºòÐÐÁÐÖУ¬¸ÃÐÐÁа´FIFO×¼Ôò²¿Ê𣬶øÔÚ latchesÖÐÊÇûÏóenqueueÖÐÅÅÐòµÄµÈºòÐÐÁУ¬latchµÈºò¹ý³ÌÒª²»Ó¦Óö¨Ê±Æ÷À´»½ÐѺÍÖØÊÔ£¬Òª²»spin(Ö»ÓÃÒÔ¶à´¦ÀíÆ÷Çé¿öÏÂ)¡£
¼¸Ê±¼±Ðèlatch
Ó¦Ò»¸öÀú³ÌÔ¤±¸·ÃÎÊSGAÖеÄÊý¾Ý½á¹¹Ê±£¬Ëü¾ÍÐèҪȡµÃÒ»¸ölatch¡£Ó¦¹ý³ÌÈ¡µÃlatchºó£¬Ëü½«Ò»Ö±»³ÓиÃlatchÖ±µ½Ëü²»ÔÙÔËÓôËÊý¾Ý½á¹¹£¬Õâʱºòlatch²Å»á±»¿ªÊÍ¡£¿Éͨ¹ýlatchÐÕÃûÀ´½ç±ðËüËù±£»¤µÄ²»Í¬Êý¾Ý½á¹¹¡£
Oracle ÔËÓÃÔªÊÚÃü¶Ôlatch¿ªÕ¹²Ù×÷, Ó¦ËùÐèµÄlatchÒѱ»ÆäÓà¹ý³Ì»³ÓÐʱ£¬Ê©ÐÐÊÚÃü¹ý³Ì½«ÖÕֹʩÐÐÒ»²¿·ÖÊÚÃü£¬Ö±µ½¸Ãlatch±»¿ªÊÍΪֹ¡£´Ó¸ù±¾ÉϽ²£¬latch·ÀÖ¹²¢·¢·ÃÎʹ²ÏíÊý¾Ý½á ¹¹£¬ÒòΪÉèÁ¢ºÍ¿ªÊÍlatchµÄÊÚÃüÊDz»¿É¹Ï·ÖµÄ£¬²Ù×÷ϵͳ¾Í¿ÉÒÔÔðÈÎÊéΨÓÐÒ»¸öÀú³ÌÈ¡µÃlatch£¬ÓÖÒòΪÕâÖ»Êǵ¥ÌõÊÚÃü£¬Ö®ËùÒÔʵʩËٶȺܿ졣latch ±»ÎÕÓеÄʱ¼äÊẠ̊́ܶ¬²¢ÇÒÌṩÁ˵±³ÖÓÐÈ˲»Õý³£¼ä¶ÏʱµÄÇý³ý»úÖÆ£¬¸ÃÇý³ý¹¤×÷ÊÇÓÉOracleºǫ́Àϰå¹ý³ÌPMONÀ´Íê³ÉµÄ¡£
ʲôÕÐÖÂlatchĦ²Á
Latch ±£»¤SGAÖеÄÊý¾Ý½á¹¹±»¶à¸öÓû§Óë´Ëͬʱ·ÃÎÊ£¬ÈçÆäÒ»¸ö¹ý³Ì²»ÄÜÁ¢Ê±Ê§È¥ËùÐèlatch£¬Ëü¾Í±ØÐëµÈºò£¬Õâ¾ÍÂÞÖÂÁËCPUµÄ¶îÍ⸺µ£ºÍϵͳµÄËٶȼõµÍ¡£¶îÍâ µ
Ïà¹ØÎĵµ£º
1.¾¡¿ÉÄܵØÊ¹Óð󶨱äÁ¿ ²»Óÿª¹ØCURSOR_SHARING=FORCE
Èç¹ûÄãÔ¸Ò⣬Õâ¸öÌØÐÔ»áʵÏÖÒ»¸ö×Ô¶¯°ó¶¨Æ÷£¨auto-binder£©¡£
Èç¹ûÓÐÒ»¸ö²éѯ±àдΪSELECT * from EMP WHERE EMPNO = 1234£¬×Ô¶¯°ó¶¨Æ÷»áÇÄÎÞÉùÏ¢µØ°ÑËü¸Äд³É
SELECT * from EMP WHERE EMPNO = :x¡£ÕâȷʵÄܶ¯Ì¬µØ´ó´ó¼õÉÙÓ²½âÎöÊý£¬²¢¼õÉÙÇ°ÃæÌÖÂÛµ ......
dualÊÇÒ»¸öÐéÄâ±í£¬ÓÃÀ´¹¹³ÉselectµÄÓï·¨¹æÔò£¬oracle±£Ö¤dualÀïÃæÓÀÔ¶Ö»ÓÐÒ»Ìõ¼Ç¼¡£ÎÒÃÇ¿ÉÒÔÓÃËüÀ´×öºÜ¶àÊÂÇ飬ÈçÏ£º
1¡¢²é¿´µ±Ç°Óû§£¬¿ÉÒÔÔÚ SQL PlusÖÐÖ´ÐÐÏÂÃæÓï¾ä select user from dual;
2¡¢ÓÃÀ´µ÷ÓÃϵͳº¯Êý
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--»ñµÃµ±Ç°ÏµÍ³Ê±¼ ......
Oracle 3 ¸öÖ÷ÒªµÄÄÚ´æ½á¹¹£º
ϵͳȫ¾ÖÇø£¨System Global Area£¬SGA£©£ºÕâÊÇÒ»¸öºÜ´óµÄ¹²ÏíÄÚ´æ¶Î£¬¼¸ºõËùÓÐOracle
½ø³Ì¶¼Òª·ÃÎÊÕâ¸öÇøÖеÄijһµã¡£
½ø³ÌÈ«¾ÖÇø£¨Process Global Area£¬PGA£©£ºÕâÊÇÒ»¸ö½ø³Ì»òÏß³ÌרÓõÄÄڴ棬ÆäËû½ø³Ì/
Ï̲߳»ÄÜ·ÃÎÊ¡£
Óû§È«¾ÖÇø£¨User Global Area£¬UGA£©£ºÕâ¸öÄÚ´æÇøÓë ......
http://www.inthirties.com/thread-757-1-1.html
ºÜÈÙÐÒ£¬±»ÑûÇëΪCSDNѧϰ´ó±¾ÓªÀïµÄOracleÀÏʦ¡£ÓиöÍøÓÑ·¢ÏûÏ¢¹ýÀ´£¬Ò»Æð̽ÌÖÈçºÎѧϰOracle£¬Ò»ÏÂÊǻظ´£¬ºÍ´ó¼ÒÒ»Æð̽ÌÖ¡£
Ê×ÏÈ£¬ÒªÃ÷È·ÄãµÄ·½ÏòºÍÄ¿±ê¡£
¶ÔÓÚOracleÀ´Ëµ£¬Õâ¸öÌåϵÊDZȽÏÅÓ´óµÄ£¬ËùÒÔÃ÷È·Ò»¸öÄ¿±êºÍÄãµÄ·½ÏòÊÇÔÚѧϰǰÐèҪ˼¿¼µÄÎÊÌâ¡£ ¹ÜÀí£¬ ......
Oracle´´½¨±íʱ£¬³£Óöµ½ÏÈɾ³ýºó´´½¨µÄÇé¿ö£¬¶øËüÓÖûÓÐdrop table... if existsÓï·¨¡£Îª´Ë¿ÉÒÔʹÓÃuser_objectsÊý¾Ý×ÖµäºÍ¶¯Ì¬sqlÓï¾äʵÏÖÀàËÆµÄ¹¦ÄÜ£¬ÈçÏÂËùʾ£º
create or replace procedure proc_dropifexists(
p_table in varchar2
) is
v_count number(10);
begin
&nbs ......