Oracle ¿éÇå³ý(block cleanout)
½ñÌìÔÚÍøÉÏ¿´µ½Ò»Æª¹ØÓÚBLOCK CLEANOUT²»´íµÄÎÄÕ£¬ËäÈ»ÀïÃæµÄÓиö±ðµØ·½±È½ÏÄѶ®£¬¿É»¹ÊÇÏÈת¹ýÀ´£¬µÈÒԺ󶮵öàһЩÁË×Ô¼ºÒ²×ö×öʵÑé²Ù×÷²Ù×÷¡£
=========================================================
Oracle £¨block cleanout£©
CleanoutÓÐ2ÖÖ£¬Ò»ÖÖÊÇfast commit cleanout,ÁíÒ»ÖÖÊÇdelayed block cleanout.
OracleµÄÿ¸öÊÂÎñ£¨transaction£©Ð޸IJ»³¬¹ý10%buffer cacheµÄÊý¾Ý¿éʱ£¬oracle×öµÄÊÇfast commit cleanout¡£Èç¹ûÒ»¸öÊÂÎñ£¨transaction£©Ð޸ĵĿ鳬¹ý10% buffer cache,ÄÇô³¬¹ýµÄ¿é¾ÍÖ´ÐÐdelayed block cleanout£¬»¹ÓÐÒ»ÖÖÇé¿ö£¬¾ÍÊǵ±ÊÂÎñ»¹Î´commitʱ£¬Ð޸ĵÄÊý¾Ý¿éÒѾдÈëÓ²ÅÌ£¬µ±·¢Éúcommitʱoracle²¢²»»á°ÑblockÖØÐ¶ÁÈë×öcleanout£¬¶øÊǰÑcleanoutÁôµ½ÏÂÒ»´Î¶Ô´Ë¿éµÄ·ÃÎÊÊÇÍê³É¡£
ÏÂÃæ¹¹Ôì»·¾³À´²âÊÔ
ÿ¸öÊý¾Ý¿éÒ»ÌõÊý¾Ý£¨Êý¾Ý¿éΪ8k£©
SQL> create table test (id int,
name char(600))
pctfree 99 pctused 1;
±íÒÑ´´½¨¡£
SQL> insert into test select object_id,object_name from all_objects where rownum< 1000;
ÒÑ´´½¨999ÐС£
SQL> show parameters db_cache_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------
db_cache_size big integer 32M
SQL> l
1 select rownum, dbms_rowid.rowid_relative_fno(rowid) "file#",dbms_rowid.rowid_block_number(rowid) "block#" from test
ROWNUM file# block#
---------- ---------- ----------
1 1 60762
….
999 1 62064
--Delay clean out µÄ±íÏó
SQL> update test set id=id + 1;
ÒѸüÐÂ999ÐС£
SQL> commit;
Ìá½»Íê³É¡£
SQL> set autot on
SQL> select count(*) from test;
COUNT(*)
----------
999
--Ö´Ðмƻ®
----------------------------------------------------------
Plan hash value: 1950795681
-------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-------------------------------------------------------------------
| 0
Ïà¹ØÎĵµ£º
ÎÊ£ºÊ²Ã´ÊÇNULL£¿
´ð£ºÔÚÎÒÃDz»ÖªµÀ¾ßÌåÓÐʲôÊý¾ÝµÄʱºò£¬Ò²¼´Î´Öª£¬¿ÉÒÔÓÃNULL£¬ÎÒÃdzÆËüΪ¿Õ£¬ORACLEÖУ¬º¬ÓпÕÖµµÄ±íÁ㤶ÈΪÁã¡£
ORACLEÔÊÐíÈκÎÒ»ÖÖÊý¾ÝÀàÐ͵Ä×Ö¶ÎΪ¿Õ£¬³ýÁËÒÔÏÂÁ½ÖÖÇé¿ö£º
1¡¢Ö÷¼ü×ֶΣ¨primary key£©£¬
2¡¢¶¨ÒåʱÒѾ¼ÓÁËNOT NULLÏÞÖÆÌõ¼þµÄ×Ö¶Î
˵Ã÷£º
1¡¢µÈ¼ÛÓÚûÓÐÈκÎÖµ¡¢ÊÇδ֪ ......
²éѯ£ºselectÓï¾ä£¬¶à±í²éѯ£¬group by ·Ö×飬having ¶Ô·Ö×éºóµÄÿһ¸ö×é½øÐйýÂË£¬order by ÅÅÐò¡£(selectÓï¾ä¶à±í²éѯÕâ¸ö×îÖØÒª)
DMLÓï¾ä£ºinsert into emp() values(),insert into emp (select * from emp2),
delete from emp where...
update emp set sal =.. where ..
rollback;»Ö¸´ ......
1) »ù±¾½á¹¹
BEGIN
... --Óï¾ä
EXCEPTION -- ÀýÍâ´¦Àí
WHEN ...
...
WHEN OTHERS
...
END;
2) ³£ÓÃÔ¤¶¨ÒåÀýÍâ
EXCEPTION
WHEN CU ......
Oracle ¼ì²é¶ÔÏó
8.3. Oracle¶ÔÏóµÄ״̬
¹²·ÖÁù¸ö²¿·Ö£¬·Ö±ðΪ£º¼ì²éOracle¿ØÖÆÎļþ״̬£»¼ì²éOracleÔÚÏßÈÕ־״̬£»¼ì²éOracle±í¿Õ¼äµÄ״̬£»¼ì²éOracleËùÓÐÊý¾ÝÎļþ״̬£»¼ì²éOracleËùÓÐ±í¡¢Ë÷Òý¡¢´æ´¢¹ý³Ì¡¢´¥·¢Æ÷¡¢°üµÈ¶ÔÏóµÄ״̬£»¼ì²éOracleËùÓлعö¶ÎµÄ״̬¡£
8.3.1. Oracle¿ØÖÆÎļþ״̬
¼ì²é¿ØÖÆÎļþ×´Ì ......
OracleÊý¾Ý¿â×Ö·û¼¯ÎÊÌâ½âÎö(±¾ÎÄϵÕûÀíËûÈËÌû×ÓÐγÉ)
¾³£¿´µ½Ò»Ð©ÅóÓÑÎÊORACLE×Ö·û¼¯·½ÃæµÄÎÊÌ⣬ÎÒÏëÒÔµü´úµÄ·½Ê½À´½éÉÜһϡ£
µÚÒ»´Îµü´ú£ºÕÆÎÕ×Ö·û¼¯·½ÃæµÄ»ù±¾¸ÅÄî
ÓÐЩÅóÓÑ¿ÉÄÜ»áÈÏΪÕâÊǶà´ËÒ»¾Ù£¬µ«Êµ¼ÊÉÏÕýÊÇÓÉÓÚ¶ÔÏà¹Ø»ù±¾¸ÅÄî°ÑÎÕ²»Ç壬²Åµ¼ÖÂÁËÖî¶àÎÊÌâºÍÒÉÎÊ¡£
Ê×ÏÈÊÇ×Ö·û¼¯µÄ¸ÅÄî¡£
ÎÒÃÇÖªµÀ£¬ ......