Oracle11G日常维护手册(4)

2019-01-19 13:00

5.3. 检查系统磁盘空间 [oracle@racdb1 racdb1]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VgMasterRoot-LogVolRoot 9.5G 433M 8.6G 5% / tmpfs 935M 315M 621M 34% /dev/shm /dev/mapper/VgMasterU01-LogVolU01 20G 6.7G 12G 37% /u01 /dev/sda1 9.5G 91M 9.0G 1% /boot /dev/mapper/VgMasterHome-LogVolHome 9.5G 72M 9.0G 1% /home /dev/mapper/VgMasterTemp-LogVolTmp 3.7G 7.7M 3.5G 1% /tmp /dev/mapper/VgMasterUsr-LogVolUsr 9.5G 1.3G 7.8G 15% /usr /dev/mapper/VgMasterVar-LogVolVar 9.5G 118M 8.9G 2% /var 5.4. 检查表空间使用情况 SELECT df.file_id, df.file_name, df.size_mb, NVL (free.maxfree, 0) maxfree_mb, ROUND (NVL (free.free_mb, 0), 2) free_mb, 100 - ROUND (100.0 * NVL (free.free_mb, 0) / df.size_mb, 2) pct_used, ROUND (100.0 * NVL (free.free_mb, 0) / df.size_mb, 2) pct_free FROM (SELECT file_id, file_name, tablespace_name, BYTES / 1048576 size_mb FROM dba_data_files) df, (SELECT file_id, SUM (BYTES) / 1048576 free_mb, TRUNC (MAX (BYTES / 1024 / 1024), 2) maxfree FROM dba_free_space GROUP BY file_id) free WHERE df.file_id = free.file_id(+) ORDER BY 7; TABLESPACE_NAME TOTAL FREE % Free ------------------------------ ---------- ---------- ---------- SYSTEM 680 6 1 SYSAUX 530 28 5 USERS 5 3 60 UNDOTBS1 90 70 78 SCOTTSPACE06 5 4 80 SQL> select A.tablespace_name, (1-(A.total)/B.total)*100 used_percent from (select tablespace_name, sum(bytes) total from dba_free_space group by tablespace_name ) A, (select tablespace_name, sum(bytes) total from dba_data_files group by tablespace_name ) B where A.tablespace_name=B.tablespace_name; TABLESPACE_NAME USED_PERCENT ------------------------------ ------------ SYSAUX 95.259433962 UNDOTBS1 20.347222222 USERS 31.25 SYSTEM 99.172794117 SCOTTSPACE06 20 SELECTD.TABLESPACE_NAME,FILE_NAME \\E_SPACE,0) \ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2) \FROM (SELECT FILE_ID,FILE_NAME,TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME,FILE_ID,FILE_NAME) D, (SELECT FILE_ID,TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME,FILE_ID) E, (SELECT FILE_ID,AUTOEXTENSIBLE FROM DBA_DATA_FILES) F WHERE D.TABLESPACE_NAME = E.TABLESPACE_NAME(+) AND D.FILE_ID = E.FILE_ID(+) AND D.FILE_ID = F.FILE_ID(+) UNION ALL --if have tempfile SELECT D.TABLESPACE_NAME,FILE_NAME \\USED_SPACE \ROUND(NVL(USED_SPACE,0)/SPACE*100,2) \FROM (SELECT FILE_ID,FILE_NAME,TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME,FILE_ID,FILE_NAME) D, (SELECT FILE_ID,TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE, ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE FROM V$TEMP_SPACE_HEADER GROUP BY TABLESPACE_NAME,FILE_ID) E, (SELECT FILE_ID,AUTOEXTENSIBLE FROM DBA_TEMP_FILES) F WHERE D.TABLESPACE_NAME = E.TABLESPACE_NAME(+) AND D.FILE_ID = E.FILE_ID(+) AND D.FILE_ID = F.FILE_ID(+) ORDER BY TABLESPACE_NAME,FILE_NAME; 如果空闲率%Free小于10%以上(包含10%),则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能。请不要对表空间增加过多的数据文件,增加数据文件的原则是每个数据文件大小为2G或者4G,自动扩展的最大限制在8G。 5.5. 检查一些扩展异常的对象 select Segment_Name, Segment_Type, TableSpace_Name, (Extents/Max_extents)*100 Percent From sys.DBA_Segments Where Max_Extents != 0 and (Extents/Max_extents)*100>=95 order By Percent; no rows selected 如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值。对于这些对象要修改它的存储结构参数。

说明说明 5.6. 检查表空间碎片情况 select tablespace_name, count(*) chunks, max(bytes)/1024/1024 max_chunk, sum(bytes)/1024/1024 total_space from dba_free_space group by tablespace_name; 其中, CHUNKS 列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的 Oracle 数据块组成) ,如果这样的空闲块过多,比如平均到每个数据文件上超过了 100 个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的 SQL 命令进行表空间相邻碎片的接合,如果最大可用块(max_chunk)与总大小(total_space)相比太小,要考虑接合表空间碎片或重建某些数据库对象。碎片接合的方法: alter tablespace users coalesce; 5.7. 检查system表空间内的内容 select distinct(owner) from dba_tables where tablespace_name='SYSTEM' and owner!='SYS' and owner!='SYSTEM' union select distinct(owner) from dba_indexes where tablespace_name='SYSTEM' and owner!='SYS' and owner!='SYSTEM'; 如果记录返回,则表明system表空间内存在一些非system和sys用户的对象。应该进一步检查这些对象是否与我们应用相关。如果相关请把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。

说明说明5.8. 检查对象的下一扩展与表空间的最大扩展值 select a.table_name, a.next_extent, a.tablespace_name from all_tables a, (select tablespace_name, max(bytes) as big_chunk from dba_free_space group by tablespace_name ) f where f.tablespace_name = a.tablespace_name and a.next_extent > f.big_chunk union select a.index_name, a.next_extent, a.tablespace_name from all_indexes a, (select tablespace_name, max(bytes) as big_chunk from dba_free_space group by tablespace_name ) f where f.tablespace_name = a.tablespace_name and a.next_extent > f.big_chunk; no rows selected 如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参数。

说明5.9. 检查flash recovery area空间 SELECTsubstr(name, 1, 30) name, space_limit ASquota,space_used AS used, space_reclaimable AS reclaimable, number_of_files AS files FROM v$recovery_file_dest ; 默认情况下开启归档后的文件存放路径,可以更改路径,监控该区域空间是否正常,防止数据库被挂起

说明6. 检查Oracle数据库性能

记录数据库的cpu使用、IO、内存等使用情况,使用vmstat,iostat,sar,top等命令进行信息收集并检查这些信息,判断资源使用情况。

6.1. 查询表空间读写情况 SQL> SELECT name,phyrds,phywrts FROM V$datafile df,V$filestat fs WHERE df.file# =fs.file#; NAME PHYRDS PHYWRTS -------------------------------------------------------------------------------- ---------- ---------- /u01/app/oracle/oradata/racdb1/system01.dbf 11356 563 /u01/app/oracle/oradata/racdb1/sysaux01.dbf 1869 3219 /u01/app/oracle/oradata/racdb1/undotbs01.dbf 32 1449 /u01/app/oracle/oradata/racdb1/users01.dbf 90 0 /u01/app/oracle/oradata/racdb1/SCOTTSPACE06.dbf 3 0 说明 其中PHYRDS 代表已完成的物理读次数,PHYWRTS代表DBWR完成的物理写次数 数据库的IO负载系统的瓶颈在于磁盘IO,所以一般可以通过操作系统的一些命令来确认一个系统是否是存在IO负载问题,比如iostat,sar 等

6.2. 查询redo log buffer的繁忙程度 SQL> SELECT retries.value/entries.value \ 2 FROM V$sysstat retries, V$sysstat entries 3 Where retries.name = 'redo buffer allocation retries' 4 And entries.name = 'redo entries'; Redo Log Buffer Retry Ratio --------------------------- 8.96531320321675E-6

redo buffer allocation retries事件越少越好,该语句查询结果应该接近0或少于1%,否则要增加redo buffer

说明6.3. 判断undo表空间的使用情况 SQL> select sum(bytes) ,status from dba_undo_extents group by status; SUM(BYTES) STATUS ---------- --------- 7667712 UNEXPIRED 10616832 EXPIRED 说明 每个undo extent可以有三种状态: active:有活动事务在此extent上

expired:已结束的事务,undo 信息超过undo_retention时间限制 unexpired:已经结束的事务,undo 信息未达到undo_retention时间限制

当一个事务开始它将会去寻找可用的undo block来存放undo信息,它将按照以下顺序请求undo space.

先去搜索拥有非active extent的undo segment,如果没有发现,那么会去创建新的undo segment,如果空间不够不能创建,将返回错误。

所以如果undo虽然表空间满,但是有很多非active的空间的话,应该不会出现事务失败的问题


Oracle11G日常维护手册(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新课标人教版小学六年级语文上册第 6 单元测试卷2带答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: