Oracle數據庫巡檢
$ORACLE_HOME\rdbms\admin\spreport.sql
Oracle數據庫巡檢
一、操作系統檢查
1.操作系統資源使用情況top/topas/iostat/vmstat 重點關註CPU/內存/交換的使用情況
2.操作系統空間使用情況df -h/-g 重點關註數據庫目錄空間(du -sh *)(du -sm *)
3.操作系統告警日誌
HP: cat /var/adm/syslog/syslog.log
AIX:errpt | more
LINUX: cat /var/log/messages
SUN:cat /var/log/messages
Windows:事件查看器,查看事件內容
4.uptime查看操作系統是否有重啟過特別是rac如有重啟重點檢查grid的alert日誌查明原因
二、集群檢查
1.檢查集群狀態crs_stat -t
2.檢查集群中數據庫的狀態crsctl status res -t
3.檢查service狀態(grid:lsnrctl status),如都飄在一個檢點上需要reload到對應節點(srvctl -h)
srvctl relocate service -d <db_unique_name> -s <service_name> {-i <old_inst_name> -t <new_inst_name> | -c <current_node> -n <target_node>} [-f]
4.檢查集群alert日誌 10g:$CRS_HOME/log/{hostname}/alert{hostname}.log11g:$ORACLE_HOME/log/{hostname}/alert{hostname}.log
5.ASM磁盤空間是否正常
select name,total_mb,free_mb from v$asm_diskgroup;
6.檢查磁盤狀態
select name,path,STATE,MODE_STATUS from v$asm_disk;
三、數據庫檢查
1.重點表空間使用情況確保使用率在85%以內
2.資源使用情況select * from v$resource_limit;(set linesize 300;set pagesize 300;)
3.閃回使用情況
select flashback_on from v$database;
查詢視圖v$recovery_file_dest視圖來了解其位置和最大的大小
select * from v$recovery_file_dest;
使用v$flash_recovery_area_usage確定閃回恢復區中的文件使用明細
select * from v$flash_recovery_area_usage;
4.11g的新客戶檢查新特性是否關閉
是否開啟審計show parameter audit_trail (db 開 none 關)
如開啟詢問是否有特許需求可以關閉
alter system set audit_trail=none scope=spfile sid='*';
truncate table sys.aud$;
select OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME,BYTES/1024/1024 MB from dba_segments where SEGMENT_TYPE='TABLE' and SEGMENT_NAME='AUD$';
5.清理監聽日誌 (win: > listener.log server 2008 R2 : echo " " > log.xml)
10g及10g以前:$ORACLE_HOME/network/log
11g以後:$ORACLE_BASE/diag/tnslsnr/{hostname}/listener/trace
lsnrctl status查看監聽日誌目錄
10g: $ORACLE_HOME/network/admin/log/ 11g:/oracle/gridbase/diag/tnslsnr/s1-11g/listener/alert/log.xml
LSNRCTL> set
LSNRCTL> set current_listener LISTENER
Current Listener is LISTENER
LSNRCTL> set log_status off
LSNRCTL> set log_status on
LSNRCTL> exit
11g LISTENER_SCAN1
LSNRCTL> set current_listener LISTENER_SCAN1
6.檢查數據庫告警日誌
10g以前:$ORACLE_BASE/admin/{SID}/bdump
D:\ORACLE\PRODUCT\10.2.0\ADMIN\{SID}\BDUMP
11g:$ORACLE_BASE/diag/rdbms/{DB_NAME}/{SID}/trace
7.查看數據庫等待事件
--查看整體數據庫的等待事件情況
select event,count(*) from gv$session_wait where wait_class<>'Idle' group by event;
8.收集awr報告
(1)獲取AWR報告
SQL>@ /rdbms/admin/awrrpt.sql (退出sqlplus即可看到AWR報告)
詢問客戶高峰期時間點,截取1-2小時的報告
四、備份檢查
1.確定是否存在邏輯或物理備份並查看備份情況(需檢查備份日誌)
2.如存在dbra或dg需檢查同步情況
切日誌,查看備庫是否應用正常
select THREAD#,max(sequence#) from v$archived_log group by thread#; 主機
select THREAD#,max(sequence#) from v$archived_log where applied='YES' group by thread#; 備庫
select THREAD#,max(sequence#) from v$archived_log group by thread#; 備庫
備機空間檢查
3.ogg同步情況檢查
[oracle@localhost odc12]$ ps -ef | grep mgr
oracle 8492 1 0 Mar17 00:02:29 ./mgr PARAMFILE /odc12/dirprm/mgr.prm REPORTFILE /odc12/dirrpt/MGR.rpt PROCESSID MGR USESUBDIRS
oracle 26085 1 0 Mar22 00:00:15 ./mgr PARAMFILE /odc/dirprm/mgr.prm REPORTFILE /odc/dirrpt/MGR.rpt PROCESSID MGR PORT 7809
cd /odc12
./ggsci
info all
ggserr.log
五、跑巡檢腳本
六、信息收集打包
1.操作系統日誌
2.集群alert日誌 grid用戶(/oracle/grid/crs_1($ORACLE_HOME)/log/zjrac1)
3.數據庫alert日誌
4.巡檢腳本輸出內容
mkdir
表空間檢查
set feed off
set linesize 100
set pagesize 200
column "USED (MB)" format a10
column "FREE (MB)" format a10
column "TOTAL (MB)" format a10
column PER_FREE format a10
--spool tablespace.alert
SELECT F.TABLESPACE_NAME,
TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999,999') "USED (MB)",
TO_CHAR (F.FREE_SPACE, '999,999') "FREE (MB)",
TO_CHAR (T.TOTAL_SPACE, '999,999') "TOTAL (MB)",
TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'999')||' %' PER_FREE,
TO_CHAR (T.MAX_SPACE,'999,999') "MAXEXTEND (MB)"
FROM (
SELECT TABLESPACE_NAME,
ROUND (SUM (BLOCKS*(SELECT VALUE/1024
FROM V$PARAMETER
WHERE NAME = 'db_block_size')/1024)
) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
) F,
(
SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES/1048576)) TOTAL_SPACE,
ROUND (SUM (MAXBYTES/1048576)) MAX_SPACE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME
) T
WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME
order by PER_FREE asc;
表空間:
select tpsname,status,mgr,maxsize,c_userd,max_used from (
SELECT d.tablespace_name tpsname,d.status status,
d.segment_space_management mgr, d.contents type,
TO_CHAR(NVL(trunc(A.maxbytes / 1024 / 1024), 0),'99G999G990') maxsize,
TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0),'990D00') c_userd,
TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0)) / a.maxbytes * 100, 0),'990D00') max_used
FROM sys.dba_tablespaces d,
(SELECT tablespace_name,sum(bytes) bytes,SUM(case autoextensible when 'NO' then BYTES when 'YES' then MAXBYTES else null end ) maxbytes FROM dba_data_files GROUP BY tablespace_name) a,
(SELECT tablespace_name,SUM(bytes) bytes, MAX(bytes) largest_free FROM dba_free_space GROUP BY tablespace_name) f
WHERE d.tablespace_name = a.tablespace_name AND d.tablespace_name = f.tablespace_name(+)
)
where max_used>80
order by max_used desc;
其它:
SQL> select file_name,bytes/1024/1024,maxbytes/1024/1024,AUTOEXTENSIBLE from dba_data_files;
Oracle數據庫巡檢