該腳本主要用來做資料庫的正常檢查,以及dg備庫.
各位少做修改即可使用
bin/env bash
# FILE: db_check.sh
#
# USAGE: ./db_check.sh
# DESCRIPTION: Check the database status.
# BUGS: ---
# AUTHOR: JadeShow/[email protected]
# VERSION: 0.1
# CREATED: Sat Feb 4 12:29:19 BEIST 2012
#================================================================================
ORACLE_BASE=/oracle
ORACLE_HOME=/oracle/product/10.2.0
ORACLE_SID=htdisdb
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/home/htmon/bin:/usr/bin/X11:/sbin:.:/bin:/oracle/product/10.2.0/bin
export PATH ORACLE_SID ORACLE_HOME ORACLE_BASE
export NLS_LANG=American_America.AL32UTF8;
set line 120;
set pages 0;
set feedback off;
set heading off;
set verify off;
set echo off;
sqlplus -s sys/sys@htdisdb "as sysdba" << !
column dest_name format a30
column destination format a20
column MEMBER format a45
column TABLESPACE_NAME format a10
column FREE_RATE format a10
prompt **************************** 實 例 狀 态 ************************************;
select instance_name,version,status,database_status from v\$instance;
prompt **************************** 資料庫狀态 *************************************;
select name,log_mode,open_mode from v\$database;
prompt **************************** 控制檔案狀态 ***********************************;
column name format a50
select status,name from v\$controlfile;
prompt **************************** 日志檔案狀态 ***********************************;
select GROUP#,status,type,member from v\$logfile;
prompt***************************** 歸檔目的地狀态 *********************************;
select dest_name ,status,database_mode,destination from v\$archive_dest_status where dest_id in ('1','2');
prompt ************資料庫已連續運作天數*******************************************
select round(a.atime-b.startup_time)||' days ' from(select sysdate atime from dual) a,v\$instance b;
set heading on;
prompt***************************** 會 話 數 *************************************;
select sessions_current,sessions_highwater from v\$license;
prompt********************** 表空間監控********************;
prompt TABLESPACE_NAME 已用空間(M) 空閑空間(M)
SELECT D.TABLESPACE_NAME,
SPACE "SUM_SPACE(M)",
BLOCKS "SUM_BLOCKS",
SPACE - NVL (FREE_SPACE, 0) "USED_SPACE(M)",
ROUND( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) "USED_RATE(%)",
FREE_SPACE "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
UNION ALL --如果有臨時表空間
BLOCKS SUM_BLOCKS,
USED_SPACE "USED_SPACE(M)",
ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) "USED_RATE(%)",
NVL (FREE_SPACE, 0) "FREE_SPACE(M)"
FROM DBA_TEMP_FILES
ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE,
ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE
FROM V\$TEMP_SPACE_HEADER
ORDER BY 1;
prompt **************************** 表空間OFFLINE(顯示為空正常) ********************;
select tablespace_name ,status from dba_tablespaces where status='OFFLINE';
prompt **************************** SEQUENCE同步數 *********************************;
select max(sequence#)from v\$log_history;
disconnect
!
sqlplus -s sys/sys@htdisdb "as sysdba" <<!
prompt **************************** 備庫SEQUENCE同步數 *****************************;
prompt **************************** 備庫日志未應用(顯示為空正常) *******************;
select sequence#,applied from v\$archived_log where applied='NO';
prompt **************************** 備庫日志應用(顯示最近十個日志) *****************;
select * from(select sequence#,applied from v\$archived_log order by sequence# desc) where rownum<=10;
set time on
本文轉自 珏石頭 51CTO部落格,原文連結:http://blog.51cto.com/gavinshaw/772398,如需轉載請自行聯系原作者