oracle¸ßˮλÏß
ʲôÊÇË®Ïß(High Water Mark)?
----------------------------
ËùÓеÄoracle¶Î(segments£¬ÔÚ´Ë£¬ÎªÁËÀí½â·½±ã£¬½¨Òé°Ñsegment×÷Ϊ±íµÄÒ»¸öͬÒå´Ê) ¶¼ÓÐÒ»¸öÔÚ¶ÎÄÚÈÝÄÉÊý¾ÝµÄÉÏÏÞ£¬ÎÒÃǰÑÕâ¸öÉÏÏÞ³ÆÎª"high water mark"»òHWM¡£Õâ¸öHWMÊÇÒ»¸ö±ê¼Ç£¬ÓÃÀ´ËµÃ÷ÒѾÓжàÉÙûÓÐʹÓõÄÊý¾Ý¿é·ÖÅ䏸Õâ¸ösegment¡£HWMͨ³£Ôö³¤µÄ·ù¶ÈΪһ´Î5¸öÊý¾Ý¿é£¬ÔÔòÉÏHWMÖ»»áÔö´ó£¬²»»áËõС£¬¼´Ê¹½«±íÖеÄÊý¾ÝÈ«²¿É¾³ý£¬HWM»¹ÊÇΪÔÖµ£¬ÓÉÓÚÕâ¸öÌØµã£¬Ê¹HWMºÜÏóÒ»¸öË®¿âµÄÀúÊ·×î¸ßˮ룬ÕâÒ²¾ÍÊÇHWMµÄÔʼº¬Ò壬µ±È»²»ÄÜ˵һ¸öË®¿âûˮÁË£¬¾Í˵¸ÃË®¿âµÄÀúÊ·×î¸ßˮλΪ0¡£µ«ÊÇÈç¹ûÎÒÃÇÔÚ±íÉÏʹÓÃÁËtruncateÃüÁÔò¸Ã±íµÄHWM»á±»ÖØÐÂÖÃΪ0¡£
HWMÊý¾Ý¿âµÄ²Ù×÷ÓÐÈçÏÂÓ°Ï죺
a) È«±íɨÃèͨ³£Òª¶Á³öÖ±µ½HWM±ê¼ÇµÄËùÓеÄÊôÓڸñíÊý¾Ý¿â¿é£¬¼´Ê¹¸Ã±íÖÐûÓÐÈκÎÊý¾Ý¡£
b) ¼´Ê¹HWMÒÔÏÂÓпÕÏеÄÊý¾Ý¿â¿é£¬¼üÈëÔÚ²åÈëÊý¾ÝʱʹÓÃÁËappend¹Ø¼ü×Ö£¬ÔòÔÚ²åÈëʱʹÓÃHWMÒÔÉϵÄÊý¾Ý¿é£¬´ËʱHWM»á×Ô¶¯Ôö´ó¡£
ÈçºÎÖªµÀÒ»¸ö±íµÄHWM£¿
a) Ê×ÏÈ¶Ô±í½øÐзÖÎö:
ANALYZE TABLE <tablename> ESTIMATE/COMPUTE STATISTICS;
b) SELECT blocks, empty_blocks, num_rows
from user_tables
WHERE table_name = <tablename>;
BLOCKS Áдú±í¸Ã±íÖÐÔø¾Ê¹ÓùýµÃÊý¾Ý¿â¿éµÄÊýÄ¿£¬¼´Ë®Ïß¡£
EMPTY_BLOCKS ´ú±í·ÖÅ䏸¸Ã±í£¬µ«ÊÇÔÚË®ÏßÒÔÉϵÄÊý¾Ý¿â¿é£¬¼´´ÓÀ´Ã»ÓÐʹÓõÄÊý¾Ý¿é¡£
ÈÃÎÒÃÇÒÔÒ»¸öÓÐ28672ÐеÄBIG_EMP1±íΪÀý½øÐÐ˵Ã÷£º
1) SQL> SELECT segment_name,segment_type,blocks
from dba_segments
WHERE segment_name='BIG_EMP1';
SEGMENT_NAME SEGMENT_TYPE BLOCKS EXTENTS
----------------------------- ----------------- ---------- -------
BIG_EMP1 TABLE 1024 2
1 row selected.
2) SQL> ANALYZE TABLE big_emp1 ESTIMATE STATISTICS;
Statement processed.
3) SQL> SELECT table_name,num_rows,blocks,empty_blocks
from user_tables
WHERE table_name='BIG_EMP1';
TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS
------------------------------ ---------- ---------- ------------
BIG_EMP1 28672 700 323
1 row selected.
×¢Ò⣺
BLOCKS + EMPTY_BLOCKS (700+323=1023)±ÈDBA_SEGMENTS.BLOCKSÉÙ¸öÊý¾Ý¿â¿é£¬ÕâÊÇÒòΪÓÐÒ»¸öÊý¾Ý¿â¿é±»±£ÁôÓÃ×÷segment header¡£DBA_SEGMENTS.BLOCKS ±íʾ·ÖÅ䏸Õâ¸ö±íµÄËùÓеÄÊý¾Ý¿â¿éµÄÊýÄ¿¡£U
Ïà¹ØÎĵµ£º
Êý¾Ý¿âÊý¾Ý
ID
UserName
Date
1
User1
2010/4/27
1
User1
2010/4/11
1
User1
2010/4/1
ÒªÇó£º
»ñÈ¡×îÐÂÈÕÆÚµÄÒ»ÌõÊý¾Ý
SqlÓï¾ä£º
select t.* from tb t where date = (select max(date) from tb where id = t.id) order by t.id ......
ôßÉÏͨ¹ýÔ¤±àÒë²ûÊöµÀ¹²Ïí³Ø×îºóµ½SGA£¬ÕâÀï½øÒ»²½ËµÃ÷Ò»ÏÂSGAÖÐÁíÒ»¸ö´ó¿é£¬Êý¾Ý»º³åÇø¡£
Ê×ÏÈÁ˽âÏÂSGAÖÖ´óÖÂÓÐÄÇЩ¶«Î÷£¬ÕâЩ¶«Î÷Ëæ×ÅÊý¾Ý¿â°æ±¾µÄÔö¼Ó»áÓÐËùÔö¼Ó£¬²»¹ý´óÖÂÉÏÓ¦¸ÃÒ»Ö£¬ÕâÒ²ÊÇ»ù±¾ËùÓеÄÌåϵ½á¹¹¶¼»áÃèÊöµÄ¶«Î÷£º ......
³£¼ûºǫ́½ø³Ì°üÀ¨:
• Êý¾Ý¿âд½ø³Ì (DBWn):½«Êý¾Ý¿â»º³åÇø¸ßËÙ»º´æÖеľ¹ýÐ޸ĵĻº³åÇø(»ÒÊý¾Ý»º ³åÇø)ÒÔÒì²½·½Ê½Ð´Èë´ÅÅÌ
• ÈÕ־д½ø³Ì (LGWR):½«ÈÕÖ¾»º³åÇøÖгÆÎªÖØ×öÐÅÏ¢µÄ»Ö¸´ÐÅϢдÈë´ÅÅÌÉϵÄÖØ×öÈÕ Ö¾Îļþ
• ¼ì²éµã½ø³Ì (CKPT):ÔÚ¿ØÖÆÎļþºÍÿ¸öÊý¾ÝÎļþÍ·ÖмǼ¼ì²éµãÐÅÏ¢
• ϵͳ¼àÊÓÆ÷½ø³ ......
•ºÎΪÉó¼Æ
Êý¾Ý¿âÉ󼯣¬¾ÍÊǶÔÊý¾Ý¿âµÄ»î¶¯×ö¸ú×ټǼ£¬Ö÷Òª°üÀ¨Êý¾Ý¿âÁ¬½Ó£¬SQLÓï¾äÖ´ÐУ¬Êý¾Ý¿â¶ÔÏó·ÃÎÊÕâЩ·½ÃæµÄ¸ú×ټǼ¡£
•ÏÖʵ×÷ÓÃ
°²È«¿ØÖÆ¡¢¸ú×ÙÊý¾Ý±ä»¯¡¢³ÌÐòBUGµ÷ÊÔ¡¢×Ô¶¨ÒåµÄÊý¾Ý»ã×Ü·ÖÎö¡¢²Ù×÷ÈÕÖ¾
•´æ´¢·½Ê½
Ò»ÖÖÊÇ´æ´¢ÔÚ²Ù×÷ϵͳÎļþÖУ¬Ò»ÖÖÊÇ´æ´¢ÔÚsystem±í¿Õ¼äÖеÄSYS.AUD$±íÖÐ
......
[root@GISDB ~]$ su - oracle
[oracle@GISDB ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.4.0 - Production on Tue Oct 13 11:03:03 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
To ......