Oracle Shrink Table
´Ó10g¿ªÊ¼£¬oracle¿ªÊ¼ÌṩShrinkµÄÃüÁ¼ÙÈçÎÒÃǵıí¿Õ¼äÖÐÖ§³Ö×Ô¶¯¶Î¿Õ¼ä¹ÜÀí (ASSM),¾Í¿ÉÒÔʹÓÃÕâ¸öÌØÐÔËõС¶Î£¬¼´½µµÍHWM¡£ÕâÀïÐèҪǿµ÷Ò»µã£¬10gµÄÕâ¸öÐÂÌØÐÔ£¬½ö¶ÔASSM±í¿Õ¼äÓÐЧ£¬·ñÔò»á±¨ ORA-10635: Invalid segment or tablespace type¡£
Èç¹û¾³£ÔÚ±íÉÏÖ´ÐÐDML²Ù×÷£¬»áÔì³ÉÊý¾Ý¿â¿éÖÐÊý¾Ý·Ö²¼Ï¡Ê裬ÀË·Ñ´óÁ¿¿Õ¼ä¡£Í¬Ê±Ò²»áÓ°ÏìÈ«±íɨÃèµÄÐÔÄÜ£¬ÒòΪȫ±íɨÃèÐèÒª·ÃÎʸü¶àµÄÊý¾Ý¿é¡£´Óoracle10g¿ªÊ¼£¬±í¿ÉÒÔͨ¹ýshrinkÀ´ÖØ×éÊý¾ÝʹÊý¾Ý·Ö²¼¸ü½ôÃÜ£¬Í¬Ê±½µµÍHWMÊÍ·Å¿ÕÏÐÊý¾Ý¿é¡£
segment shrink·ÖΪÁ½¸ö½×¶Î£º
1¡¢Êý¾ÝÖØ×é(compact):ͨ¹ýһϵÁÐinsert¡¢delete²Ù×÷£¬½«Êý¾Ý¾¡Á¿ÅÅÁÐÔڶεÄÇ°Ãæ¡£ÔÚÕâ¸ö¹ý³ÌÖÐÐèÒªÔÚ±íÉϼÓRXËø£¬¼´Ö»ÔÚÐèÒªÒÆ¶¯µÄÐÐÉϼÓËø¡£ÓÉÓÚÉæ¼°µ½rowidµÄ¸Ä±ä£¬ÐèÒªenable row movement.ͬʱҪdisable»ùÓÚrowidµÄtrigger.ÕâÒ»¹ý³Ì¶ÔÒµÎñÓ°Ïì±È½ÏС¡£
2¡¢HWMµ÷Õû£ºµÚ¶þ½×¶ÎÊǵ÷ÕûHWMλÖã¬ÊÍ·Å¿ÕÏÐÊý¾Ý¿é¡£´Ë¹ý³ÌÐèÒªÔÚ±íÉϼÓXËø£¬»áÔì³É±íÉϵÄËùÓÐDMLÓï¾ä×èÈû¡£ÔÚÒµÎñÌØ±ð·±Ã¦µÄϵͳÉÏ¿ÉÄÜÔì³É±È½Ï´óµÄÓ°Ïì¡£
shrink spaceÓï¾äÁ½¸ö½×¶Î¶¼Ö´ÐС£
shrink space compactÖ»Ö´ÐеÚÒ»¸ö½×¶Î¡£
Èç¹ûϵͳҵÎñ±È½Ï·±Ã¦£¬¿ÉÒÔÏÈÖ´ÐÐshrink space compactÖØ×éÊý¾Ý,È»ºóÔÚÒµÎñ²»Ã¦µÄʱºòÔÙÖ´ÐÐshrink space½µµÍHWMÊÍ·Å¿ÕÏÐÊý¾Ý¿é¡£
shrink±ØÐ뿪ÆôÐÐÇ¨ÒÆ¹¦ÄÜ¡£
alter table table_name enable row movement ;
×¢Ò⣺alter table XXX enable row movementÓï¾ä»áÔì³ÉÒýÓñíXXXµÄ¶ÔÏó(Èç´æ´¢¹ý³Ì¡¢°ü¡¢ÊÓͼµÈ)±äΪÎÞЧ¡£Ö´ÐÐÍê³Éºó£¬×îºÃÖ´ÐÐÒ»ÏÂutlrp.sqlÀ´±àÒëÎÞЧµÄ¶ÔÏó¡£
Óï·¨£º
alter table <table_name> shrink space [ <null> | compact | cascade ];
alter table <table_name> shrink space compcat;
ÊÕËõ±í£¬Ï൱ÓÚ°Ñ¿éÖÐÊý¾Ý´ò½áʵÁË£¬µ«»á±£³Ö high water mark;
alter table <tablespace_name> shrink space;
ÊÕËõ±í£¬½µµÍ high water mark;
alter table <tablespace_name> shrink space cascade;
ÊÕËõ±í£¬½µµÍ high water mark£¬²¢ÇÒ
Ïà¹ØÎĵµ£º
--»ñÈ¡Á½Ê±¼äµÄÏà²îºÀÃëÊý
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60 * 1000) Ïà²îºÀÃëÊý from DUAL;
/*
Ïà²îºÀÃëÊý
----------
86401000
1 row selected
*/
--»ñÈ¡Á½Ê±¼äµÄÏà²îÃëÊý
select ce ......
¿ª·¢×éÔÚÊý¾ÝÇ¨ÒÆÊ±£¬±¨¸æ·¢ÏÖһЩÊýֵΪ'0000/00/00'µÄdateÊý¾Ý£¬µ¼ÖÂÊý¾ÝÇ¨ÒÆÊ§°Ü¡£
Õâ¸öÎÊÌâÓÐµãÆæ¹Ö£¬ÒòΪÔÚOracleÖУ¬dateÀàÐ͵ÄÊý¾ÝµÄȡֵ·¶Î§ÊÇ´Ó-4712/12/31µ½9999/12/31Ö®¼ä£¬²¢ÇÒÄê·Ý²»ÄÜΪ0¡£Ò²¾ÍÊÇ˵'0000/00/00'ÊÇÒ»¸ö·Ç·¨Êý¾Ý£¬²»ÎªOracleËù½ÓÊÜ¡£
SQL> select to_date('0000-00-00', 'yyyy-mm- ......
1:pfileºÍspfile
ÔÚ9i֮ǰ£¬²ÎÊýÎļþÖ»ÓÐÒ»ÖÖ£¬ËüÊÇÎı¾¸ñʽµÄ£¬³ÆÎªpfile£¬ÔÚ9i¼°ÒÔºóµÄ°æ±¾ÖУ¬ÐÂÔöÁË·þÎñÆ÷²ÎÊýÎļþ,³ÆÎªspfile,ËüÊǶþ½øÖƸñʽµÄ¡£ÕâÁ½ÖÖ²ÎÊýÎļþ¶¼ÊÇÓÃÀ´´æ´¢²Î ÊýÅäÖÃÒÔ¹©oracle¶ÁÈ¡µÄ£¬µ«Ò²Óв»Í¬µã£¬×¢ÒâÒÔϼ¸µã£º
1)pfileÊÇÎı¾Îļþ£¬spfileÊǶþ½øÖÆÎļþ£»
2)¶ÔÓÚ²ÎÊýµÄÅäÖã¬pfile¿ÉÒÔÖ±½ÓÒÔÎ ......
OracleÖÐUSERENVºÍSYS_CONTEXTÓÃÀ´·µ»Øµ±Ç°sessionµÄÐÅÏ¢£¬ÆäÖУ¬userenvÊÇΪÁ˱£³ÖÏòϼæÈݵÄÒÅÁôº¯Êý£¬ÍƼöʹÓÃsys_contextº¯Êýµ÷ÓÃuserenvÃüÃû¿Õ¼äÀ´»ñÈ¡Ïà¹ØÐÅÏ¢¡£
1¡¢ USERENV(OPTION)
¡¡¡¡·µ»Øµ±Ç°µÄ»á»°ÐÅÏ¢.
¡¡¡¡OPTION='ISDBA'Èôµ±Ç°ÊÇDBA½ÇÉ«,ÔòΪTRUE,·ñÔòFALSE.
¡¡¡¡OPTION='LANGUAGE'·µ»ØÊý¾Ý¿âµÄ ......