资源描述
密级:保密
编号:
Oracle10g数据库
维护手册
日期:
编写:
核对:
更新:
目 录
1. 检查数据库基本状况 4
1.1. 检查Oracle实例状态 4
1.2. 检查Oracle服务进程 4
1.3. 检查Oracle监听状态 5
2. 检查系统和ORACLE日记文献 6
2.1. 检查操作系统日记文献 6
2.2. 检查oracle日记文献 6
2.3. 检查Oracle核心转储目录 7
2.4. 检查Root顾客和Oracle顾客email 7
3. 检查ORACLE对象状态 7
3.1. 检查Oracle控制文献状态 7
3.2. 检查Oracle在线日记状态 8
3.3. 检查Oracle表空间状态 8
3.4. 检查Oracle所有数据文献状态 8
3.5. 检查无效对象 9
3.6. 检查所有回滚段状态 10
4. 检查ORACLE有关资源使用状况 10
4.1. 检查Oracle初始化文献中有关参数值 10
4.2. 检查数据库连接状况 11
4.3. 检查系统磁盘空间 12
4.4. 检查表空间使用状况 12
4.5. 检查某些扩展异常对象 13
4.6. 检查system表空间内内容 14
4.7. 检核对象下一扩展与表空间最大扩展值 14
5. 检查ORACLE数据库备份成果 14
5.1. 检查数据库备份日记信息 15
5.2. 检查backup卷中文献产生时间 15
5.3. 检查oracle顾客email 15
6. 检查ORACLE数据库性能 15
6.1. 检查数据库等待事件 15
6.2. Disk Read最高SQL语句获取 15
6.3. 查找前十条性能差sql 16
6.4. 等待时间最多5个系统等待事件获取 16
6.5. 检查运营好久SQL 16
6.6. 检查消耗CPU最高进程 16
6.7. 检查碎片限度高表 17
6.8. 检查表空间 I/O 比例 17
6.9. 检查文献系统 I/O 比例 17
6.10. 检查死锁及解决 17
6.11. 检查数据库cpu、I/O、内存性能 18
6.12. 查看与否有僵死进程 19
6.13. 检查行链接/迁移 19
6.14. 定期做记录分析 19
6.15. 检查缓冲区命中率 20
6.16. 检查共享池命中率 20
6.17. 检查排序区 20
6.18. 检查日记缓冲区 21
7. 检查数据库安全性 21
7.1. 检查系统安全日记信息 21
7.2. 检查顾客修改密码 21
8. 其她检查 22
8.1. 检查当前crontab任务与否正常 22
8.2. Oracle Job与否有失败 22
8.3. 监控数据量增长状况 22
8.4. 检查失效索引 23
8.5. 检查不起作用约束 23
8.6. 检查无效trigger 23
巡检内容
1. 检查数据库基本状况
在本节中重要对数据库基本状况进行检查,其中包括:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个某些。
1.1. 检查Oracle实例状态
SQL> select instance_name,host_name,startup_time,status,database_status from v$instance;
INSTANCE_NAME HOST_NAME STARTUP_TIME STATUS DATABASE_STATUS
---------------- ------------------- -------------------- ---------- ------------ ----
CKDB AS14 -5-7 9:3 OPEN ACTIVE
其中“STATUS”表达Oracle当前实例状态,必要为“OPEN”;“DATABASE_STATUS”表达Oracle当前数据库状态,必要为“ACTIVE”。
SQL> select name,log_mode,open_mode from v$database;
NAME LOG_MODE OPEN_MODE
--------- ------------ -----------------
CKDB ARCHIVELOG READ WRITE
其中“LOG_MODE”表达Oracle当前归档方式。“ARCHIVELOG”表达数据库运营在归档模式下,“NOARCHIVELOG”表达数据库运营在非归档模式下。在咱们系统中数据库必要运营在归档方式下。
1.2. 检查Oracle服务进程
$ps -ef|grep ora_|grep -v grep&&ps -ef|grep ora_|grep -v grep|wc –l
oracle 2960 1 0 May07 ? 00:01:02 ora_pmon_CKDB
oracle 2962 1 0 May07 ? 00:00:22 ora_psp0_CKDB
oracle 2964 1 0 May07 ? 00:00:00 ora_mman_CKDB
oracle 2966 1 0 May07 ? 00:03:20 ora_dbw0_CKDB
oracle 2968 1 0 May07 ? 00:04:29 ora_lgwr_CKDB
oracle 2970 1 0 May07 ? 00:10:31 ora_ckpt_CKDB
oracle 2972 1 0 May07 ? 00:03:45 ora_smon_CKDB
oracle 2974 1 0 May07 ? 00:00:00 ora_reco_CKDB
oracle 2976 1 0 May07 ? 00:01:24 ora_cjq0_CKDB
oracle 2978 1 0 May07 ? 00:06:17 ora_mmon_CKDB
oracle 2980 1 0 May07 ? 00:07:26 ora_mmnl_CKDB
oracle 2982 1 0 May07 ? 00:00:00 ora_d000_CKDB
oracle 2984 1 0 May07 ? 00:00:00 ora_s000_CKDB
oracle 2994 1 0 May07 ? 00:00:28 ora_arc0_CKDB
oracle 2996 1 0 May07 ? 00:00:29 ora_arc1_CKDB
oracle 3000 1 0 May07 ? 00:00:00 ora_qmnc_CKDB
oracle 3625 1 0 May07 ? 00:01:40 ora_q000_CKDB
oracle 31594 1 0 Jul20 ? 00:00:00 ora_q003_CKDB
oracle 23802 1 0 05:09 ? 00:00:33 ora_j000_CKDB
19
在检查Oracle进程命令输出后,输出显示至少应涉及如下某些进程:
. Oracle写数据文献进程,输出显示为:“ora_dbw0_CKDB”
. Oracle写日记文献进程,输出显示为:“ora_lgwr_ CKDB”
. Oracle监听实例状态进程,输出显示为:“ora_smon_ CKDB”
. Oracle监听客户端连接进程状态进程,输出显示为:“ora_pmon_ CKDB”
. Oracle进行归档进程,输出显示为:“ora_arc0_ CKDB”
. Oracle进行检查点进程,输出显示为:“ora_ckpt_ CKDB”
. Oracle进行恢复进程,输出显示为:“ora_reco_ CKDB”
1.3. 检查Oracle监听状态
/home/oracle>lsnrctl status
LSNRCTL for Linux:Version 10.2.0.2.0 - Production on 23-JUL- 14:11:53
Copyright (c) 1991,,Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux:Version 10.2.0.2.0 - Production
Start Date 07-MAY- 09:35:52
Uptime 77 days 4 hr. 36 min. 0 sec
Trace Level off
Security ON:Local OS Authentication
SNMP OFF
Listener Parameter File /data/oracle/product/10.2.0/network/admin/listener.ora
Listener Log File /data/oracle/product/10.2.0/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=AS14)(PORT=1521)))
Services Summary...
Service "CKDB" has 1 instance(s).
Instance "CKDB",status READY,has 1 handler(s) for this service...
Service "CKDBXDB" has 1 instance(s).
Instance "CKDB",status READY,has 1 handler(s) for this service...
Service "CKDB_XPT" has 1 instance(s).
Instance "CKDB",status READY,has 1 handler(s) for this service...
The command completed successfully
“Services Summary”项表达Oracle监听进程正在监听哪些数据库实例,输出显示中至少应当有“CKDB”这一项。
检查监听进程与否存在:
[oracle@AS14 ~]$ ps -ef|grep lsn|grep -v grep
oracle 2954 1 0 May07 ? 00:01:17 /data/oracle/product/10.2.0/bin/tnslsnr LISTENER –inherit
2. 检查系统和oracle日记文献
在本节重要检查有关日记文献,包括:检查操作系统日记文献,检查Oracle日记文献,检查Oracle核心转储目录,检查Root顾客和Oracle顾客email,总共四个某些。
2.1. 检查操作系统日记文献
# cat /var/log/messages |grep failed
查看与否有与Oracle顾客有关出错信息。
2.2. 检查oracle日记文献
[oracle@AS14 ~]$ cat /data/oracle/admin/CKDB/bdump/alert_CKDB.log |grep ora-
[oracle@AS14 ~]$ cat /data/oracle/admin/CKDB/bdump/alert_CKDB.log |grep err
[oracle@AS14 ~]$ cat /data/oracle/admin/CKDB/bdump/alert_CKDB.log |grep fail
Oracle在运营过程中,会在警告日记文献(alert_SID.log)中记录数据库某些运营状况:数据库启动、关闭,启动时非缺省参数;数据库重做日记切换状况,记录每次切换时间,及如果由于检查点(checkpoint)操作没有执行完毕导致不能切换,会记录不能切换因素;对数据库进行某些操作,如创立或删除表空间、增长数据文献;数据库发生错误,如表空间不够、浮现坏块、数据库内部错误(ORA-600)等。定期检查日记文献,依照日记中发现问题及时进行解决:
问题
解决
启动参数不对
检查初始化参数文献
由于检查点操作或归档操作没有完毕导致重做日记不能切换
如果经常发生这样状况,可以考虑增长重做日记文献组;想办法提高检查点或归档操作效率;
有人未经授权删除了表空间
检查数据库安全问题,与否密码太简朴;如有必要,撤除某些顾客系统权限
浮现坏块
检查与否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象浮现了坏块,对这个对象进行重建
表空间不够
增长数据文献到相应表空间
浮现ORA-600
依照日记文献内容查看相应TRC文献,如果是Oraclebug,要及时打上相应补丁
Listener日记:$ORACLE_HOME/network/log
2.3. 检查Oracle核心转储目录
$ls $ORACLE_BASE/admin/CKDB/cdump/*.trc|wc -l
$ls $ORACLE_BASE/admin/CKDB/udump/*.trc|wc –l
如果上面命令成果每天都在增长,则阐明Oracle进程经常发生核心转储。这阐明某些顾客进程或者数据库后台进程由于无法解决因素而异常退出。频繁核心转储特别是数据库后台进程核心转储会导致数据库异常终结。
2.4. 检查Root顾客和Oracle顾客email
#tail –n 200 /var/mail/root
#tail –n 200 /var/mail/oracle
查看有无与Oracle顾客有关出错信息。
3. 检查Oracle对象状态
在本节重要检查有关Oracle对象状态,包括:检查Oracle控制文献状态,检查Oracle在线日记状态,检查Oracle表空间状态,检查Oracle所有数据文献状态,检查Oracle所有表、索引、存储过程、触发器、包等对象状态,检查Oracle所有回滚段状态,总共六个某些。
3.1. 检查Oracle控制文献状态
SQL> select status,name from v$controlfile;
STATUS NAME
------- --------------------------------------------------------------------------------
/data/oradata/CKDB/control01.ctl
/data/oradata/CKDB/control02.ctl
/data/oradata/CKDB/control03.ctl
输出成果应当有3条以上(包括3条)记录,“STATUS”应当为空。状态为空表达控制文献状态正常。
3.2. 检查Oracle在线日记状态
SQL> select group#,status,type,member from v$logfile;
GROUP# STATUS TYPE MEMBER
---------- ------- ------- -----------
3 ONLINE /data/oradata/CKDB/redo03.log
2 ONLINE /data/oradata/CKDB/redo02.log
1 ONLINE /data/oradata/CKDB/redo01.log
4 ONLINE /data/oradata/CKDB/redo04.log
5 ONLINE /data/oradata/CKDB/redo05.log
6 ONLINE /data/oradata/CKDB/redo06.log
6 rows selected
输出成果应当有3条以上(包括3条)记录,“STATUS”应当为非“INVALID”,非“DELETED”。 注:“STATUS”显示为空表达正常。
3.3. 检查Oracle表空间状态
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
USERS ONLINE
SJ1 ONLINE
ADM_INDEX ONLINE
HOME_DATA ONLINE
HOME_INDEX ONLINE
PHOTO_DATA ONLINE
PHOTO_INDEX ONLINE
。。。。。。。
输出成果中STATUS应当都为ONLINE。
3.4. 检查Oracle所有数据文献状态
SQL> select name,status from v$datafile;
NAME STATUS
-------------------------------------------------- -------
/data/oradata/CKDB/system01.dbf SYSTEM
/data/oradata/CKDB/undotbs01.dbf ONLINE
/data/oradata/CKDB/sysaux01.dbf ONLINE
/data/oradata/CKDB/users01.dbf ONLINE
/data/oradata/CKDB/sj.dbf ONLINE
/data/oradata/CKDB/HOME_DATA1.dbf ONLINE
/data/oradata/CKDB/HOME_INDEX1.dbf ONLINE
/data/oradata/CKDB/PHOTO_DATA1.dbf ONLINE
/data/oradata/CKDB/PHOTO_INDEX1.dbf ONLINE
/data/oradata/CKDB/BLOG_DATA1.dbf ONLINE
/data/oradata/CKDB/BLOG_INDEX1.dbf ONLINE
/data/oradata/CKDB/AUDIO_DATA1.dbf ONLINE
/data/oradata/CKDB/AUDIO_INDEX1.dbf ONLINE
/data/oradata/CKDB/VIDEO_DATA1.dbf ONLINE
/data/oradata/CKDB/VIDEO_INDEX1.dbf ONLINE
/data/oradata/CKDB/SYS_DATA1.dbf ONLINE
/data/oradata/CKDB/SYS_INDEX1.dbf ONLINE
/data/oradata/CKDB/ADM_DATA1.dbf ONLINE
/data/oradata/CKDB/ADM_INDEX1.dbf ONLINE
/data/oradata/CKDB/perfstat.dbf ONLINE
输出成果中“STATUS”应当都为“ONLINE”。或者:
SQL> select file_name,status from dba_data_files;
FILE_NAME STATUS
--------------------------------------------- ---------
/data/oradata/CKDB/users01.dbf AVAILABLE
/data/oradata/CKDB/sysaux01.dbf AVAILABLE
/data/oradata/CKDB/undotbs01.dbf AVAILABLE
/data/oradata/CKDB/system01.dbf AVAILABLE
/data/oradata/CKDB/sj.dbf AVAILABLE
/data/oradata/CKDB/perfstat.dbf AVAILABLE
/data/oradata/CKDB/HOME_DATA1.dbf AVAILABLE
/data/oradata/CKDB/HOME_INDEX1.dbf AVAILABLE
/data/oradata/CKDB/PHOTO_DATA1.dbf AVAILABLE
输出成果中“STATUS”应当都为“AVAILABLE”。
3.5. 检查无效对象
sql>select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';
no rows selected
如果有记录返回,则阐明存在无效对象。若这些对象与应用有关,那么需要重新编译生成这个对象,或者:
SELECT owner,object_name,object_type FROM dba_objects WHERE status= 'INVALID';
3.6. 检查所有回滚段状态
SQL> select segment_name,status from dba_rollback_segs;
SEGMENT_NAME STATUS
------------------------------ ----------------
SYSTEM ONLINE
_SYSSMU1$ ONLINE
_SYSSMU2$ ONLINE
_SYSSMU3$ ONLINE
_SYSSMU4$ ONLINE
_SYSSMU5$ ONLINE
_SYSSMU6$ ONLINE
_SYSSMU7$ ONLINE
_SYSSMU8$ ONLINE
_SYSSMU9$ ONLINE
_SYSSMU10$ ONLINE
11 rows selected
输出成果中所有回滚段“STATUS”应当为“ONLINE”。
4. 检查Oracle有关资源使用状况
在本节重要检查Oracle有关资源使用状况,包括:检查Oracle初始化文献中有关参数值,检查数据库连接状况,检查系统磁盘空间,检查Oracle各个表空间使用状况,检查某些扩展异常对象,检查system表空间内内容,检核对象下一扩展与表空间最大扩展值,总共七个某些。
4.1. 检查Oracle初始化文献中有关参数值
SQL> select resource_name,max_utilization,initial_allocation,
limit_value from v$resource_limit;
RESOURCE_NAME MAX_UTILIZATION INITIAL_ALLOCAT LIMIT_VALUE
-------------------- --------------- --------------- ---------------
processes 162 500 500
sessions 168 555 555
enqueue_locks 136 6930 6930
enqueue_resources 111 2660 UNLIMITED
ges_procs 0 0 0
ges_ress 0 0 UNLIMITED
ges_locks 0 0 UNLIMITED
ges_cache_ress 0 0 UNLIMITED
ges_reg_msgs 0 0 UNLIMITED
ges_big_msgs 0 0 UNLIMITED
ges_rsv_msgs 0 0 0
gcs_resources 0 0 0
gcs_shadows 0 0 0
dml_locks 76 2440 UNLIMITED
temporary_table_locks 26 UNLIMITED UNLIMITED
transactions 13 610 UNLIMITED
branches 0 610 UNLIMITED
cmtcallbk 3 610 UNLIMITED
sort_segment_locks 5 UNLIMITED UNLIMITED
max_rollback_segments 11 610 65535
RESOURCE_NAME MAX_UTILIZATION INITIAL_ALLOCAT LIMIT_VALUE
-------------------- --------------- --------------- ---------------
max_shared_servers 1 UNLIMITED UNLIMITED
parallel_max_servers 16 80 3600
22 rows selected
若LIMIT_VALU-MAX_UTILIZATION<=5,则表白与RESOURCE_NAME有关Oracle初始化参数需要调节。可以通过修改Oracle初始化参数文献$ORACLE_BASE/admin/CKDB/pfile/initORCL.ora来修改。
4.2. 检查数据库连接状况
查看当前会话连接数,与否属于正常范畴。
SQL> select count(*) from v$session;
COUNT(*)
----------
29
select sid,serial#,username,program,machine,status from v$session;
SID SERIAL# USERNAME PROGRAM MACHINE STATUS
---- ---------- ------------ ---------------------------- ------------ --------
1 3 oracle@xz15saledb (PMON) xz15saledb ACTIVE
2 3 oracle@xz15saledb (DBW0) xz15saledb ACTIVE
3 3 oracle@xz15saledb (DBW1) xz15saledb ACTIVE
4 3 oracle@xz15saledb (LGWR) xz15saledb ACTIVE
5 3 oracle@xz15saledb (CKPT) xz15saledb ACTIVE
6 3 oracle@xz15saledb (SMON) xz15saledb ACTIVE
7 3 oracle@xz15saledb (RECO) xz15saledb ACTIVE
8 1 oracle@xz15saledb (CJQ0) xz15saledb ACTIVE
9 3 oracle@xz15saledb (ARC0) xz15saledb ACTIVE
10 3 oracle@xz15saledb (ARC1) xz15saledb ACTIVE
11 11319 ZK AccPrtInv_svr@xz15tuxedo2 (TNS V1-V3) xz15tuxedo2 INACTIVE
13 48876 ZG upload@xz15saleap (TNS V1-V3) xz15saleap INACTIVE
17 20405 ZK AccCreateRpt@xz15tuxedo1 (TNS V1-V3) xz15tuxedo1 INACTIVE
20 12895 ZK OweScanSvr@xz15billdb (TNS V1-V3) xz15billdb INACTIVE
展开阅读全文