Oracle Flashback ÉÁ»Ø¨DÉÁ»Ø²éѯ£¨2£©

2014-11-24 08:58:37 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 1
author:ÈóÃ÷2012-2-5 QQ:226399587 http://blog.csdn.net/runming918
3¡¢Versions between°æ±¾²éѯ
¹¦Äܸü¼ÓÇ¿´ó£¬Í¨¹ýversions betweenÄܹ»²é¿´Ö¸¶¨Ê±¼ä¶ÎÄÚundo±í¿Õ¼äÖмǼµÄ²»Í¬°æ±¾£¨×¢Ò⣬ֻ°üÀ¨±»Ìá½»µÄ¼Ç¼£©¡£
°æ±¾²éѯµÄÓ÷¨²¢²»±Èas of¸´ÔÓ£¬ÓëÆäÀàËÆ£¬ÄãÖ»ÐèÒªÔÚ±ê×¼²éѯºóÃæ¸½¼Óversions between timestamp[/scn] t1 and t2¼´¿É¡£¼Ç¼ÔÚ°æ±¾²éѯÖпÉÄÜ»áÊÇÒ»¶Ô¶àµÄ¹ØÏµ£¬±ÈÈçijЩ¼Ç¼Èç¹û±»Ð޸Ĺý¶à´Î£¬²¢·Ö±ðÌá½»£¬ÄÇôÄãÔÚ²éѯµÄʱºò£¬Èç¹ûÐ޸ĵIJÙ×÷ÊÇÔÚÄãÖ¸¶¨µÄʱ¼ä¶Î(»òscn)£¬Ôò¼Ç¼ÿ´ÎÐ޸ĵĽá¹û¶¼»á±»Ñ¡Ôñ³öÀ´£¬Õâ±È½ÏÓÐÀûÓÚÎÒÃÇ×öÊý¾ÝµÄ¶Ô±È£¬±ÈÈç¿´¿´Êý¾Ý¾¿¾¹ÊÇÔõô±ä»¯µÄ¡£

°æ±¾²éѯ¹ý³ÌÖÐÌṩÁ˶à¸öαÁÐÈçÏ£º

VERSIONS_STARTSCN VERSIONS_STARTTIME

¸Ã¼Ç¼²Ù×÷ʱµÄscn»òʱ¼ä£¬Èç¹ûΪ¿Õ£¬±íʾ¸ÃÐмǼÊÇÔÚ²éѯ·¶Î§Íâ´´½¨µÄ¡£

VERSIONS_ENDSCN

VERSIONS_ENDTIME

¸Ã¼Ç¼ʧЧʱµÄscn»òʱ¼ä£¬Èç¹ûΪ¿Õ£¬ËµÃ÷¼Ç¼µ±Ç°Ê±¼äÔÚµ±Ç°±íÄÚ´æÔÚ£¬»òÕßÒѾ­±»É¾³ýÁË£¬¿ÉÒÔÅäºÏ×ÅVERSIONS_OPERATIONÁÐÀ´¿´£¬Èç¹ûVERSIONS_OPERATIONÁÐֵΪD£¬ËµÃ÷¸ÃÁÐÒѱ»É¾³ý£¬Èç¹û¸ÃÁÐΪ¿Õ£¬Ôò˵Ã÷¼Ç¼ÔÚÕâ¶Îʱ¼äÎÞ²Ù×÷¡£

VERSIONS_OPERATION

¶Ô¸ÃÐÐÖ´ÐеIJÙ×÷£ºI±íʾinsert£¬D±íʾdelete£¬U±íʾupdate¡£

Ìáʾ£º¶ÔÓÚË÷Òý¼üµÄupdate²Ù×÷£¬°æ±¾²éѯ¿ÉÄܻὫÆäʶ±ð³ÉÁ½¸ö²Ù×÷£ºDELETEºÍINSERT¡£

VERSIONS_XID

¸Ã²Ù×÷µÄÊÂÎñID

²Ù×÷ʵÀý£º(½á¹ûÊÂÀý¾Í²»ÌùÁË)

SQL> select v_id,va,versions_startscn,versions_endscn,versions_operation from t_fb_test versions between scn 12372466 and 12372538 order by 1;

¸ù¾Ý½á¹û·µ»Ø£¬Ã¿¸ö¼Ç¼¸÷ÓÐÁ½¸ö°æ±¾£¬Ò»ÐеÄVERSIONS_STARTSCNºÍVERSIONS_OPERATIONÓÐÖµ£¬¼Ç¼ÁË¿ªÊ¼Ê±µÄSCNºÍÖ´ÐеIJÙ×÷£¬ÁíÒ»ÐÐÔòÊÇVERSIONS_ENDSCNÓÐÖµ£¬¼Ç¼Á˸ð汾ʧЧʱµÄscn¡£

´ÓVERSIONS_OPERATIONÁпÉÒÔ¿´³ö²Ù×÷ÊÇ£ºI±íʾinsert£¬D±íʾdelete£¬U±íʾupdate¡£

4¡¢Transaction queryÊÂÎñ²éѯ

FlashbackµÄÊÂÎñ²éѯÊÇͨ¹ý²éѯflashback_transaction_queryÊÓͼÀ´ÊµÏֵġ£Í¨¹ý²éѯ¸ÃÊÓͼÄܹ»»ñµÃһЩÊÂÎñÖ´ÐÐʱµÄÐÅÏ¢£¬ÉõÖÁ°üÀ¨UNDOÓï¾ä¡£

select xid,commit_scn,commit_timestamp,operation,undo_sql

from flashback_transaction_query q where q.xid in( select versions_xid from t_fb_test versions between scn 23413946 and 23413959);



ÉÏÊöµÄ²éѯ½á¹ûÒѾ­ÇåÎúµÄÏòÎÒÃÇչʾÁËÎÒÃÇËù×öµÄ²Ù×÷ÒÔ¼°²Ù×÷µÄʱ¼äµÈ(ʵ¼ÊÖ´ÐеÄÓï¾ä¸ÃÊÓͼ²¢Ã»ÓмǼ£¬Ö»ÄÜͨ¹ýundo_sqlºÍoperationÍÆ²â)£¬Ëæ×ÅÎÒÃǽ«ÊÂÎñ·¶Î§µÄ²»¶ÏÀ©´ó£¬ÎÒÃÇ¿ÉÒÔ³ÖÐøÏòǰ·­ÔÄÔø¾­×ö¹ýµÄ²Ù×÷¡£µ±È»£¬Êµ¼ÊʹÓõÄʱºòÐèҪעÒ⣬ÓÉÓÚ¸ÃÊÓͼ´æ´¢¼Ç¼Á¿½Ï´ó(¾¿¾¹Óжà´óÄØ£¬Ä¿Ç°ÉÐδÕÒµ½Ïà¹ØÎĵµÓÐÃ÷ȷ˵Ã÷£¬³õ²½Ô¤¼Æ£¬Ó¦¸ÃÓësmon_scn_timeµÄ´æ´¢¹æÔòÓйØÏµ)£¬²éѯµÄʱºò½¨Òéͨ¹ý¹Ø¼üÁйýÂË£¬±ÈÈçlogon_userÀ²£¬table_name»òtable_ownerÖ®ÀàµÄ£¬Õâô±ÈÆðÀ´ÕâÏî²Ù×÷µ¹È·ÊµÓëlogminer·Ç³£ÏëÏñ£¬Õâ¼òÖ±¾ÍÊǸö»îµÄlogminer°¡£¬ËäȻֻÊÇÒ»¶Îʱ¼äÄڵġ£

5¡¢ÖÆÔ¼ÒòËØ
ÖÆÔ¼¸ÃÌØÐÔÓ¦ÓõÄÓÐÈý·½ÃæµÄÒòËØ
5.1 ×Ô¶¯³·Ïú¹ÜÀí±í¿Õ¼ä
Õâ¸öÊÇÇ°ÃæÒ²Ìáµ½ÁË£¬ÒªÊ¹ÓÃflashbackµÄÏà¹ØÌØÐÔ£¬±ØÐëÆôÓÃ×Ô¶¯³·Ïú¹ÜÀí±í¿Õ¼ä£¬²»½öÊÇflashback query,Ò²°üÀ¨flashback tableºÍflashback database£¬¶ø¶ÔÓÚºóÁ½Ï»áÓÐЩÆäËüµÄ¸½¼ÓÌõ¼þ£¬±ÈÈçflashback tableÐèÒªÆôÓÃÁËrecycle bin(»ØÊÕÕ¾)£¬flashback database»¹ÒªÇó±ØÐëÆôÓÃÁËflashback area(ÉÁ»ØÇø)¡£
5.2 ³õʼ»¯²ÎÊý
³õʼ»¯²ÎÊýUNDO_RETENTIONµÄÉèÖÃÑϸñ˵ÆðÀ´Ò²ÊÇÓëundo±í¿Õ¼äÓйØÏµ£¬µ«ÊÇ˼Á¿ÔÙÈý£¬ÎÒ¾õ×Å»¹ÊÇÓбØÒªµ¥Áà³öÀ´Ïêϸ½éÉÜ¡£
¸Ã²ÎÊýÓÃÀ´Ö¸¶¨undo¼Ç¼±£´æµÄ×ʱ¼ä£¬ÒÔÃëΪµ¥Î»£¬ÊǸö¶¯Ì¬²ÎÊý£¬ÍêÈ«¿ÉÒÔÔÚʵÀýÔËÐÐÊ±ËæÊ±ÐÞ¸Äͨ³£Ä¬ÈÏÊÇ900Ã룬Ҳ¾ÍÊÇ15·ÖÖÓ¡£
Ò»¶¨Òª×¢Ò⣬undo_retentionÖ»ÊÇÖ¸¶¨undoÊý¾ÝµÄ¹ýÆÚʱ¼ä£¬²¢²»ÊÇ˵£¬undoÖеÄÊý¾ÝÒ»¶¨»áÔÚundo±í¿Õ¼äÖб£´æ15·ÖÖÓ£¬±ÈÈç˵¸ÕÒ»¸öÐÂÊÂÎñ¿ªÊ¼µÄʱºò£¬Èç¹ûundo±í¿Õ¼äÒѾ­±»Ð´Âú£¬ÔòÐÂÊÂÎñµÄÊý¾Ý»á×Ô¶¯¸²¸ÇÒÑÌá½»ÊÂÎñµÄÊý¾Ý£¬¶ø²»¹ÜÕâЩÊý¾ÝÊÇ·ñÒѹýÆÚ£¬Òò´ËÄØ£¬Õâ¾ÍÓÖ¹ØÁª»ØÁ˵ÚÒ»µã£¬µ±Äã´´½¨Ò»¸ö×Ô¶¯¹ÜÀíµÄundo±í¿Õ¼äʱ£¬»¹Òª×¢ÒâÆä¿Õ¼ä´óС£¬Òª¾¡¿ÉÄܱ£Ö¤undo±í¿Õ¼äÓÐ×ã¹»µÄ´æ´¢¿Õ¼ä¡£
ͬʱ»¹Òª×¢Ò⣬Ҳ²¢²»ÊÇ˵£¬undo_retentionÖÐÖ¸¶¨µÄʱ¼äÒ»¹ý£¬ÒѾ­Ìá½»ÊÂÎñÖеÄÊý¾Ý¾ÍÁ¢¿ÌÎÞ·¨·ÃÎÊ£¬ËüÖ»ÊÇʧЧ£¬Ö»Òª²»±»±ðµÄÊÂÎñ¸²¸Ç£¬Ëü»áÈÔÈ»´æÔÚ£¬²¢¿ÉËæÊ±±»flashbackÌØÐÔÒýÓá£Èç¹ûÄãµÄundo±í¿Õ¼ä×ã¹»´ó£¬¶ø Êý¾Ý¿âÓÖ²»ÊÇÄÇô·±Ã¦£¬ÄÇôÆäʵundo_retention²ÎÊýµÄÖµ²¢²»»áÓ°Ïìµ½Ä㣬ÄÄÅÂÄãÉèÖóÉ1(Õâô˵ºÃÏñ¾ø¶ÔÁ˵㣬´ó¼ÒÒ»¶¨Òª×¢ÒâÀí½â£¬±í×êÅ£½Ç¼â)£¬Ö»ÒªÃ»ÓÐÊÂÎñÈ¥¸²¸ÇundoÊý¾Ý£¬Ëü¾Í»á³ÖÐøÓÐЧ¡£Òò´ËÄØ£¬ÕâÀﻹÊÇÄǾ仰£¬Òª×¢Òâundo±í¿Õ¼äµÄ´óС£¬±£Ö¤ÆäÓÐ×ã¹»µÄ´æ´¢¿Õ¼ä¡£
5.3 DDL²Ù×÷µÄÓ°Ïì
µÚÈý¸ö¾ÍÊÇÐ޸IJ¢Ìá½»¹ýÊý¾ÝÖ®ºó£¬¶Ô±í×ö¹ýDDL²Ù×÷£¬°üÀ¨£º
drop/modifyÁÐ, move±í, drop·ÖÇø(Èç¹ûÓеϰ), truncate table/partition£¬ÕâЩ²Ù×÷»áÁíundo±í¿Õ¼äÖеij·ÏúÊý¾ÝʧЧ£¬¶ÔÓÚÖ´ÐйýÕâЩ²Ù×÷µÄ±íÓ¦ÓÃflashback query»á´¥·¢ORA-01466´íÎó¡£ÁíÍâһЩ±í½á¹¹ÐÞ¸ÄÓï¾äËäÈ»²¢²»»áÓ°Ïìµ½undo±í¿Õ¼äÖеij·Ïú¼Ç¼£¬µ«ÓпÉÄÜÒò±í½á¹¹Ð޸ĵ¼ÖÂundoÖÐÖØ×ö¼Ç¼ÎÞ·¨Ó¦ÓõÄÇé¿ö£¬±ÈÈç¶ÔÓÚÔö¼ÓÁËÔ¼Êø£¬¶øflashback query²éѯ³öµÄundo¼Ç¼ÒѾ­²»·ûºÏн¨µÄÔ¼ÊøÌõ¼þ£¬Õâ¸öʱºòÖ±½Ó»Ö¸´ÏÔÈ»²»¿ÉÄܳɹ¦£¬ÄãҪôÔÝʱdisableÔ¼Êø£¬ÒªÃ´Í¨¹ýÊʵ±Âß¼­£¬¶ÔÒª»Ö¸´µÄÊý¾Ý½øÐд¦ÀíÖ®ºó£¬ÔÙÖ´Ðлָ´¡£

ÁíÍ⣬flashback query¶Ôv$tables,x$tablesµÈ¶¯Ì¬ÐÔÄÜÊÓͼÎÞЧ£¬²»¹ý¶ÔÓÚdba_*,all_*,user_*µÈÊý¾Ý×ÖµäÊÇÓÐЧµÄ¡£Í¬Ê±¸ÃÌØÐÔÒ²Íêȫ֧³Ö·ÃÎÊÔ¶¶ËÊý¾Ý¿â£¬±ÈÈçselect * from tbl@dblink as of scn 360;µÄÐÎʽ¡£