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

Oracle»Ø¹ö¶Î±í¿Õ¼äÎļþ¶ªËðµÄ´¦Àí

·¢²¼Ê±¼ä:2006-11-11 00:56:39À´Ô´:ºìÁª×÷Õß:pinkfirex
II. Êý¾Ý¿âÊÇÆô¶¯×ŵÄ

Èç¹ûÄã¼ì²âµ½¶ªÊ§»òËð»µÁ˻عö¶Î±í¿Õ¼äµÄÊý¾ÝÎļþ£¬²¢ÇÒÊý¾Ý¿âÊÇÔËÐÐ×ŵģ¬²»Òª°ÑËü down µô¡£ÔںܶàÇé¿öÏ£¬Êý¾Ý¿âÊÇÆô×ŵıȹرÕ׎â¾öÎÊÌâ¸üÈÝÒ×Щ¡£

ÕâÖÖÇé¿öµÄÁ½ÖÖ¿ÉÄܵĽâ¾ö·½·¨ :

A) ʹ¶ªÊ§µÄÄǸöÊý¾ÝÎļþ offline, ²¢´Ó±¸·ÝÖлָ´Ëü£¬ÕâÖÖÇé¿öÊÊÓÃÓÚÊý¾Ý¿âÊÇ´¦Óڹ鵵·½Ê½µÄ¡£

B) ÁíÒ»¸ö·½·¨ÊÇ offline µôËùÓеÄÄǸöÎļþËùÊô±í¿Õ¼äµÄ»Ø¹ö¶Î£¬ drop ÄǸö±í¿Õ¼ä , È»ºóµÃ½¨ËüÃÇ¡£Äã¿ÉÄܲ»µÃ²»É±µôÄÇЩʹÓÃׯعö¶ÎµÄ½ø³Ì£¬ÒÔ±ãʹËü offline.

·½·¨ II.A: ´Ó±¸·Ý»Ö¸´ÄǸöÊý¾ÝÎļþ

Õâ¸ö·½·¨Ö»ÓÐÄãµÄ¿âÊÇÔڹ鵵·½Ê½Ï²ÅÄÜʹÓá£

1 ¡¢ÍÑ»ú (offline) ÄǸö¶ªÊ§µÄÊý¾ÝÎļþ¡£


ALTER DATABASE DATAFILE OFFLINE;


Ìáʾ£ºÆäÓÚÄ¿Ç°Êý¾Ý¿âµÄÊÂÎñÁ¿£¬Äã¿ÉÄÜÐèÒª½¨Ò»¸öÁÙʱµÄ»Ø¹ö±í¿Õ¼äºÍһЩÁÙʱµÄ»Ø¹ö¶ÎÒÔ±¸Õý³£ÒµÎñÔËÐС£

2 ¡¢´Ó±¸·ÝÖлָ´ (restore) ÄǸöÊý¾ÝÎļþ¡£

3 ¡¢Ö´ÐÐÈçÏÂÃüÁî


SELECT V1.GROUP#, MEMBER, SEQUENCE#
FROM V$LOG V1, V$LOGFILE V2
WHERE V1.GROUP# = V2.GROUP# ;


Õ⽫ÁгöËùÓеÄÁª»úµÄÖØ×öÈÕÖ¾ºÍËûÃǵÄÐòºÅ¼°Ê״θıäºÅ (first change numbers).

4 ¡¢µÃÓÃÁª»úÈÕÖ¾¼°¹éµµÈÕÖ¾»Ö¸´ÄǸöÎļþ


RECOVER DATAFILE


5 ¡¢È·ÈÏËùÓеÄÈÕÖ¾¶¼±»»Ö¸´£¬Ö»µ½ÄãÊÕµ½ "Media recovery complete" ÐÅÏ¢¡£

6 ¡¢Ê¹Õâ¸öÊý¾ÝÎļþ online


ALTER DATABASE DATAFILE ONLINE;


·½·¨ II.B: Öؽ¨»Ø¹ö±í¿Õ¼ä

ÕâÖÖ·½·¨²»±Ø¿¼ÂÇÊý¾Ý¿âÊÇ·ñÊǹ鵵ģʽµÄ¡£

²½ÖèÈçÏ£º

1 ¡¢ÊÔͼÍÑ»úËùÓеĶªÊ§»òËð»µÊý¾ÝÎļþËùÔڻعö±í¿Õ¼äÖÐËù°üº¬µÄ»Ø¹ö¶Î¡£

ALTER ROLLBACK SEGMENT OFFLINE;

Öظ´Ö´ÐÐÕâ¸öÃüÁîÖ±µ½Ëù°üº¬µÄ»Ø¹ö¶Î¶¼ÍÑ»ú .

2 ¡¢¼ì²é»Ø¹ö¶ÎµÄ״̬¡£

ÔÚ drop µôËüÃÇ֮ǰËüÃDZØÐèÊÇ offline ״̬µÄ¡£


SELECT SEGMENT_NAME, STATUS FROM DBA_ROLLBACK_SEGS
WHERE TABLESPACE_NAME = ;


3 ¡¢É¾³ýµôËùÓÐÍÑ»úµÄ c ¡£


DROP ROLLBACK SEGMENT ;


4 ¡¢´¦ÀíÄÇЩ±£³Ö online ״̬µÄ»Ø¹ö¶Î

Öظ´Ö´ÐÐ 2 һϵÄÃüÁÈç¹û»Ø¹ö¶ÎÔÚÖ´ÐÐ 1 ÖÐÃüÁîÈÔ±£Å¤¿÷Ϊӯ "ONLINE" ״̬£¬Òâζ×ÅËüÖ®ÖÐÓлµÄÊÂÎñ£¬Äã¿ÉÒÔÓÃÈçϵIJéѯÀ´È·ÈÏһϣº


SELECT SEGMENT_NAME, XACTS ACTIVE_TX, V.STATUS
FROM V$ROLLSTAT V, DBA_ROLLBACK_SEGS
WHERE TABLESPACE_NAME = AND SEGMENT_ID = USN;


Èç¹ûÕâ¸ö²éѯûÓнá¹û·µ»Ø£¬Òâζ×ÅûÓÐÊÂÎñÔÚÕâЩ»Ø¹ö¶ÎÖÐÁË¡£ÄĹûÓнá¹û·µ»Ø£¬ÄÇЩ²»ÄÜoffline µÄ»Ø¹ö¶ÎµÄ״̬ӦΪ "PENDING OFFLINE" ¡£¿ÉÒÔÓà 5 Öеķ½·¨°ÑÕâЩÊÂÎñɱµô¡£

5 ¡¢Ç¿ÖÆʹÓлÊÂÎñµÄ»Ø¹ö¶ÎÍÑ»ú

Ö´ÐÐÈçϲéѯ£¬¿´ÕâЩ "PENDING OFFLINE" µÄ»Ø¹ö¶Î°üº¬ÄÄЩÊÂÎñ¡£


SELECT S.SID, S.SERIAL#, S.USERNAME, R.NAME "ROLLBACK"
FROM V$SESSION S, V$TRANSACTION T, V$ROLLNAME R
WHERE R.NAME IN (, ... , )
AND S.TADDR = T.ADDR AND T.XIDUSN = R.USN;


Óà ALTER SYSTEM KILL SESSION , ; Óï¾äɱµôÕâЩÊÂÎñ£¬Öظ´Ö´ÐÐÉÏÃæµÄ²éѯ£¬Ö±µ½Ã»ÓÐÊÂÎñ´æÔÚ£¬ÕâʱÔËÐÐһϠ2 ÖеIJéѯ£¬È·ÈÏÕâЩ»Ø¹ö¶Î¼º¾­´¦ÓÚ offline ״̬ , ²¢Óà 3 ÖеÄÓï¾ä°ÑËüÃÇ drop µô¡£

6 ¡¢É¾³ýÕâ¸ö»Ø¹ö±í¿Õ¼ä¡£


DROP TABLESPACE INCLUDING CONTENTS;


Èç¹ûÓï¾äÖ´ÐÐʧ°Ü£¬ÇëÓë oracle ¼¼ÊõÖ§³ÖÁªÏµ£¬·ñÔòתÏò 7

7 ¡¢Öؽ¨»Ø¹ö¶Î±í¿Õ¼ä¡£

8 ¡¢Öؽ¨»Ø¹ö¶Î£¬²¢Ê¹ËüÃÇÁª»ú (online) ¡£

ÒëÕß°´£º

»Ø¹ö¶Î±í¿Õ¼äµÄÊý¾ÝÎļþ¶ªÊ§»òËð»µÔÚʵ¼ÊÖÐÊDZȽϼ¬Êֺͳ£¼ûµÄ£¬²úÉúÕâÖÖÎÊÌâ µÄÔ­»ØºÜ¶àµÄ£¬±ÈÈç½éÖʵÄË𻵡¢ÈËΪµÄÎó²Ù×÷¡¢»úÆ÷µÄͻȻµÄ¶ÏµçµÈµÈ¡£

½¨Òéûʵ¼ù¹ýÕâÖÖ²Ù×÷µÄ oracle µÄ°®ºÃÕß¿ÉÒÔÄ£ÄâÒ»ÏÂÕâÖÖ¹ÊÕÏ£¬Êµ¼Êʵ²âһϣ¬×¢ÒâÒ»¶¨ÒªÔÚ²âÊԿ⣬ÎÒÄ£ÄâµÄ·½·¨ÈçÏ£º

1 ¡¢µ¥¶À½¨ÁËÒ»¸ö rbs ±í¿Õ¼ä£¬²¢ÔÚÕâ¸ö±í¿Õ¼ä½¨ÁËÒ»¸ö»Ø¹ö¶Î rbs_test ¡£

2 ¡¢Ö¸¶¨Ò»¸ö transaction ÓÃÕâ¸ö»Ø¹ö¶Î


sql>set transaction use rollback segment rbs_test;
sql>insert into test values (2);
sql>insert into test values(3);


3 ¡¢Áí¿ªÒ»¸ö telnet ´°¿Ú telnet ÖÁÖ÷»ú£¬Ö´ÐÐÈçÏÂÃüÁî :


sqlplus /nolog
sql>conn / as sysdba
sql>shutdown abort


4 ¡¢°ÑмӵÄÄǸö»Ø¹ö¶Î±í¿Õ¼äµÄÊý¾ÝÎļþ¸ü¸öÃû¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ