好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Oracle表空間數據庫文件收縮案例解析

Oracle表空間數據庫文件收縮案例解析

熱門標簽:南寧人工智能電銷機器人費用 安陽外呼系統免費 貴陽電話外呼系統哪家好 呼倫貝爾智能手機地圖標注 圖像地圖標注 濟南地圖標注公司 400電話是不是免費申請 海南400電話哪里辦理 分布式呼叫中心

我們經常會遇到數據庫磁盤空間爆滿的問題,或由于歸檔日志突增、或由于數據文件過多、大導致磁盤使用緊俏。這里主要說的場景是磁盤空間本身很大,但表空間對應的數據文件初始化的時候就直接頂滿了磁盤空間,導致經常收到磁盤空間滿的報警。

一、錯誤信息

告警內容如下:

【發(fā)現異常】地產客儲系統數據庫Oracle_192.168.xx.xx,192.168.xx.xx,數據庫customer,連接錯誤,0 ORA-00257: archiver error. Connect internal only, until freed.

【發(fā)生時間】2018.07.04 09:12:21

二、錯誤原因

上述錯誤一看大致就知道是由于磁盤空間不足,導致歸檔無法完成所致,我們只需要清理足夠的磁盤空間即可。但在磁盤清理的時候發(fā)現磁盤空間本身可清理的不多,被很多很大的數據文件占用,而實際使用的segment大小總共不足400G,磁盤空間本身1T,所以我們可以通過收縮數據文件的方式回收磁盤空間。

數據文件初始化方式:

1.我們創(chuàng)建表空間一般有兩種方式初始化其數據文件,即指定初始大小為32G(很大的值)或指定初始大小為100M(很小的值)然后通過自動擴展方式慢慢按需增長。

2.第一種初始數據文件方法壞處就是開始不管你用不用到那么大,都會占用這么大的磁盤空間(這種數據遷移的時候可以使用)。第二種初始化方法按需增長,比較好的監(jiān)控實際使用磁盤空間,所以推薦初始值很小,使用自動擴展慢慢增長的方式。

三、處理步驟

1.查看磁盤空間大小

2.查看數據庫表空間大小

#!/bin/bash
sqlplus -S /nolog  EOF
conn /as sysdba;
set echo off heading on underline on;
column inst_num heading "Inst Num" new_value inst_num format 99999;
column inst_name heading "Instance" new_value inst_name format a12;
column db_name  heading "DB Name"  new_value db_name  format a12;
column dbid   heading "DB Id"   new_value dbid   format 9999999999 just c;
prompt
prompt Current Instance
prompt ~~~~~~~~~~~~~~~~
select d.dbid      dbid
   , d.name      db_name
   , i.instance_number inst_num
   , i.instance_name  inst_name
 from v\$database d,
    v\$instance i;
set term on feedback off lines 130 pagesize 999 tab off trims on
column MB format 999,999,999 heading "Total MB"
column free format 9,999,999 heading "Free MB"
column used format 99,999,999 heading "Used MB"
column Largest format 999,999 heading "LrgstMB"
column tablespace_name format a20 heading "Tablespace"
column status format a3 truncated
column max_extents format 99999999999 heading "MaxExt"
col extent_management      for a1 trunc  head "M"
col allocation_type       for a1 trunc  head "A"
col Ext_Size for a4 trunc head "Init"
column pfree format a3 trunc heading "%Fr"
break on report
compute sum of MB on report
compute sum of free on report
compute sum of used on report
select 
 d.tablespace_name, 
 decode(d.status, 
  'ONLINE', 'OLN',
  'READ ONLY', 'R/O',
  d.status) status,
 d.extent_management, 
 decode(d.allocation_type,
  'USER','',
  d.allocation_type) allocation_type,
 (case 
  when initial_extent  1048576 
  then lpad(round(initial_extent/1024,0),3)||'K' 
  else lpad(round(initial_extent/1024/1024,0),3)||'M' 
 end) Ext_Size,
 NVL (a.bytes / 1024 / 1024, 0) MB,
 NVL (f.bytes / 1024 / 1024, 0) free, 
 (NVL (a.bytes / 1024 / 1024, 0) - NVL (f.bytes / 1024 / 1024, 0)) used,
 NVL (l.large / 1024 / 1024, 0) largest, 
 d.MAX_EXTENTS ,
 lpad(round((f.bytes/a.bytes)*100,0),3) pfree,
 (case when round(f.bytes/a.bytes*100,0) >= 20 then ' ' else '*' end) alrt
FROM sys.dba_tablespaces d,
 (SELECT  tablespace_name, SUM(bytes) bytes
  FROM dba_data_files
  GROUP BY tablespace_name) a,
 (SELECT  tablespace_name, SUM(bytes) bytes
  FROM dba_free_space
  GROUP BY tablespace_name) f,
 (SELECT  tablespace_name, MAX(bytes) large
  FROM dba_free_space
  GROUP BY tablespace_name) l
WHERE d.tablespace_name = a.tablespace_name(+)
 AND d.tablespace_name = f.tablespace_name(+)
 AND d.tablespace_name = l.tablespace_name(+)
 AND NOT (d.extent_management LIKE 'LOCAL' AND d.contents LIKE 'TEMPORARY')
UNION ALL
select 
 d.tablespace_name, 
 decode(d.status, 
  'ONLINE', 'OLN',
  'READ ONLY', 'R/O',
  d.status) status,
 d.extent_management, 
 decode(d.allocation_type,
  'UNIFORM','U',
  'SYSTEM','A',
  'USER','',
  d.allocation_type) allocation_type,
 (case 
  when initial_extent  1048576 
  then lpad(round(initial_extent/1024,0),3)||'K' 
  else lpad(round(initial_extent/1024/1024,0),3)||'M' 
 end) Ext_Size,
 NVL (a.bytes / 1024 / 1024, 0) MB,
 (NVL (a.bytes / 1024 / 1024, 0) - NVL (t.bytes / 1024 / 1024, 0)) free,
 NVL (t.bytes / 1024 / 1024, 0) used, 
 NVL (l.large / 1024 / 1024, 0) largest, 
 d.MAX_EXTENTS ,
 lpad(round(nvl(((a.bytes-t.bytes)/NVL(a.bytes,0))*100,100),0),3) pfree,
 (case when nvl(round(((a.bytes-t.bytes)/NVL(a.bytes,0))*100,0),100) >= 20 then ' ' else '*' end) alrt
FROM sys.dba_tablespaces d,
 (SELECT  tablespace_name, SUM(bytes) bytes
  FROM dba_temp_files
  GROUP BY tablespace_name order by tablespace_name) a,
 (SELECT  tablespace_name, SUM(bytes_used ) bytes
  FROM v\$temp_extent_pool
  GROUP BY tablespace_name) t,
 (SELECT  tablespace_name, MAX(bytes_cached) large
  FROM v\$temp_extent_pool
  GROUP BY tablespace_name order by tablespace_name) l
WHERE d.tablespace_name = a.tablespace_name(+)
 AND d.tablespace_name = t.tablespace_name(+)
 AND d.tablespace_name = l.tablespace_name(+)
 AND d.extent_management LIKE 'LOCAL'
 AND d.contents LIKE 'TEMPORARY'
 ORDER by 1
/
prompt
exit
EOF

3.查詢可直接收縮表空間數據文件

這里查看的是可以直接收縮的數據文件大小,比如最開始初始化的數據文件為32G,在數據文件高水位以下的為20G,那么可直接回收的為12G。

select a.file#,a.name,a.bytes/1024/1024 CurrentMB,
     ceil(HWM * a.block_size)/1024/1024 ResizeTo,
     (a.bytes - HWM * a.block_size)/1024/1024 ReleaseMB,
     'alter database datafile '''||a.name||''' resize '||
     ceil(HWM * a.block_size/1024/1024) || 'M;' ResizeCMD
  from v$datafile a,
    (select file_id,max(block_id+blocks-1) HWM
     from dba_extents
     group by file_id) b
 where a.file# = b.file_id(+)
  and (a.bytes - HWM *block_size)>0;

4.直接收縮數據文件

alter database datafile '/oracle/oradata/bi/data01.dbf' resize 1548M;

5.再次查看磁盤空間,已釋放很多,可手動完成歸檔測試。

四、總結

針對oracle的數據文件收縮(磁盤空間收縮),我們一般可通過當前磁盤空間查看(df -h)——>執(zhí)行可直接收縮的查詢命令和收縮命令——>執(zhí)行大表高水位收縮——>執(zhí)行表空間高水位收縮(降低文件高水位線)——>再次執(zhí)行直接回收表空間數據文件命令

直接收縮數據文件的方式參考本文上述步驟即可完成。

那么如何降低表空間的數據文件高水位,進而完成表空間數據文件回收呢?

1.查看大于10G的數據文件

select file_name,file_id,tablespace_name,(bytes/1024/1024/1024) file_size_gb from dba_data_files where (bytes/1024/1024/1024) >10 order by file_id;

2.查看大于10G的數據文件對應的數據塊信息

select file_id,max(block_id+blocks-1) HWM,block_id
       from dba_extents
       where file_id =14
       group by file_id,block_id
       order by hwm desc ;

3.查看大表對應的數據塊信息

##查看大表
select file_name,file_id,tablespace_name,(bytes/1024/1024/1024) file_size_gb from dba_data_files where (bytes/1024/1024/1024) >10 order by file_id;
##查看大表對應的塊
 select owner,segment_name,file_id,block_id,blocks from dba_extents where segment_name='TABLE_NAME';

4.降低表的高水位

alter table table_name move;
alter index idx_name rebuild;

5.查看數據文件對應的最大的block_id

SELECT MAX(block_id)
     FROM dba_extents
     WHERE tablespace_name = 'TABLESPACE_NAME'; 

6.執(zhí)行數據文件收縮

(block_id+blocks-1)數據文件的HWM
alter database datafile '/oracle/oradata/bi/data01.dbf' resize xxxM;

總結

以上所述是小編給大家介紹的Oracle表空間數據庫文件收縮案例解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • Oracle數據庫自帶表空間的詳細說明
  • 在Linux系統上同時監(jiān)控多個Oracle數據庫表空間的方法
  • Oracle數據庫中表空間的基本管理操作小結

標簽:郴州 許昌 合肥 焦作 滁州 涼山 遼源 南充

巨人網絡通訊聲明:本文標題《Oracle表空間數據庫文件收縮案例解析》,本文關鍵詞  Oracle,表,空間,數據庫,文件,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle表空間數據庫文件收縮案例解析》相關的同類信息!
  • 本頁收集關于Oracle表空間數據庫文件收縮案例解析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 94vvv com永久区域网| 性生活直播app| 欧洲精品无码一区二区三区介绍 | 色噜噜狠狠色综合欧洲selulu| 博雅打扑克一直叫视频观看| 波多野黑人无删减RBB-159| gogo久久精品国产精品图片| 九九热亚洲精品综合视频| 欧美又粗又硬| 亚精产品二三三区视在线| 99久久婷婷国产精品综合| 混战几p都数不过来| 宫女淫春3在线观| 一牛视频在线观看免费完整| 亚洲成色www久久网站| 国产下药迷倒白嫩美女网站| gogo全球专业高清摄影| 重考生11再做一次我就告诉你下拉| 四川乱子伦视频国产| 成人免费看黄网站无遮挡| 欧美午夜性春猛交bbb| 俄罗斯美女裸体做爰XXXⅩ| 特级黄色生活片| 最近在线中文字幕影院网| 日韩特黄爽爽精品一区二区三区| 大量喷潮free| 久操国产在线| 6080福利| 中文字幕乱码中文字幕| 蜜桃秘?无码一线二线三线av| 99久久香蕉| 中国女人一级一次看片| 美女扒开衣服| 色老板在线播放| 女特工被三四个黑人大汉糟蹋| 色欲www在线永久网站免费观看| 十级毛片| 快穿高h喷水荡肉爽文校园| 国产成人精品美女在线| 免费人做人爱羞羞的网站视频| 19?韩国美女vip韩宝贝|