Oracle RAC扩表空间
最近Zabbix告警rac库表空间使用率超过75%需要扩容,本文记录了变更操作。
1.表空间查看
set pages 999
set linesize 999
SELECT a.tablespace_name "表空间名称",
100-ROUND((NVL(b.bytes_free,0)/a.bytes_alloc)*100,2) "占用率(%)",
ROUND(a.bytes_alloc/1024/1024,2) "容量(M)",
ROUND(NVL(b.bytes_free,0)/1024/1024,2) "空闲(M)",
ROUND((a.bytes_alloc-NVL(b.bytes_free,0))/1024/1024,2) "使用(M)",
TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') "采样时间"
FROM (SELECT f.tablespace_name,
SUM(f.bytes) bytes_alloc,
SUM(DECODE(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) maxbytes
FROM dba_data_files f GROUP BY tablespace_name) a,
(SELECT f.tablespace_name, SUM(f.bytes) bytes_free
FROM dba_free_space f GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;
发现表空间BMSBAK使用率为75.67%,超阀值
2.asm查看
SQL> select name,total_mb, free_mb from v$asm_diskgroup;
NAME TOTAL_MB FREE_MB
------------------------------ ---------- ----------
ORADATA 1988096 1154582
rac的库在asm上。
查看剩余可扩空间,发现剩余空间有1T多。
3.查看数据文件
SQL> select a.tablespace_name,a.FILE_NAME,bytes/1024/1024||'M' "size",a.AUTOEXTENSIBLE,a.MAXBYTES,a.INCREMENT_BY from dba_data_files a order by a.FILE_NAME;
发现BMSBAK表空间数据文件有8个,全部为自动扩展,大小由5120M——16384M不等,自动扩展的值由1——16384不等(这两处显得很不专业,数据文件大小和扩展值最好保持一致,不要太随意)。
加一个数据文件(16384M)后使用率预期为64%,符合要求。
4.确定扩展大小
SQL> show parameter db_block;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_buffers integer 0
db_block_checking string FALSE
db_block_checksum string TRUE
db_block_size integer 8192
扩展大小:8192*16384/1024/1024M=128M(db_block_size*INCREMENT_BY,块大小*块数=自动扩展的大小)
5.扩展表空间
SQL> alter tablespace BMSBAK add datafile '+ORADATA/callcent/datafile/bmsbak09.dbf' SIZE 16384M AUTOEXTEND ON NEXT 128M;
6.确认扩展后表空间使用率
发现使用率下降至64.62%。
至此扩表空间变更完成。