Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          DataFile大小調整Script
          ?
          ??? 昨天學習了Oracle中的datafile大小的增長方式,當然一定會想到如果datafile被“撐”大之后,如何縮小datafile的大小呢?怎么知道這個datafile的真正被使用的實際大小是多少呢?以下就摘錄tom用來計算datafile可縮減大小的腳本。這個腳本在我第一次看到的時候,對我有很大的啟發,甚至很大程度上改變了我的編碼習慣。看上去真的是相當賞心悅目,多年的程序員下來,一定會追求形式上的美感。
          ?
          ?
          ?----------- 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
          /

          ?
          -------------------------------------------------------------------------------
          執行結果:
          ?
          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;
          ?
          -------------------------------------------------------------------------------------------
          ?
          ?
          ?
          ?
          ?
          ?
          關于這個問題的其他討論,參見一下地址:
          http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:153612348067
          ?
          ?
          ?
          ?
          posted on 2009-03-23 21:03 decode360 閱讀(374) 評論(0)  編輯  收藏 所屬分類: 10.DB_Tools
          主站蜘蛛池模板: 唐海县| 汉中市| 准格尔旗| 多伦县| 桦南县| 漠河县| 镇雄县| 正镶白旗| 九寨沟县| 东丰县| 晴隆县| 平遥县| 托克托县| 江油市| 焦作市| 西林县| 时尚| 平潭县| 拉孜县| 宽城| 海门市| 婺源县| 崇文区| 新闻| 太谷县| 维西| 英吉沙县| 富蕴县| 湟中县| 石泉县| 惠东县| 车致| 沁阳市| 新宾| 铜山县| 温泉县| 古田县| 尉氏县| 车险| 综艺| 东丰县|