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

Oracle»Ø¹ö¶Î¸ÅÄîÓ÷¨¹æ»®¼°ÎÊÌâµÄ½â¾ö

·¢²¼Ê±¼ä:2006-11-09 00:50:09À´Ô´:ºìÁª×÷Õß:coolbg
»Ø¹ö¶Î¹ÜÀíÒ»Ö±ÊÇORACLEÊý¾Ý¿â¹ÜÀíµÄÒ»¸öÄÑÌ⣬±¾ÎÄͨ¹ýʵÀý½éÉÜORACLE»Ø¹ö¶ÎµÄ¸ÅÄÓ÷¨ºÍ¹æ»®¼°ÎÊÌâµÄ½â¾ö¡£

»Ø¹ö¶Î¸ÅÊö

»Ø¹ö¶ÎÓÃÓÚ´æ·ÅÊý¾ÝÐÞ¸Ä֮ǰµÄÖµ£¨°üÀ¨Êý¾ÝÐÞ¸Ä֮ǰµÄλÖúÍÖµ£©¡£»Ø¹ö¶ÎµÄÍ·²¿°üº¬ÕýÔÚʹÓõĸûعö¶ÎÊÂÎñµÄÐÅÏ¢¡£Ò»¸öÊÂÎñÖ»ÄÜʹÓÃÒ»¸ö»Ø¹ö¶ÎÀ´´æ·ÅËüµÄ»Ø¹öÐÅÏ¢£¬¶øÒ»¸ö»Ø¹ö¶Î¿ÉÒÔ´æ·Å¶à¸öÊÂÎñµÄ»Ø¹öÐÅÏ¢¡£

»Ø¹ö¶ÎµÄ×÷ÓÃ

ÊÂÎñ»Ø¹ö£ºµ±ÊÂÎñÐ޸ıíÖÐÊý¾ÝµÄʱºò£¬¸ÃÊý¾ÝÐÞ¸ÄÇ°µÄÖµ£¨¼´Ç°Ó°Ïñ£©»á´æ·ÅÔڻعö¶ÎÖУ¬µ±Óû§»Ø¹öÊÂÎñ£¨ROLLBACK£©Ê±£¬ORACLE½«»áÀûÓûعö¶ÎÖеÄÊý¾ÝÇ°Ó°ÏñÀ´½«Ð޸ĵÄÊý¾Ý»Ö¸´µ½Ô­À´µÄÖµ¡£

ÊÂÎñ»Ö¸´£ºµ±ÊÂÎñÕýÔÚ´¦ÀíµÄʱºò£¬Àý³Ìʧ°Ü£¬»Ø¹ö¶ÎµÄÐÅÏ¢±£´æÔÚÖØ×öÈÕÖ¾ÎļþÖУ¬ORACLE½«ÔÚÏ´δò¿ªÊý¾Ý¿âʱÀûÓûعöÀ´»Ö¸´Î´Ìá½»µÄÊý¾Ý¡£

¶ÁÒ»ÖÂÐÔ£ºµ±Ò»¸ö»á»°ÕýÔÚÐÞ¸ÄÊý¾Ýʱ£¬ÆäËûµÄ»á»°½«¿´²»µ½¸Ã»á»°Î´Ìá½»µÄÐ޸ġ£¶øÇÒ£¬µ±Ò»¸öÓï¾äÕýÔÚÖ´ÐÐʱ£¬¸ÃÓï¾ä½«¿´²»µ½´Ó¸ÃÓï¾ä¿ªÊ¼Ö´ÐкóµÄδÌá½»µÄÐ޸ģ¨Óï¾ä¼¶¶ÁÒ»ÖÂÐÔ£©¡£µ±ORACLEÖ´ÐÐSELECTÓï¾äʱ£¬ORACLEÒÀÕÕµ±Ç°µÄϵͳ¸Ä±äºÅ£¨SYSTEM CHANGE NUMBER-SCN£©À´±£Ö¤ÈκÎÇ°ÓÚµ±Ç°SCNµÄδÌá½»µÄ¸Ä±ä²»±»¸ÃÓï¾ä´¦Àí¡£¿ÉÒÔÏëÏ󣺵±Ò»¸ö³¤Ê±¼äµÄ²éѯÕýÔÚÖ´ÐÐʱ£¬ÈôÆäËû»á»°¸Ä±äÁ˸òéѯҪ²éѯµÄij¸öÊý¾Ý¿é£¬ORACLE½«ÀûÓûعö¶ÎµÄÊý¾ÝÇ°Ó°ÏñÀ´¹¹ÔìÒ»¸ö¶ÁÒ»ÖÂÐÔÊÓͼ¡£

ÊÂÎñ¼¶µÄ¶ÁÒ»ÖÂÐÔ

ORACLEÒ»°ãÌṩSQLÓï¾ä¼¶£¨SQL STATEMENT LEVEL£©µÄ¶ÁÒ»ÖÂÐÔ£¬¿ÉÒÔÓÃÒÔÏÂÓï¾äÀ´ÊµÏÖÊÂÎñ¼¶µÄ¶ÁÒ»ÖÂÐÔ¡£

SET TRANSACTION READ ONLY£»

»ò£º

SET TANNSACTION SERIALIZABLE£»

ÒÔÉÏÁ½¸öÓï¾ä¶¼½«ÔÚÊÂÎñ¿ªÊ¼ºóÌṩ¶ÁÒ»ÖÂÐÔ¡£ÐèҪעÒâµÄÊÇ£¬Ê¹Óõڶþ¸öÓï¾ä¶ÔÊý¾Ý¿âµÄ²¢·¢ÐÔºÍÐÔÄܽ«´øÀ´Ó°Ïì¡£

»Ø¹ö¶ÎµÄÖÖÀà

ϵͳ»Ø¹ö¶Î£ºµ±Êý¾Ý¿â´´½¨ºó£¬½«×Ô¶¯´´½¨Ò»¸öϵͳ»Ø¹ö¶Î£¬¸Ã»Ø¹ö¶ÎÖ»ÓÃÓÚ´æ·Åϵͳ±í¿Õ¼äÖжÔÏóµÄÇ°Ó°Ïñ¡£

·Çϵͳ»Ø¹ö¶Î£ºÓµÓжà¸ö±í¿Õ¼äµÄÊý¾Ý¿âÖÁÉÙÓ¦¸ÃÓÐÒ»¸ö·Çϵͳ»Ø¹ö¶Î£¬ÓÃÓÚ´æ·Å·Çϵͳ±í¿Õ¼äÖжÔÏóµÄÊý¾ÝÇ°Ó°Ïñ¡£·Çϵͳ»Ø¹ö¶ÎÓÖ·ÖΪ˽Óлعö¶ÎºÍ¹«Óлعö¶Î£¬Ë½Óлعö¶ÎÓ¦ÔÚ²ÎÊýÎļþµÄROLLBACK SEGMENTS²ÎÊýÖÐÁгö£¬ÒÔ±ãÀý³ÌÆô¶¯Ê±×Ô¶¯Ê¹ÆäÔÚÏߣ¨ONLINE£©¡£¹«Óлعö¶ÎÒ»°ãÔÚOPS£¨ORACLE²¢ÐзþÎñÆ÷£©ÖгöÏÖ£¬½«ÔÚÀý³ÌÆô¶¯Ê±×Ô¶¯ÔÚÏß¡£

DEFERED»Ø¹ö¶Î£º¸Ã»Ø¹ö¶ÎÔÚ±í¿Õ¼äÀëÏߣ¨OFFLINE£©Ê±ÓÉϵͳ×Ô¶¯´´½¨£¬µ±±í¿Õ¼äÔÙ´ÎÔÚÏߣ¨ONLINE£©Ê±ÓÉϵͳ×Ô¶¯É¾³ý£¬ÓÃÓÚ´æ·Å±í¿Õ¼äÀëÏßʱ²úÉúµÄ»Ø¹öÐÅÏ¢¡£

»Ø¹ö¶ÎµÄʹÓÃ

·ÖÅä»Ø¹ö¶Î£ºµ±ÊÂÎñ¿ªÊ¼Ê±£¬ORACLE½«Îª¸ÃÊÂÎñ·ÖÅä»Ø¹ö¶Î£¬²¢½«ÓµÓÐ×îÉÙÊÂÎñµÄ»Ø¹ö¶Î·ÖÅä¸ø¸ÃÊÂÎñ¡£ÊÂÎñ¿ÉÒÔÓÃÒÔÏÂÓï¾äÉêÇëÖ¸¶¨µÄ»Ø¹ö¶Î£º

SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment

ÊÂÎñ½«ÒÔ˳Ðò£¬Ñ­»·µÄ·½Ê½Ê¹Óûعö¶ÎµÄÇø£¨EXTENTS£©£¬µ±µ±Ç°ÇøÓÃÂúºóÒƵ½ÏÂÒ»¸öÇø¡£¼¸¸öÊÂÎñ¿ÉÒÔдÔڻعö¶ÎµÄͬһ¸öÇø£¬µ«Ã¿¸ö»Ø¹ö¶ÎµÄ¿éÖ»ÄÜ°üº¬Ò»¸öÊÂÎñµÄÐÅÏ¢¡£

ÀýÈ磨Á½¸öÊÂÎñʹÓÃͬһ¸ö»Ø¹ö¶Î£¬¸Ã»Ø¹ö¶ÎÓÐËĸöÇø£©£º

1¡¢ÊÂÎñÔÚ½øÐÐÖУ¬ËüÃÇÕýÔÚʹÓûعö¶ÎµÄµÚÈý¸öÇø£»

2¡¢µ±Á½¸öÊÂÎñ²úÉú¸ü¶àµÄ»Ø¹öÐÅÏ¢£¬ËüÃǽ«¼ÌÐøʹÓõÚÈý¸öÇø£»

3¡¢µ±µÚÈý¸öÇøÂúºó£¬ÊÂÎñ½«Ð´µ½µÚËĸöÇø£¬µ±ÊÂÎñ¿ªÊ¼Ð´µ½Ò»¸öеÄÇøʱ£¬³ÆΪ·­×ª£¨WRAP£©£»

4¡¢µ±µÚËĸöÇøÓÃÂúʱ£¬Èç¹ûµÚÒ»¸öÇøÊÇ¿ÕÏлò·Ç»î¶¯£¨Ê¹ÓøÃÇøµÄËùÓÐÊÂÎñÍê³É¶øûÓлµÄÊÂÎñ£©µÄ£¬ÊÂÎñ½«½Ó×ÅʹÓõÚÒ»¸öÇø¡£

»Ø¹ö¶ÎµÄÀ©ÕÅ£¨EXTEND£©

µ±µ±Ç°»Ø¹ö¶ÎÇøµÄËùÓпéÓÃÍê¶øÊÂÎñ»¹ÐèÒª¸ü¶àµÄ»Ø¹ö¿Õ¼äʱ£¬»Ø¹ö¶ÎµÄÖ¸Õ뽫ÒƵ½ÏÂÒ»¸öÇø¡£µ±×îºóÒ»¸öÇøÓÃÍָ꣬Õ뽫ÒƵ½µÚÒ»¸öÇøµÄÇ°Ãæ¡£»Ø¹ö¶ÎÖ¸ÕëÒƵ½ÏÂÒ»¸öÇøµÄÇ°ÌáÊÇÏÂÒ»¸öÇøûÓлµÄÊÂÎñ£¬Í¬Ê±Ö¸Õë²»ÄÜ¿çÇø¡£µ±ÏÂÒ»¸öÇøÕýÔÚʹÓÃʱ£¬ÊÂÎñ½«Îª»Ø¹ö¶Î·ÖÅäÒ»¸öеÄÇø£¬ÕâÖÖ·ÖÅä³ÆΪ»Ø¹ö¶ÎµÄÀ©Õ¹¡£»Ø¹ö¶Î½«Ò»Ö±À©Õ¹µ½¸Ã»Ø¹ö¶ÎÇøµÄ¸öÊýµ½´ï»Ø¹ö¶ÎµÄ²ÎÊýMAXEXTENTSµÄֵʱΪֹ¡£

»Ø¹ö¶ÎµÄ»ØÊÕºÍOPTIMAL²ÎÊý

OPTIMAL²ÎÊýÖ¸Ã÷»Ø¹ö¶Î¿ÕÏÐʱÊÕËõµ½µÄλÖã¬Ö¸Ã÷»Ø¹ö¶ÎµÄOPTIMAL²ÎÊý¿ÉÒÔ¼õÉٻعö¶Î¿Õ¼äµÄÀË·Ñ¡£

´´½¨»Ø¹ö¶Î

Óï·¨£º

CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment
¡¡¡¡¡¡¡¡ [TABLESPACE tablespace]
¡¡¡¡¡¡¡¡ [STORAGE ([INITIAL integer[K|M]] [NEXT integer[K|M]]
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ [MINEXTENTS integer]
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ [MAXTENTS {integer|UNLIMITED}]
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ [OPTIMAL {integer[K|M]|NULL}]) ]

×¢£º

»Ø¹ö¶Î¿ÉÒÔÔÚ´´½¨Ê±Ö¸Ã÷PRIVATE»òPUBLIC£¬Ò»µ©´´½¨½«²»ÄÜÐ޸ġ£

MINEXTENTS ±ØÐë´óÓÚµÈÓÚ2

PCTINCREASE±ØÐëÊÇ0

OPTIMALÈç¹ûÒªÖ¸¶¨£¬±ØÐë´óÓÚµÈÓڻعö¶ÎµÄ³õʼ´óС£¨ÓÉMINEXTENTSÖ¸¶¨£©

½¨Ò飺

Ò»°ãÇé¿öÏ£¬INITIAL=NEXT

ÉèÖÃOPTIMAL²ÎÊýÀ´½ÚÔ¼¿Õ¼äµÄʹÓÃ

²»ÒªÉèÖÃMAXEXTENTSΪUNLIMITED

»Ø¹ö¶ÎÓ¦´´½¨ÔÚÒ»¸öÌض¨µÄ»Ø¹ö¶Î±í¿Õ¼äÄÚ

Àý£º

CREATE ROLLBACK SEGMENT rbs01
TABLESPACE rbs
STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 10
¡¡¡¡¡¡¡¡ MAXEXTENTS 500 OPTIMAL 1000K);

ʹ»Ø¹ö¶ÎÔÚÏß-

µ±»Ø¹ö¶Î´´½¨ºó£¬»Ø¹ö¶ÎÊÇÀëÏߵģ¬²»Äܱ»Êý¾Ý¿âʹÓã¬ÎªÁËʹ»Ø¹ö¶Î±»ÊÂÎñÀûÓ㬱ØÐ뽫»Ø¹ö¶ÎÔÚÏß¡£¿ÉÒÔÓÃÒÔÏÂÃüÁîʹ»Ø¹ö¶ÎÔÚÏߣº

ALTER ROLLBACK SEGMENT rollback_segment ONLINE;

Àý£º

ALTER ROLLBACK SEGMENT rbs01 ONLINE£»

ΪÁËʹ»Ø¹ö¶ÎÔÚÊý¾Ý¿âÆô¶¯Ê±×Ô¶¯ÔÚÏߣ¬¿ÉÒÔÔÚÊý¾Ý¿âµÄ²ÎÊýÎļþÖÐÁгö»Ø¹ö¶ÎµÄÃû×Ö¡£ÀýÈçÔÚ²ÎÊýÎļþÖмÓÈëÒÔÏÂÒ»ÐУº

ROLLBACK_SEGMENT=(rbs01,rbs02)
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 1 ÌõÆÀÂÛ

  1. coolbg ÓÚ 2006-11-09 00:51:03·¢±í:

    Ð޸Ļعö¶ÎµÄ´æ´¢²ÎÊý

    ¿ÉÒÔʹÓÃALTER ROLLBACK SEGMENTÃüÁîÐ޸Ļعö¶ÎµÄ´æ´¢²ÎÊý£¨°üÀ¨OPTIMAL£¬MAXEXTENTS£©¡£

    Óï·¨£º

    ALTER ROLLBACK SEGMENT rollback_segment
    ¡¡¡¡[STORAGE ([NEXT integer[K|M]]
    ¡¡¡¡¡¡¡¡¡¡¡¡ [MINEXTENTS integer]
    ¡¡¡¡¡¡¡¡¡¡¡¡ [MAXEXTENTS {integer|UNLIMITED}]
    ¡¡¡¡¡¡¡¡¡¡¡¡ [OPTIMAL {integer[K|M]|NULL}]) ]

    Àý£º

    ALTER ROLLBACK SEGMENT rbs01 STORAGE (MAXEXTENTS 1000);

    »ØÊջعö¶ÎµÄ¿Õ¼ä

    Èç¹ûÖ¸¶¨Á˻عö¶ÎµÄOPTIMAL²ÎÊý£¬ORACLE½«×Ô¶¯»ØÊջعö¶Îµ½OPTIMALÖ¸¶¨µÄλÖá£Óû§Ò²¿ÉÒÔÊÖ¶¯»ØÊջعö¶ÎµÄ¿Õ¼ä¡£

    Óï·¨£º

    ALTER ROLLBACK SEGMENT rollback_segment SHRINK [TO integer [K|M]];

    ˵Ã÷£º

    Èç¹û²»Ö¸Ã÷TO integerµÄÊýÖµ£¬ORACLE½«ÊÔͼ»ØÊÕµ½OPTIMALµÄλÖá£

    Àý£º

    ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 2M;

    ʹ»Ø¹ö¶ÎÀëÏß

    ΪÁË´ïµ½ÒÔÏÂÁ½¸öÄ¿µÄ½«Òª»Ø¹ö¶ÎÀëÏߣº

    1.×èֹеÄÊÂÎñʹÓøûعö¶Î£»

    2.¸Ã»Ø¹ö¶Î±ØÐëɾ³ý¡£

    Óï·¨£º

    ALTER ROLLBACK SEGMENT rollback_segment OFFLINE;

    Àý£º

    ALTER ROLLBACK SEGMENT rbs01 OFFLINE;

    ˵Ã÷£º

    Èç¹ûÓÐÊÂÎñÕýÔÚʹÓøûعö¶Î£¬ÔËÐиÃÃüÁîºó£¬»Ø¹ö¶ÎµÄ״̬½«ÊÇPENDING OFFLINE¡£ÊÂÎñ½áÊøºó£¬×´Ì¬½«¸ÄΪOFFLINE£¬¿ÉÒÔͨ¹ýV$ROLLSTAT²éѯ»Ø¹ö¶ÎµÄ״̬¡£

    ɾ³ý»Ø¹ö¶Î

    µ±»Ø¹ö¶Î²»ÔÙÐèÒª»òÒªÖؽ¨ÒԸıäINITIAL£¬NEXT»òMINEXTENTS²ÎÊýʱ£¬¿ÉÒÔ½«Æäɾ³ý¡£ÒªÉ¾³ý»Ø¹ö¶Î£¬²»Ðíʹ¸Ã»Ø¹ö¶ÎÀëÏß¡£

    Óï·¨£º

    DROP ROLLBACK SEGMENT rollback_segment;

    Àý£º

    DROP ROLLBACK SEGMENT rbs01;

    ²éѯ»Ø¹ö¶ÎµÄÐÅÏ¢

    ËùÓÃÊý¾Ý×ֵ䣺DBA_ROLLBACK_SEGS

    ¿ÉÒÔ²éѯµÄÐÅÏ¢£º»Ø¹ö¶ÎµÄ±êʶ(SEGMENT_ID)¡¢Ãû³Æ(SEGMENT_NAME)¡¢ËùÔÚ±í¿Õ¼äTABLESPACE_NAME)¡¢ÀàÐÍ(OWNER)¡¢×´Ì¬(STATUS)¡£

    Àý£º

    SQL>SELECT segment_name,tablespace_name,owner,status FROM dba_rollback_segs;

    »Ø¹ö¶ÎµÄͳ¼ÆÐÅÏ¢

    Êý¾Ý×ֵ䣺V$ROLLNAME,V$ROLLSTAT

    Àý£º

    SQL>SELECT n.name,s.extents,s.rssize,s.optsize,s.hwmsize,s.xacts,s.status
    ¡¡¡¡¡¡¡¡FROM v$rollname n,v$rollstat s
    ¡¡¡¡¡¡¡¡WHERE n.usn=s.usn;


    »Ø¹ö¶ÎµÄµ±Ç°»î¶¯ÊÂÎñ

    Êý¾Ý×ֵ䣺V$SESSION,V$TRANSACTION

    Àý£º

    SQL>SELECT s.username,t.xidusn,t.ubafil,t.ubablk,t.used_ublk
    ¡¡¡¡¡¡¡¡FROM v$session s,v$transaction t
    ¡¡¡¡¡¡¡¡WHERE s.saddr=t.ses_addr;
    ¡¡¡¡ USERNAME¡¡¡¡XIDUSN¡¡¡¡ UBAFIL¡¡¡¡ UBABLK¡¡¡¡USED_UBLK
    -------¡¡¡¡-------- ----------- ----------- -----------
    ¡¡¡¡ SYSTEM¡¡¡¡¡¡¡¡¡¡2¡¡¡¡¡¡¡¡¡¡2¡¡¡¡¡¡¡¡7¡¡¡¡¡¡¡¡¡¡¡¡1
    ¡¡¡¡ SCOTT¡¡¡¡¡¡¡¡¡¡ 1¡¡¡¡¡¡¡¡¡¡2¡¡¡¡¡¡¡¡163¡¡¡¡¡¡¡¡¡¡1
    ¡¡¡¡ 2 rows selected.

    »Ø¹ö¶ÎµÄÊýÁ¿¹æ»®

    ¶ÔÓÚOLTPϵͳ£¬´æÔÚ´óÁ¿µÄСÊÂÎñ´¦Àí£¬Ò»°ã½¨Ò飺

    ÊýÁ¿¶àµÄС»Ø¹ö¶Î£»Ã¿ËĸöÊÂÎñÒ»¸ö»Ø¹ö¶Î£»Ã¿¸ö»Ø¹ö¶Î²»Òª³¬¹ýÊ®¸öÊÂÎñ¡£

    ¶ÔÓÚÅú´¦Àí£¬Ò»°ã½¨Ò飺

    ÉٵĴó»Ø¹ö¶Î£»Ã¿¸öÊÂÎñÒ»¸ö»Ø¹ö¶Î¡£

    »Ø¹ö¶ÎµÄÎÊÌâ¼°½â¾ö·½·¨

    ÎÊÌâÒ»£ºÊÂÎñÒªÇóµÄ»Ø¹ö¶Î¿Õ¼ä²»¹»£¬±íÏÖΪ±í¿Õ¼äÓÃÂú£¨ORA-01560´íÎ󣩣¬»Ø¹ö¶ÎÀ©Õ¹µ½´ï²ÎÊýMAXEXTENTSµÄÖµ£¨ORA-01628£©¡£

    ½â¾ö·½·¨£ºÏò»Ø¹ö¶Î±í¿Õ¼äÌí¼ÓÎļþ»òʹÒÑÓеÄÎļþ±ä´ó£»Ôö¼ÓMAXEXTENTSµÄÖµ¡£

    ÎÊÌâ¶þ£º¶ÁÒ»ÖÂÐÔ´íÎó£¨ORA-01555 SNAPSHOT TOO OLD£©

    ½â¾ö·½·¨£ºÔö¼ÓMINEXTENTSµÄÖµ£¬Ôö¼ÓÇøµÄ´óС£¬ÉèÖÃÒ»¸ö¸ßµÄOPTIMALÖµ¡£