熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle中空間管理對系統性能的影響

2013-11-13 16:24:53  來源: Oracle 

  在Oracle數據庫中DBA可以通過觀測一定的表或視圖來了解當前空間的使用狀況進而作出可能的調整決定 

  表空間的自由空間 

  通過對表空間的自由空間的觀察可用來判斷分配給某個表空間的空間是太多還是不夠請看下列的語句: 
 
    SQL > select afile_id FileNoatablespace_name   
    Tablespace_name   
     abytes Bytesabytessum(nvl(bbytes)) Used   
     sum(nvl(bbytes)) Free   
     sum(nvl(bbytes))/abytes* %free   
     from dba_data_files a dba_free_space b   
     where afile_id=bfile_id(+)   
     group by atablespace_name    
     afile_idabytes order by atablespace_name;   
    File Tablespace   No _nameBytes Used Free %free   
            
    IDX_JF E+  E+    
     JFSJTS E+ E+     
    JFSJTS E+ E+     
     RBS      
    RBSE+ E+     
     RBSJF E+ E+     
     SFGLTS E+ E+     
     SFSJTS E+ E+     
     SYSTEM       
     TEMP      
     TOOLS      
     USERS      
     rows selected
 
  可以看出在FileNo為的表空間RBS中只有%的分配空間未被使用這個比例太小了而在SYSTEM及TEMP等表空間中高達%以上的空間未被利用對於生產型數據庫這個表空間的設置有些偏高 

  關於自由空間的管理有下面的一些建議:利用Export及Import命令卸出和裝入表空間可以釋放大量的空間從而緩解增加另外的數據文件的要求如果包含具有高插入(insert)和更新(update)活動的表的表空間中自由空間的比重下降到了%以下要為此表空間增加更多的空間對於一個基本是靜態表數據的表空間如果有多於%的自由空間則可以考慮減少分配給它的文件空間量減少SYSTEM表空間的空間量比較困難因為那要重建數據庫 

  二 表及索引的擴展 

  A為了防止表或索引被過分擴展及時實現對數據庫的調整用戶應當經常對有關對象進行觀察我們可以認為擴展區域大於個的表或索引為過分擴展(overextended)請看下面的語句: 

    SQL > select substr(segment_name)

    Segment_namesegment_type

     substr(tablespace_name)

    Tablepace_nameextentsMax_extents

    from dba_segments

    where extents > and owner=JFCL

    order by segment_name;

    SEGMENT_NAMESEGMENT TABLEPACE_

    EXTENTS MAX_EXTENTS

    _TYPE

      

    CHHDFYB TABLE JFSJTS 

    CHHDFYB_DHHMINDEX JFSJTS

    DJHZFYB_BF TABLE JFSJTS 

    DJHZFYB_DJHMINDEX IDX_JF

    DJHZFYB_JZHMINDEX IDX_JF

    GSMFYB TABLE JFSJTS 

    JFDHTABLE JFSJTS 

    JFDH_DHHM INDEX IDX_JF 

    JFDH_JZHM INDEX IDX_JF 

    XYKFYB TABLE JFSJTS

    YHDATABLE JFSJTS

    YHDA_BAKTABLE JFSJTS

    YHHZFYB_ TABLE JFSJTS 

     rows selected
 

  通過觀察 DBA可以及時發現問題並進行相應的處理我們可以利用export卸出表然後刪除表再利用import命令將表裝入這樣可以將不連續的區域合並成一個連續的空間 

  B如果用戶希望對表的空間設置進行優化例如需要改變表EMP的initial參數可以采用下面的方法: 

  在將EMP表卸出並刪除後執行imp命令時使用indexfile參數:imp userid=scott/tiger file=empdmp indexfile=empsql Oracle把表和索引的創建信息寫到指定的文件而不是把數據寫回 

  打開empsql文件: 

    REM CREATE TABLE SCOTTEMP (EMPNO
    NUMBER( ) ENAME

    REM VARCHAR() JOB VARCHAR()

    MGR NUMBER( ) HIREDATE DATE

    REM SAL NUMBER( ) COMM NUMBER

    ( ) DEPTNO NUMBER( ))

    REM PCTFREE  PCTUSED  INITRANS 

    MAXTRANS  LOGGING STORAGE(INITIAL

    REM  NEXT  MINEXTENTS  MAXEXTENTS

     PCTINCREASE  FREELISTS

    REM  FREELIST GROUPS  BUFFER_POOL DEFAULT)

    TABLESPACE USER_DATA ;

    REM   rows
 
  對它進行編輯去除REM等信息找到Initial參數根據需要改變它 

  在SQL*plus中執行empsql 

  裝入數據: 

  imp userid=scott/tiger ignore=y file=empdmp 

  需要注意的是ignore參數必須設為Y 

  C可以用下面的語句來觀察表或索引距離達到最大擴展的狀況UNUSE為距離達到最大擴展的值在User_extents表中extent_id是從開始記述數的 

    SQL >select atable_name TABLE_NAMEmax

    (amax_extents) MAXEXTENTS 

     max(bextent_id)+ IN USE MAX

    (amax_extents)(max(bextent_id)+UNUSE

     from user_tables a user_extents b

    where atable_name=bsegment_name

     group by atable_name ORDER BY ;

    TABLE_NAME MAXEXTENTS IN USEUNUSE

       

    YZPHB   

    SHJYB   

    SHFYB   

    RCHDB   

    SJTXDZB  

    SJTXDAB  

    CHYHB   

    JFDH  

     rows selected
 
  如果UNUSE小到一定的程度我們就應該加以關注進行適當的調整處理 

  三 關於連續空間 

  可以用下面的語句來查看數據庫中的自由空間: 

    SQL > select * from dba_free_space

    where tablespace_name=SFSJTS

     order by block_id;

    TABLESPACE FILE_ID BLOCK_ID BYTESBLOCKS

    _NAME

      

    SFSJTS    

    SFSJTS    

    SFSJTS    

    SFSJTS    

    SFSJTS    

    SFSJTS    

    SFSJTS    

    SFSJTS    

    SFSJTS    

    SFSJTS    

     rows selected
 
  我們可以通過命令的結果來估計相鄰自由空間的真正數量對每一行用起始快的id(BLOCK_ID)加上自由塊(BLOCKS)的數量如果其和與下一行的塊id(BLOCK_ID)相等則此兩行是連續的如上例第二行和第三行+=+!=所以從block_id為開始+=個block的連續空間 

  在Oracle數據庫的後台系統監視器(SMON)周期性地合並自由空間相鄰的塊以得到更大的連續塊而DBA可以用SQL命令來完成這個工作: 

    alter tablespace tablespace_name coalesce;
 
  Oracle空間管理對數據庫的工作性能有重要影響其管理方法值得我們認真研究


From:http://tw.wingwit.com/Article/program/Oracle/201311/18289.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.