Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評(píng)論 :: 0 Trackbacks
          DataFile大小調(diào)整Script
          ?
          ??? 昨天學(xué)習(xí)了Oracle中的datafile大小的增長(zhǎng)方式,當(dāng)然一定會(huì)想到如果datafile被“撐”大之后,如何縮小datafile的大小呢?怎么知道這個(gè)datafile的真正被使用的實(shí)際大小是多少呢?以下就摘錄tom用來(lái)計(jì)算datafile可縮減大小的腳本。這個(gè)腳本在我第一次看到的時(shí)候,對(duì)我有很大的啟發(fā),甚至很大程度上改變了我的編碼習(xí)慣??瓷先フ娴氖窍喈?dāng)賞心悅目,多年的程序員下來(lái),一定會(huì)追求形式上的美感。
          ?
          ?
          ?----------- maxshrink.sql ----------------------------------

          set verify off
          column file_name format a50 word_wrapped
          column smallest format 999,990 heading "Smallest|Size|Poss."
          column currsize format 999,990 heading "Current|Size"
          column savings? format 999,990 heading "Poss.|Savings"
          break on report
          compute sum of savings on report

          column value new_val blksize
          select value from v$parameter where name = 'db_block_size'
          /

          select file_name,
          ?????? ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
          ?????? ceil( blocks*&&blksize/1024/1024) currsize,
          ?????? ceil( blocks*&&blksize/1024/1024) -
          ?????? ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
          from dba_data_files a,
          ???? ( select file_id, max(block_id+blocks-1) hwm
          ???????? from dba_extents
          ??????? group by file_id ) b
          where a.file_id = b.file_id(+)
          /

          column cmd format a75 word_wrapped

          select 'alter database datafile '''||file_name||''' resize ' ||
          ?????? ceil( (nvl(hwm,1)*&&blksize)/1024/1024 )? || 'm;' cmd
          from dba_data_files a,
          ???? ( select file_id, max(block_id+blocks-1) hwm
          ???????? from dba_extents
          ??????? group by file_id ) b
          where a.file_id = b.file_id(+)
          ? and ceil( blocks*&&blksize/1024/1024) -
          ????? ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
          /

          ?
          -------------------------------------------------------------------------------
          執(zhí)行結(jié)果:
          ?
          SQL> set verify off
          SQL> column file_name format a50 word_wrapped
          SQL> column smallest format 999,990 heading "Smallest|Size|Poss."
          SQL> column currsize format 999,990 heading "Current|Size"
          SQL> column savings? format 999,990 heading "Poss.|Savings"
          SQL> break on report
          SQL> compute sum of savings on report

          SQL> column value new_val blksize
          SQL> select value from v$parameter where name = 'db_block_size'
          2?? /
          ?
          VALUE
          -----------
          8192
          ?
          SQL> select file_name,
          ? 2? ?????? ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
          ? 3? ?????? ceil( blocks*&&blksize/1024/1024) currsize,
          ? 4? ?????? ceil( blocks*&&blksize/1024/1024) -
          ? 5? ?????? ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
          ? 6??? from dba_data_files a,
          ? 7? ????? (select file_id, max(block_id+blocks-1) hwm
          ? 8? ???????? from dba_extents
          ? 9? ??????? group by file_id ) b
          10?? where re a.file_id = b.file_id(+)
          11 /
          ?
          ?????????????????????????????????????????????????? Smallest
          ?????????????????????????????????????????????????????? Size? Current??? Poss.
          FILE_NAME???????????????????????????????????????????? Poss.???? Size? Savings
          --------------------------------------------------- ------- -------- --------
          E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\SYSTEM01.DBF????? 478????? 480??????? 2
          E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\UNDOTBS01.DBF????? 15?????? 25?????? 10
          E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\USERS01.DBF???????? 2??????? 5??????? 3
          E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\PERFSTAT.DBF????? 144????? 500????? 356
          E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\SYSAUX01.DBF????? 251????? 260??????? 9
          ???????????????????????????????????????????????????????????????????? --------
          sum?????????????????????????????????????????????????????????????????????? 380
          ?
          ?
          SQL> column cmd format a75 word_wrapped

          SQL> select 'alter database datafile '''||file_name||''' resize ' ||
          ? 2???????? ceil( (nvl(hwm,1)*&&blksize)/1024/1024 )? || 'm;' cmd
          ? 3??? from dba_data_files a,
          ? 4?????? ( select file_id, max(block_id+blocks-1) hwm
          ? 5?????????? from dba_extents
          ? 6????????? group by file_id ) b
          ? 7?? where a.file_id = b.file_id(+)
          ? 8???? and ceil( blocks*&&blksize/1024/1024) -
          ? 9???????? ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
          10? /
          ?
          CMD
          ------------------------------------------------------------------------------------------
          alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\SYSTEM01.DBF' resize 478m;
          alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\UNDOTBS01.DBF' resize 15m;
          alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\USERS01.DBF' resize 2m;
          alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\PERFSTAT.DBF' resize 144m;
          alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\DODO\SYSAUX01.DBF' resize 251m;
          ?
          -------------------------------------------------------------------------------------------
          ?
          ?
          ?
          ?
          ?
          ?
          關(guān)于這個(gè)問(wèn)題的其他討論,參見(jiàn)一下地址:
          http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:153612348067
          ?
          ?
          ?
          ?
          posted on 2009-03-23 21:03 decode360 閱讀(377) 評(píng)論(0)  編輯  收藏 所屬分類: 10.DB_Tools
          主站蜘蛛池模板: 会理县| 左权县| 苍溪县| 金秀| 毕节市| 建平县| 防城港市| 赣州市| 余庆县| 镇原县| 大冶市| 天水市| 永吉县| 阿荣旗| 平定县| 贞丰县| 衡山县| 商水县| 信丰县| 望奎县| 杭锦旗| 镇原县| 奉节县| 鹤山市| 同江市| 本溪| 湄潭县| 湖南省| 财经| 夏津县| 衡水市| 永修县| 河间市| 扶沟县| 且末县| 赣榆县| 卢湾区| 兴义市| 瑞丽市| 嵩明县| 巫溪县|