Oracle数据库日常巡检:
1.检查数据库日志
1.1 警告日志:
cat
/orainst/admin/cba/bdump/alert_cba.log
1.2 联机(在线)重做日志:
# cd
/orainst/flash_recovery_area/CBA/archivelog
1.3 归档重做日志:
ls/orainst/flash_recovery_area/CBA/archivelog/
1.4
跟踪日志:
用LogMiner查看。
2.查看相关用户的mail
$
3.检查核心转储
3. 查看闪回恢复区的空间使用率,配置为20G
cd /orainst/flash_recovery_area/CBA
# du -m
0.00 ./archivelog/2014_07_01
0.00 ./archivelog/2014_07_02
0.00 ./archivelog/2014_07_03
0.00 ./archivelog/2014_07_04
248.77 ./archivelog/2014_07_06
665.55 ./archivelog/2014_07_07
829.43 ./archivelog/2014_07_08
1494.52 ./archivelog/2014_07_10
929.74 ./archivelog/2014_07_11
4168.02 ./archivelog
0.00 ./onlinelog
4168.02 .
4.检查所有无效的对象
select
* from dba_objects where status!='VALID';
4.1 检查闪回恢复区的使用率:
select * from v$flash_recovery_area_usage;
5.检查数据库表空间使用率
select
a.a1表空间名称,
c.c2类型,
c.c3区管理,
b.b2/1024/1024表空间大小M,
(b.b2-a.a2)/1024/1024已使用M,
substr((b.b2-a.a2)/b.b2*100,1,5)利用率
from
(select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space
group by tablespace_name) a,
(select tablespace_name b1,sum(bytes) b2 from dba_data_files group by
tablespace_name) b,
(select tablespace_name c1,contents c2,extent_management c3 from
dba_tablespaces) c
where a.a1=b.b1 and c.c1=b.b1;
或使用:
SELECT
UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB
"表空间大小(M)",
D.TOT_GROOTTE_MB
- F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB
- F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES
"空闲空间(M)",
F.MAX_BYTES
"最大块(M)"
FROM
(SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES)
/ (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES)
/ (1024 * 1024), 2) MAX_BYTES
FROM
SYS.DBA_FREE_SPACE
GROUP
BY TABLESPACE_NAME) F,
(SELECT
DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM
SYS.DBA_DATA_FILES DD
GROUP
BY DD.TABLESPACE_NAME) D
WHERE
D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER
BY 1;
6.检查数据库的数据文件是否为自动扩展
6.1查看所有的表空间以及所对应数据文件名:
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name
6.2 查看表空间是否自动扩展:
select
tablespace_name,file_name,autoextensible from dba_data_files where
tablespace_name = 'CIS_DATA';
select
tablespace_name,file_name,autoextensible from dba_data_files where
tablespace_name = '2012';
1. 2012
2. CIS_DATA
3.
LHCBA_DATA
4. MMDB_DAT1
5. MMDB_LOB1
6. MMDB_NDX1
7. PMDB_DAT1
8. PMDB_LOB1
9. PMDB_NDX1
10. SYSAUX
11. SYSTEM
12. UNDOTBS1
13.
USERS
7.检查备份是否出错
vi /nbuscript/hot_database_backup.sh.out 查看RMAN备份日志
cd /oradata/oradmp 查看exp的log日志
8.检查Oracle实例状态
SQL> select status from
v$instance;
STATUS
------------
OPEN
9.检查Oracle数据库状态
SQL> select open_mode from v$database;
10.检查Oracle死锁
select
username,lockwait,status,machine,program from v$session where sid in
(select
session_id from v$locked_object)
11.检查缓冲区命中率
12.检查共享池命中率
13.数据字典命中率
14.库缓存命中率
15.最浪费内存的前10个语句占全部内存读取量的比例
16.检查失效的索引
17.检查日志文件、控制文件、参数文件、数据文件、表空间、回滚段等Oracle对象的状态
18.检查每一个扩展异常对象状态
19.查询等待事件
20.SQL语句的利用率和效率查询
21.实时监控操作系统,发生异常需短信或邮件报警
22.检查Oracle数据库的进程
23.检查Oracle数据库的监听进程
24.检查Oracle的自动负载库报告
25.检查Oracle官方补丁
26.关注Oracle官方新闻
27.检查Oracle的自动诊断报告
28.使用LogMiner分析数据库的日志
29. 查看当前实例SID:
# echo $ORACLE_SID# env
# set
30. 定义选择的sid(适用于一个数据库多个实例)
export
ORACLE_SID=orcl
30. 查看时spfile启动,还是pfile启动:
SQL>
show parameter spfile;
NAME TYPE
VALUE
------------------------------------ -----------
------------------------------
spfile string
/orainst/product/10g/dbs/spfil
ecba.ora
如果有值说明使用spfile启动,反之pfile
以上工作尽量做到每日巡检,个别项可以每周巡检。这样可以对数据库系统的安全性和稳定性有一个基本的保障。