1)UNDO SEGMENTÀÇ °³³ä
• UNDO SEGMENT´Â DataÀÇ º¯°æ»çÇ×, Áï transactionÀÌ data¸¦ ¼öÁ¤Çϱâ ÀüÀÇ °ªÀ» ÀúÀåÇÔÀ¸·Î½á ¾ðÁ¦µçÁö ±âÁ¸ÀÇ data·Î recovery½ÃŰ´Â ¿ªÇÒÀ» ÇÑ´Ù.
• Áï, ³»ºÎÀûÀ¸·Î UNDO SEGMENT´Â º¯°æÀü data¿¡ ´ëÇÑ °ª°ú À§Ä¡ °ªÀÎ File ID, BLOCK ID, µîÀÇ Á¤º¸¸¦ ´ã°í ÀÖ´Ù.
• ÀÌ·¯ÇÑ UNDO ±â´É ¿Ü¿¡µµ »ç¿ëÀÚ¿¡°Ô READ-consistency(Àбâ Àϰü¼º)¸¦ Á¦°øÇÏ´Â ±â´Éµµ °¡Áö°í ÀÖ´Ù.
• ¶ÇÇÑ UNDO SEGMENT´Â ¿©·¯ °³ÀÇ transaction º¯°æ Á¤º¸¸¦ ±â·ÏÇÒ ¼ö ÀÖ´Ù. Áï, ÇϳªÀÇ UNDO SEGMENT¸¦ ¿©·¯ °³ÀÇ transactionÀÌ µ¿½Ã¿¡ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, ÀÌ ¶§ ÀúÀåµÇ´Â ±âº» ´ÜÀ§´Â BLOCK ´ÜÀ§ÀÌ´Ù.
2)UNDO SEGMENTÀÇ ±â´Éf) ROLLBACK SEGMENTÀÇ ¼ºÀå
a) transaction rollback b) transaction recovery c) READ-consistency(Àбâ Àϰü¼º) 3)UNDO SEGMENTÀÇ Á¾·ù
a) SYSTEM UNDO SEGMENT b) NON-SYSTEM UNDO SEGMENT c) DEFERRED UNDO SEGMENT 4)»ç¿ëÁßÀÎ UNDO SEGMENTÀÇ È®ÀÎ
a) SQL> SHOW PARAMETER undo_management;·Î È®ÀÎ b) DBA_ROLLBACK_SEGS ºä¸¦ »ç¿ëÇÏ¿© È®ÀÎ SQL> SHOW PARAMETER undo_management; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO SQL> SELECT segment_name,tablespace_name FROM dba_rollback_segs; SEGMENT_NAME TABLESPACE_NAME ------------------------------ ------------------------------ SYSTEM SYSTEM _SYSSMU1$ UNDOTBS1 _SYSSMU2$ UNDOTBS1 _SYSSMU3$ UNDOTBS1 _SYSSMU4$ UNDOTBS1 _SYSSMU5$ UNDOTBS1 _SYSSMU6$ UNDOTBS1 _SYSSMU7$ UNDOTBS1 _SYSSMU8$ UNDOTBS1 _SYSSMU9$ UNDOTBS1 _SYSSMU10$ UNDOTBS1 11 rows selected. SQL>
UNDO SEGMENT °ü¸®¹æ¹ý °ü¸®ÀÚ°¡ UNDO tablspace¸¦ »ý¼ºÇØ ÁÖ°í ¸î ÆÄ¶ó¹ÌÅ͸¸ ¼³Á¤ÇØ ÁÖ¸é server°¡ undo segment¿¡ ´ëÇÑ °ü¸®¸¦ ¸ðµÎ ÀÚµ¿À¸·Î ÇÑ´Ù. Automatic UNDO management¸¦ À§ÇÏ¿© ¼³Á¤ÇØ¾ß ÇÒ ÆÄ¶ó¹ÌÅÍ´Â ´ÙÀ½°ú °°´Ù. UNDO_MANAGEMENT=AUTO UNDO_TABLESPACE=tablespace¸í UNDO_TABLESPACE´Â UNDO data¸¦ °ü¸®ÇÒ tablespace¸¦ ÁöÁ¤ÇØ ÁÖ´Â ÆÄ¶ó¹ÌÅÍ·Î ÃʱâÈ ÆÄ¸®¹ÌÅÍ ÆÄÀÏ initSID.ora¿¡¼ Á¤ÇØ Áְųª ½Ã½ºÅÛ ±âµ¿Áß¿¡ ALTER SYSTEM SET ¹®À» »ç¿ëÇÏ¿© ¼³Á¤ÇØ ÁÙ ¼ö µµ ÀÖ´Ù. SQL> ALTER SYSTEM SET undo_tablespace= undotbs1;
1) Automatic Undo Management a) AUTOMATIC UNDO tablespaceÀÇ »ý¼º b) UNDO TablespaceÀÇ º¯°æ°ú switching c) UNDO TablespaceÀÇ »èÁ¦ ¡¼¿¹Á¦¡½ SQL> column file_name format a60; SQL> column tablespace_name format a10; SQL> select file_name,tablespace_name from dba_data_files; FILE_NAME TABLESPACE ------------------------------------------------------------ ---------- /export/home/oracle/app/oracle/oradata/orcl/users01.dbf USERS /export/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf SYSAUX /export/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf UNDOTBS1 /export/home/oracle/app/oracle/oradata/orcl/system01.dbf SYSTEM SQL> CREATE UNDO TABLESPACE undotbs2 2 datafile '/export/home/oracle/app/oracle/oradata/orcl/undotbs02.dbf' SIZE 30M 3 AUTOEXTEND ON; Tablespace created. SQL> select file_name,tablespace_name from dba_data_files; FILE_NAME TABLESPACE ------------------------------------------------------------ ---------- /export/home/oracle/app/oracle/oradata/orcl/users01.dbf USERS /export/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf SYSAUX /export/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf UNDOTBS1 /export/home/oracle/app/oracle/oradata/orcl/system01.dbf SYSTEM /export/home/oracle/app/oracle/oradata/orcl/undotbs02.dbf UNDOTBS2 ´ÙÀ½°ú °°ÀÌ UNDO TABLESPACE¿¡ DATAFILEÀ» ´õ Ãß°¡ÇÒ ¼ö ÀÖ´Ù. SQL> ALTER TABLESPACE undotbs2 2 ADD DATAFILE '/export/home/oracle/app/oracle/oradata/orcl/undotbs03.dbf' SIZE 30M 3 AUTOEXTEND ON; Tablespace altered. SQL> ALTER SYSTEM SET UNDO_TABLESPACE=undotbs2; System altered. SQL> SHOW PARAMETER UNDO_TABLESPACE; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_tablespace string UNDOTBS2 SQL> SELECT tablespace_name,status FROM dba_rollback_segs; TABLESPACE STATUS ---------- ---------------- SYSTEM ONLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE UNDOTBS1 OFFLINE TABLESPACE STATUS ---------- ---------------- UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE UNDOTBS2 ONLINE 22 rows selected. SQL> ALTER SYSTEM SET UNDO_TABLESPACE=undotbs1; System altered. SQL> DROP TABLESPACE undotbs2 2 INCLUDING CONTENTS AND DATAFILES; Tablespace dropped. SQL> select file_name,tablespace_name from dba_data_files; FILE_NAME TABLESPACE ------------------------------------------------------------ ---------- /export/home/oracle/app/oracle/oradata/orcl/users01.dbf USERS /export/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf SYSAUX /export/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf UNDOTBS1 /export/home/oracle/app/oracle/oradata/orcl/system01.dbf SYSTEM SQL>
2) Manual Undo Management a) ROLLBACK SEGMENTÀÇ »ý¼º ¡¼Çü½Ä¡½ CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment¸í [TABLESPACE tablespace¸í] [STORAGE ([INITIAL Å©±â [K|M] ] [NEXT Å©±â [K|M] ] [MINEXTENTS Å©±â ] [MAXEXTENTS Å©±â | UNLIMITED ] [OPTIMAL {Å©±â [K|M] NULL} ] ) ¿©±â¼ OPTIMALÀÇ Àǹ̴ ROLLBACK SEGMENT°¡ MAXEXTENTS·Î ÁöÁ¤µÈ Å©±â±îÁö Áõ°¡ÇÏ¿© »ç¿ëµÈ ÈÄ, »ç¿ëÀÌ ¿Ï·áµÇ¸é OPTIMAL¿¡¼ ÁöÁ¤ÇÑ Å©±â·Î ROLLBACK SEGMENT°¡ ÀÚµ¿À¸·Î ÁÙ¾îµé°Ô µÈ´Ù. -- »ý¼º½Ã PUBLIC ¶Ç´Â PRIVATE·Î ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸³ª ÀÌ ÈÄ¿¡´Â º¯°æÀÌ ºÒ°¡ÇÏ´Ù.(±âº»°ª=PRIVATE) -- MINEXTENTS´Â 2ÀÌ»óÀ̾î¾ß ÇÔ -- PCTINCREASE´Â ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù. -- OPTIMALÀº MINEXTENTSº¸´Ù Å©°Å³ª °°¾Æ¾ß ÇÑ´Ù. b) ROLLBACK SEGMENTÀÇ ONLINE(Ȱ¼ºÈ) »õ·Î ¸¸µç rollback segment´Â offline »óÅ À̹ǷΠonline »óÅ·Πº¯°æÇØ¾ß ÇÑ´Ù. online »óÅ·Πº¯°æÇÏ´Â µÎ °¡Áö ¹æ¹ý ¹æ¹ý1: parameter fileÀ» ¼öÁ¤ÇÏ¿© Ç×»ó online »óÅ·ΠÇÏ´Â ¹æ¹ý ROLLBACK_SEGMENT=(Online½Ãų rollback_segment¸í) ¹æ¹ý2: ALTER ROLLBACK SEGMENT rollback_segment¸í ONLINE;¿¡ ÀÇÇÑ ¹æ¹ý --ÀÌ ¹æ¹ýÀº ÇöÀçÀÇ session¿¡¼¸¸ online»óÅ·ΠµÊ c) ROLLBACK SEGMENTÀÇ OFFLINE(ºñȰ¼ºÈ) online»óŸ¦ offline »óÅ·Πº¯°æÇÏ´Â ¹æ¹ýÀº Ȱ¼ºÈ ¹æ¹ýÀÇ ¿ªÀ¸·Î µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ¹æ¹ý1: parameter fileÀ» #À¸·Î ÁÖ¼®Ã³¸®ÇÑ´ÙÀ½ INSTANCE¸¦ Àç½ÃÀÛ ÇÑ´Ù. #ROLLBACK_SEGMENT=(Online½Ãų rollback_segment¸í) ¹æ¹ý2: ALTER ROLLBACK SEGMENT rollback_segment¸í OFFLINE;¿¡ ÀÇÇÑ ¹æ¹ý --ÀÌ ¹æ¹ýÀº ÇöÀçÀÇ session¿¡¼¸¸ offline»óÅ·ΠµÊ d) ROLLBACK SEGMENTÀÇ ÇÒ´ç ¹æ¹ý1) Oracle Server°¡ ÀÚµ¿À¸·Î ROLLBACK SEGMENT¸¦ °Ë»çÇÏ¿© ÇÒ´çÇϰųª, ¹æ¹ý2) transaction¿¡ ƯÁ¤ ROLLBACK SEGMENT¸¦ ÁöÁ¤ÇÒ ¼ö µµ ÀÖ´Ù. SQL> SET TRANSACTION USE ROLLBACK SEGMENT ÁöÁ¤ÇÒ ROLLBACK_SEGMENT¸í; e) ROLLBACK SEGMENTÀÇ STORAGE º¯°æ ´ÙÀ½°ú °°Àº Çü½ÄÀ» »ç¿ëÇÏ¿© storage ÀýÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ALTER ROLLBACK SEGMENT rollback_segment¸í STORAGE ( [NEXT Á¤¼ö [K|M] ] [MINEXTENTS Á¤¼ö ] [MAXEXTENTS Á¤¼ö | UNLIMITED ] [OPTIMAL {Á¤¼ö [K|M] NULL} ] ) -- INITIAL °ªÀº ¼öÁ¤ÇÒ ¼ö ¾ø±â ¶§¹®¿¡ À̸¦ º¯°æÇÏ·Á¸é, ROLLBACK SEGMENT¸¦ »èÁ¦ÈÄ ´Ù½Ã »ý¼ºÇÑ´Ù.
±×¸²¿¡¼ °¡µæÂù 4¹ø EXTENT°¡ ºó EXTENT¸¦ ã±â À§ÇÏ¿© 1¹ø EXTENT¸¦ È®ÀÎÇßÀ¸³ª, ´Ù¸¥ transactionÀÌ »ç¿ëÁßÀΠȰ¼ºÈ »óÅÂÀÎ °ÍÀ» È®ÀÎÇÑ ÈÄ ¿À¸¥ÂÊ ±×¸²Ã³·³ 4¹ø EXTENT ÀÚ¸®¿¡ »õ·Î¿î EXTENTÀÎ 5¹øÀ» Ãß°¡·Î ÇÒ´çÇÑ´Ù. À̶§ 2¹ø EXTENTÀÇ »óŰ¡ ºñ¾î ÀÖ´Â ºñȰ¼ºÈ »óŶó ÇÒÁö¶óµµ 1¹ø EXTENT¸¦ °Ç³Ê ¶Ù¾î ÇÒ´ç ÇÒ ¼ö ¾ø´Ù.
1¹ø EXTENT°¡ °è¼Ó Ȱ¼ºÈ »óŶó¸é MAXEXTENTS¿¡ ÁöÁ¤ÇÑ Å©±â±îÁö °è¼ÓÇØ¼ EXTENT°¡ Áõ°¡µÇ¾î ÇÒ´ç µÈ´Ù. °á±¹ transactionÀÌ Á¾·áµÇ±â Àü±îÁö´Â °è¼ÓÇØ¼ EXTENT¸¦ ÇÒ´çÇÏ¿© MAXEXTENTS·Î ÁöÁ¤µÈ Å©±â±îÁö °è¼ÓÇØ¼ Áõ°¡µÈ´Ù.
ÇÑ °³ÀÇ transaction ¶§¹®¿¡ Àüü EXTENTÀÇ Å©±â°¡ Áõ°¡ÇÑ´Ù¸é, °ø°£ Ȱ¿ë¸é¿¡¼ ºñÈ¿À²ÀûÀ̸ç, À̰ÍÀ» ¹æÁöÇϱâ À§ÇÏ¿© database °ü¸®ÀÚ´Â ¸ð´ÏÅ͸µÀ» ÅëÇØ¼ »ç¿ëÀÚ¿¡°Ô ¾Ë¸° ÈÄ transactionÀ» °Á¦·Î Á¾·á½ÃÄÑ¾ß ÇÑ´Ù.
g) EXTENT ÇÒ´ç ÇØÁ¦ ROLLBACK SEGMENT¿¡ OPTIMAL °ªÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì, ´ÙÀ½°ú °°ÀÌ »ç¿ëÀÚÀÇ ROLLBACK SEGMENTÀÇ EXTENT¸¦ ÇØÁ¦ÇÒ ¼ö ÀÖ´Ù. ALTER ROLLBACK SEGMENT rollback_segment¸í SHRINK [TO Á¤¼ö [K|M]]; -- ¿©±â¼ 'Á¤¼ö'¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é OPTIMAL¿¡¼ ÁöÁ¤ÇÑ °ª±îÁö ÇÒ´çÀ» ÇØÁ¦ÇÑ´Ù.h) SNAPSHOT TOO OLD
i) ROLLBACK SEGMENTÀÇ »èÁ¦ ROLLBACK SEGMENT¸¦ »èÁ¦Çϱâ À§Çؼ ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. DROP ROLLBACK SEGMENT rollback_segment¸í; -- ROLLBACK SEGMENT´Â offline »óÅ¿¡¼¸¸ »èÁ¦µÈ´Ù. SQL> sqlplus '/as sysdba' SQL> column tablespace_name format a10; SQL> select tablespace_name,initial_extent,next_extent,min_extents, 2 max_extents from dba_rollback_segs; TABLESPACE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS ---------- -------------- ----------- ----------- ----------- SYSTEM 114688 1 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 12 rows selected. SQL> select segment_name,status from dba_rollback_segs; SEGMENT_NAME STATUS ------------------------------ ---------------- SYSTEM ONLINE _SYSSMU1$ ONLINE _SYSSMU2$ ONLINE _SYSSMU3$ ONLINE _SYSSMU4$ ONLINE _SYSSMU5$ ONLINE _SYSSMU6$ ONLINE _SYSSMU7$ ONLINE _SYSSMU8$ ONLINE _SYSSMU9$ ONLINE _SYSSMU10$ ONLINE _SYSSMU22$ ONLINE 12 rows selected. SQL> column file_name format a60; SQL> column tablespace_name format a15; SQL> select tablespace_name,file_name from dba_data_files; TABLESPACE FILE_NAME --------------- ------------------------------------------------------------ USERS /export/home/oracle/app/oracle/oradata/orcl/users01.dbf SYSAUX /export/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf UNDOTBS1 /export/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf SYSTEM /export/home/oracle/app/oracle/oradata/orcl/system01.dbf SQL> SQL> create tablespace rollback_tab1 2 datafile '/export/home/oracle/app/oracle/oradata/orcl/rbtbs01.dbf' size 1M; Tablespace created. SQL> create tablespace rollback_tab2 2 datafile '/export/home/oracle/app/oracle/oradata/orcl/rbtbs02.dbf' size 1M; Tablespace created. SQL> select tablespace_name,file_name from dba_data_files; TABLESPACE_NAME FILE_NAME --------------- ------------------------------------------------------------ USERS /export/home/oracle/app/oracle/oradata/orcl/users01.dbf SYSAUX /export/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf UNDOTBS1 /export/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf SYSTEM /export/home/oracle/app/oracle/oradata/orcl/system01.dbf ROLLBACK_TAB1 /export/home/oracle/app/oracle/oradata/orcl/rbtbs01.dbf ROLLBACK_TAB2 /export/home/oracle/app/oracle/oradata/orcl/rbtbs02.dbf 6 rows selected. SQL> select tablespace_name,initial_extent,next_extent,min_extents,max_extents 2 FROM dba_rollback_segs; TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS --------------- -------------- ----------- ----------- ----------- SYSTEM 114688 1 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 UNDOTBS1 131072 2 32765 12 rows selected. SQL> create rollback segment rollback1; Rollback segment created. SQL> create rollback segment rollback2 2 tablespace rollback_tab2 3 storage (initial 40k 4 next 40k 5 minextents 20 6 maxextents 505 7 optimal 800k); Rollback segment created. SQL> alter rollback segment rollback2 ONLINE; Rollback segment altered. SQL> set transaction use rollback segment rollback2; Transaction set. SQL> select segment_name,status from dba_rollback_segs; SEGMENT_NAME STATUS ------------------------------ ---------------- SYSTEM ONLINE _SYSSMU1$ ONLINE _SYSSMU2$ ONLINE _SYSSMU3$ ONLINE _SYSSMU4$ ONLINE _SYSSMU5$ ONLINE _SYSSMU6$ ONLINE _SYSSMU7$ ONLINE _SYSSMU8$ ONLINE _SYSSMU9$ ONLINE _SYSSMU10$ ONLINE _SYSSMU22$ ONLINE 12 rows selected. SQL> alter rollback segment rollback1 2 storage(minextents 15 maxextents 600); Rollback segment altered. SQL> alter rollback segment rollback1 2 SHRINK; Rollback segment altered. SQL> drop rollback segment rollback2; Rollback segment dropped. SQL> drop rollback segment rollback1; Rollback segment dropped. SQL> drop tablespace rollback_tab1 including contents and datafiles; Tablespace dropped. SQL> drop tablespace rollback_tab2 including contents and datafiles; Tablespace dropped. SQL> select tablespace_name,file_name from dba_data_files; TABLESPACE_NAME FILE_NAME --------------- ------------------------------------------------------------ USERS /export/home/oracle/app/oracle/oradata/orcl/users01.dbf SYSAUX /export/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf UNDOTBS1 /export/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf SYSTEM /export/home/oracle/app/oracle/oradata/orcl/system01.dbf SQL>
v$rollname v$rollstat v$session v$transaction