oracle数据库巡检内容
oracle日常维护巡检工作汇总

oracle 日常维护工作内容(1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行检查,发现并解决问题。
(2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。
====================每天工作====================1.(1).确认所有的INSTANCE状态正常.登陆到所有数据库或例程,检测ORACLE后台进程:$ps –-ef|grep ora(2). 检查文件系统的使用(剩余空间)。
如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。
对于业务交易生产系统和数据库日志归档目录,当空间不足,请急时清理.$df -h(3). 检查日志文件和trace文件记录alert和trace文件中的错误.连接到数据库服务器cd 到bdump目录,通常是$ORACLE_BASE/admin/<SID>/bdump‘tail’命令来查看alert_<SID>.log文件如果发现任何新的ORA- 错误,记录并解决(4). 检查数据文件的状态记录状态不是“online”的数据文件,并做恢复。
Select file_name from dba_data_files where status=’OFFLINE’(5). 检查表空间的使用情况SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_nameFROM dba_free_spaceGROUP BY tablespace_name;SELECT a.tablespace_name,a.bytes total,b.bytes used,c.bytes free,(b.bytes * 100) / a.bytes "% USED ",(c.bytes * 100) / a.bytes "% FREE "FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free cWHERE a.tablespace_name = b.tablespace_nameAND a.tablespace_name = c.tablespace_name;(6). 检查剩余表空间SELECT tablespace_name, SUM (blocks) AS free_blk,TRUNC (SUM (BYTES) / (1024 * 1024)) AS free_m,MAX (BYTES) / (1024) AS big_chunk_k, COUNT (*) AS num_chunks FROM dba_free_spaceGROUP BY tablespace_name;(7). 检查数据库性能,记录数据库的cpu使用、IO、buffer命中率等等使用vmstat,iostat,glance,top等命令====================每周工作====================(1). 监控数据库对象的空间扩展情况根据本周每天的检查情况找到空间扩展很快的数据库对象,并采取相应的措施alter tablespace 表空间名add datafile '/u1/oradata/userdata_002.ora' size *m;(2). 检查无效的数据库对象SELECT owner, object_name, object_typeFROM dba_objectsWHERE status = 'invalid';(3). 检查不起作用的约束SELECT owner, constraint_name, table_name, constraint_type, statusFROM dba_constraintsWHERE status = 'DISABLED' AND constraint_type = 'P' ;(4). 检查无效的triggerSELECT owner, trigger_name, table_name, statusFROM dba_triggersWHERE status = 'DISABLED';====================每月的工作====================(1). 检查表空间碎片根据本月每周的检查分析数据库碎片情况,找到相应的解决方法(2). 寻找数据库性能调整的机会比较每天对数据库性能的监控报告,确定是否有必要对数据库性能进行调整(3). 数据库性能调整如有必要,进行性能调整(4). 提出下一步空间管理计划根据每周的监控,提出空间管理的改进方法============================================================================|| ★★★Oracle DBA 日常管理★★★||============================================================================目的:这篇文档有很详细的资料记录着对一个甚至更多的ORACLE 数据库每天的,每月的,每年的运行的状态的结果及检查的结果,在文档的附录中你将会看到所有检查,修改的SQL和PL/SQL 代码。
Oracle巡检内容

Oracle巡检内容1. Oracle进程检查Ps –ef |grep ora2. CRS进程检查$ps –df |grep d.bin应有:crsd.bin ocssd.bin evmd.bincrsctl check crscrs_stat –tcrs_stat –lsasm进程检查:ps –ef|grep asmORACLE_SID=+ASM1select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;select * from v$asm_disk;检查数据库状态:srvctl status database –d dbname3. Oracle数据库实例状态检查SELECT inst_id, instance_name, host_name, VERSION, TO_CHAR(startup_time, 'yyyy-mm-dd hh24:mi:ss') startup_time, status, archiver,database_status FROM gv$instance;4. Oracle数据库打开状态检查SELECT inst_id, dbid, NAME, TO_CHAR (created, 'yyyy-mm-dd hh24:mi:ss') created, log_mode, TO_CHAR (version_time, 'yyyy-mm-dd hh24:mi:ss') version_time,open_modeFROM gv$database;5. 数据库表空间使用情况检查;5.1 表空间的空间使用情况SELECT df.tablespace_name, COUNT (*) datafile_count,ROUND (SUM (df.BYTES) / 1048576) size_mb,ROUND (SUM (free.BYTES) / 1048576, 2) free_mb,ROUND (SUM (df.BYTES) / 1048576 - SUM (free.BYTES) / 1048576, 2 ) used_mb,ROUND (MAX (free.maxbytes) / 1048576, 2) maxfree,100 - ROUND (100.0 * SUM (free.BYTES) / SUM (df.BYTES), 2) pct_used, ROUND (100.0 * SUM (free.BYTES) / SUM (df.BYTES), 2) pct_freeFROM dba_data_files df,(SELECT tablespace_name, file_id, SUM (BYTES) BYTES, MAX (BYTES) maxbytes FROM dba_free_space GROUP BY tablespace_name, file_id) free WHERE df.tablespace_name = free.tablespace_name(+) AND df.file_id =free.file_id(+)GROUP BY df.tablespace_name ORDER BY 8;5.2 表空间可用性检查select tablespace_name,status from dba_tablespaces;5.3 临时表空间使用情况和性能检查SELECT tablespace_name, extent_management, block_size, initial_extent,next_extent, min_extents, max_extents, pct_increase FROM dba_tablespaces WHERE CONTENTS = 'TEMPORARY';SELECT username, default_tablespace, temporary_tablespace FROM dba_users;期望结果:根据现场实际情况,应用用户的缺省表空间不能为system,临时表空间必须为temp。
oracle日常巡检内容

oracle日常巡检内容Oracle日常巡检内容1. 数据库配置检查•确认数据库参数设置是否合理•检查数据库和实例的名称及归属•检查数据库初始化参数是否按照最佳实践进行了配置2. 存储检查•检查表空间的使用情况,确保没有存储空间不足的情况出现•检查数据库文件的大小和增长情况,是否需要进行调整•检查redo日志文件的大小和数量,是否满足数据库的需求3. 逻辑结构检查•检查表、索引及其关联的约束是否正常•检查视图、存储过程、函数和触发器的状态和有效性•检查数据库对象的权限和所有权是否正确4. 数据完整性检查•检查数据表的行完整性,是否存在脏数据或冗余数据•检查约束的有效性和唯一性,是否存在违反约束的数据5. 性能检查•检查数据库的运行性能,包括CPU利用率、内存使用和磁盘I/O 等指标•检查SQL的执行计划,优化可能存在的性能瓶颈•检查数据库连接数和会话数,是否超过系统的承载能力6. 安全性检查•检查用户权限,确保每个用户的权限不超过其所需•检查密码策略和账号锁定设置,防范未授权访问和暴力破解•检查数据库日志和审计功能的开启情况,以跟踪和监控潜在的安全风险7. 备份和恢复检查•检查数据库的备份策略是否合理,并进行备份的可行性验证•检查恢复策略和操作步骤,确认数据库故障时的可靠性和可恢复性•检查归档日志的生成和转储情况,确保数据库的连续性和完整性8. 资源利用检查•检查数据库的资源利用情况,包括SGA和PGA的大小及利用率•检查数据文件、临时文件和日志文件的大小和利用率•检查并发和批处理作业,以保障系统资源的合理分配与利用以上是Oracle日常巡检的一些常见内容,通过对数据库配置、存储、逻辑结构、数据完整性、性能、安全性、备份恢复和资源利用等方面的检查,可以确保数据库的稳定性、安全性和可靠性。
巡检内容的具体细节可以根据实际需求进行适当调整和补充。
9. 日志监控•检查数据库日志文件的大小和增长情况,是否超过了预设阈值•检查日志文件的生成和转储是否正常,确保日志的连续性和完整性•监控错误日志和警告日志,及时发现并解决潜在的问题10. 定期维护•执行定期维护任务,例如统计表和索引的信息,更新数据库统计信息•定期收集和分析数据库性能指标,并作出相应的调整和优化•检查数据库软件及补丁的更新情况,确保数据库系统的安全和稳定11. 连接和会话管理•检查数据库连接数和会话数的变化趋势,确保系统的可用性和稳定性•监控长时间运行的会话和阻塞会话,及时解决可能的问题•检查连接和会话的权限和资源限制,防止滥用和资源浪费12. 监控和告警•设置数据库的监控和告警机制,及时发现和解决潜在的问题•监控数据库的系统资源利用率,预测和避免系统性能下降•监控数据库对象的变化和异常操作,保障数据的安全性和完整性13. 灾备和容灾•检查灾备和容灾系统的配置和状态,确保备份和恢复的可靠性•定期测试灾备和容灾方案的可行性,并进行必要的调整和优化•监控主备数据库之间的数据同步情况,保证数据的一致性和可用性14. 文档和记录•维护数据库巡检的文档和记录,包括巡检日期、巡检内容和发现的问题•归档和备份巡检记录,以便日后的审查和比对•根据巡检结果制定和执行相应的改进措施,持续优化数据库的运行和管理巡检内容的详细执行方法和频率将根据数据库的特定需求和环境进行调整和规划。
Oracle巡检手册

如果有记录返回,则说明存在无效对象。若这些对象与应用相关,那么需要重新编译生成这个对象。
3.6检查回滚段情况
3.6.1检查回滚段状态
输出结果中所有回滚段的“STATUS”该为“ONLINE”。
3.6.2检查是否有回滚段争用
发生回滚段争用时,需要审视争用情况,即哪些用户正在使用回滚段资源
检查监听进程是否存在:
二、检查系统和Oracle日志文件
检查相关的日志文件,包含:检查操作系统的日志文件,检查Oracle日志文件,检查Oracle核心转储目录,检查root用户和oracle用户的email,检查数据库的字符集,总共五个部分。
2.1检查操作系统日志文件
查看是否有与Oracle用户相关的出错信息。
3.3检查Oracle表空间情况
输出结果中STATUS应该都为ONLINE。
3.4检查Oracle所有数据文件情况
输出结果中“STATUS”应该都为“ONLINE”。
或者:
输出结果中“STATUS”应该都为“AVAILABLE”。
3.5检查对象情况
3.5.1检查对象类别和大小
合理分配资源,将冗余以及临时表定期进行清理,释放资源空间。
表空间不够
增加数据文件到相应的表空间
出现ORA-600
根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁
Listener日志:$ORACLE_HOME/network/log/sqlnet.log
2.3检查Oracle核心转储目录
如果上面命令的结果每天都在增长,则说明Oracle进程经常发生核心转储。这说明某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。
oracle健康检查(巡检)手册

性能检查
数据库性能
检查数据库的整体性能,包括响应时间、吞吐量 和资源利用率等。
查询性能
检查特定查询的性能,包括执行计划、索引和查 询优化等方面。
锁和争用
检查数据库中的锁和争用情况,以发现潜在的性 能瓶颈和问题。
03 Oracle数据库巡检方法
手动巡检方法
数据库日志检查
检查Oracle数据库的日志文件,包括警告日志、跟踪文件等,以发现 潜在的问题和错误。
远程巡检方法
远程监控
01
通过远程监控工具,实时监控Oracle数据库的运行状态和性能
指标。
远程诊断
02
通过远程诊断工具,远程连接到数据库服务器,对数据库进行
故障排除和诊断。
远程备份与恢复
03
通过远程备份与恢复工具,远程备份和恢复Oracle数据库的数
据和日志文件。
04 Oracle数据库巡检结果分 析
Oracle Enterprise Manager (OEM): OEM是一个集成的平台,用于自动监控、 诊断和优化Oracle数据库的性能。
Automatic Database Diagnostic Monitor (ADDM):ADDM是一个 自动化的性能诊断工具,可以自动 发现和解决性能问题。
在此添加您的文本16字
内存优化
在此添加您的文本16字
调整内存参数:根据数据库的实际需求,合理配置内存参 数,如SGA和PGA的大小。
在此添加您的文本16字
内存泄漏检测:定期检查内存使用情况,发现内存泄漏并 及时处理。
软件优化建议
调整初始化参数
根据数据库的性能需求,调整初始化参数,如打开表的数量、共 享池的大小等。
巡检结果数据收集
数据库巡检

1 日常巡检1.1 数据库巡检为了保证oracle数据库稳定,高效的运行,每个季度初需要对oracle数据库进行健康检查。
以确定数据库是否存在故障及性能问题。
对于异常状况,上报,进一步诊断、分析,及时解决。
巡检工作包括以下细则:●ALERT文件(alertSID.log)是否出现错误信息●top10等待事件●数据库大小●表空间使用情况●内存配置●三个Top10 SQL●内存命中率●归档方式及备份情况1.1.1 巡检脚本1.1.1.1 AlertSID.log文件位置:1.1.1.2 归档方式及备份情况(1)查看是否为归档方式:(2)说明该数据库备份情况,是否有备份策略。
1.1.1.3 top10等待事件:◆不同的版本,事件的多少不同✧Oracle9iOracle10g1.1.1.4 数据库大小:1.1.1.5 表空间使用情况:1.1.2 Top10segment◆查找系统数据量最大的10个段1.1.2.1 内存配置✧oracle9i:✧Oracle10g:1.1.2.2 三个Top10 SQL1.1.2.3 命中率1.1.2.4 死锁死锁查询:SELECT /*+ rule */ername,decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL, o.owner,o.object_name,o.object_type,s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuserFROM v$session s, v$lock l, dba_objects oWHERE l.sid = s.sidAND l.id1 = o.object_id(+)AND ername is NOT NULL解锁:杀死该session:alter system kill session 'sid,serial#'。
oracle数据库巡检内容

精品.资料 oracle 数据库巡检内容1.检查数据库基本状况在本节中主要对数据库的基本状况进行检查,其中包含:检查Oracle 实例状态,检查Oracle 服务进程,检查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 2009-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”表示数据库运行在非归档模式下。
在我们的系统中数据库必须运行在归档方式下。
$ps -ef|grep ora_|grep -v grep&&ps -ef|grep ora_|grep -v grep|wc –loracle 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_ CKD B ”. Oracle 进行恢复的进程,输出显示为:“ora_reco_ CKDB”/home/oracle>lsnrctl statusLSNRCTL for Linux: Version 10.2.0.2.0 - Production on 23-JUL-2009 14:11:53Copyright (c) 1991, 2005, Oracle. All rights reserved.Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 10.2.0.2.0 - ProductionStart Date 07-MAY-2009 09:35:52Uptime 77 days 4 hr. 36 min. 0 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /data/oracle/product/10.2.0/network/admin/listener.oraListener Log File /data/oracle/product/10.2.0/network/log/listener.logListening 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数据库巡检

序号检查内容正常值(参考) 影响因素1 --高速缓存的命中率select round((1 -(physical.value- direct.value- lobs.value) /logical.value) * 100,2) || '%' "高速缓存的命中率"from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical where = 'physical reads'and = 'physical reads direct'and = 'physical reads direct (lob)'and = 'session logical reads';90%-100%(可能略低于90%在数据库繁忙运行期间)1. Buffer 命中率受OracleSGA中的data blockbuffers参数的设置影响2. 跟Oracle buffer Pool的使用方法有关3. 把经常使用的小表cache在内存中4. 调优SQL语句,以养活少访问的数据量db_cache_size?2 --库缓存的命中率select round(sum(pins -reloads) / sum(pins) * 100, 2) || '%' "库缓存的命中率"from v$librarycache;95%-100%1. Library命中率受OracleSGA中的shared pool参数设置影响2. 跟应用软件的开发有密切的关系,特别是共享SQL的使用3 --闩命中率select round((1 -sum(misses +immediate_misses) / sum(gets + immediate_gets)) * 100,2) || '%' "闩命中率"from v$latch;99%-100%1. 应用程序SQL是否使用绑定变量2. Shared_pool_size参数的设置4 --内存排序率select round((1- disk.value/(disk.value+ memory.value)) *100, 2) || '%' "内存排序率"from v$sysstat disk, v$sysstat memorywhere = 'sorts (disk)'and = 'sorts 99%-100%1. 数据库参数sort_area_size或pga_aggregate_target的大小2. 应用程序的SQL语句的写法(memory)';5 --缓冲区未等待率select round((1- busy.value/tol.value) * 100, 2) || '%' "缓冲区未等待率"from(select sum(count) valuefrom v$waitstatwhere class in('data block', 'segment header', 'undo header', 'undo block')) busy, (select value from v$sysstat where name= 'session logical reads') tol;99%-100%1. db_block_buffers或db_cache_size等参数2. 增加表的Freelist参数3. 使用AutomaticSegment StorgeManagement(ASSM)来创建表空间4. 优化程序使用的SQL语句6 --redo缓冲区未等待率select round((1 - waits.value/ redos.value) * 100, 2) || '%'"redo缓冲区未等待率"from v$sysstat waits, v$sysstat redoswhere = 'redo log space requests'and = 'redo entries';99%-100%1. Log_buffer_size参数设置过小2. 归档的速度太慢3. 联机日志文件太小4. 联机日志文件放在缓慢的磁盘设备上7 --SQL语句执行和分析的比例select round((1- hard.value/total.value) * 100, 2) || '%'"SQL语句执行和分析的比例"from v$sysstat hard, v$sysstat totalwhere = 'parse count (hard)'and = 'parse count (total)';越接近100%越好1. Share_pool_size参数的大小2. 最重要的影响因素是应用程是否使用了绑定变量8 --析的CPU的时间和分析完成CPU时间对比select round((1 - cpu.value /total.value) * 100, 2) || '%'"cpu分析和完成比"from v$sysstat cpu, v$sysstat totalwhere = 'parse time cpu'越接近100%越好1. 如果这个比例很低,说明分析过程中CPU等待了其它的资源and = 'parse time elapsed';9 --非分析的过程中CPU对比select round((1 - parse.value/ total.value) * 100, 2) || '%'"非分析的过程中CPU对比"from v$sysstat parse, v$sysstat totalwhere = 'parse time cpu'and = 'CPU used by this session';越接近100%越好1. 如果这个比例很低,说明CPU用在分析SQL语句上面消耗了很多CPU时间,可能是没有用绑定变量10 --等待rollback segment的header比率select name,waits,gets,round(waits / gets * 100, 2) || '%'"等待rollbacksegment的header比"from v$rollstat a, v$rollname bwhere n = n;rollback segment等待率比率越小越好1. 回滚段竟争情况受回滚段size的设置影响2. 跟应用软件的有关,特别是long runnig timetransaction的使用11 --Tablespace的I/O比例select df.tablespace_name,sum(f.phyrds),sum(f.phyblkrd),sum(f.phywrts),sum(f.phyblkwrt)from v$filestat f, dba_data_files dfwhere f.file# = df.file_id group by df.tablespace_name order by df.tablespace_name;Tablespace I/O越小越好1. Tablespace的I/O情况受db_block_size参数的设置影响2. 跟数据文件的磁盘分布有密切关系12 --Datafile 的I/O比例select ,sum(f.phyrds),sum(f.phyblkrd),sum(f.phywrts),sum(f.phyblkwrt)from v$filestat f, v$datafile dfwhere f.file# = df.file# group by Datafile I/O越小越好1. Datafile的I/O情况受db_block_size参数的设置影响2. 跟数据文件的磁盘分布有密切关系order by ;13 --重做日志缓存区命中率select name,gets,misses,immediate_gets,immediate_misses,100- round(decode(gets, 0, 0,misses / gets * 100), 2) || '%'ratio1,100 -round(decode(immediate_gets + immediate_misses,0,0,immediate_misses / (immediate_gets + immediate_misses) * 100),2) || '%' ratio2from v$latchwhere name in('redo allocation', 'redo copy');重做日志缓存区的命中率越大越好,应大于90%1. 受log_buffer_size设置影响2. 跟应用软件的有关,特别是共享SQL的使用14 --碎片程度select tablespace_name,round(sqrt(max(blocks) /sum(blocks)) *(100/ sqrt(sqrt(count(blocks)))),2) || '%' FSFIfrom dba_free_spacegroup by tablespace_name order by tablespace_name;FSFI越大越好,应大于30%1. 碎片情况受db_block_size,segment_size的设置影响。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
o r a c l e数据库巡检内容1.检查基本状况在本节中主要对数据库的基本状况进行检查,其中包含:检查实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分。
SQL> select instance_name,host_name,startup_time,status,database_status from v$instance;INSTANCE_NAMEHOST_NAMESTARTUP_TIMESTATUSDATABASE_STATUS----------------------------------------------------------------------------- ----CKDBAS142009-5-7 9:3OPENACTIVE其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。
SQL> select name,log_mode,open_mode from v$database;NAMELOG_MODEOPEN_MODE--------------------------------------CKDBARCHIVELOGREAD WRITE其中“LOG_MODE”表示Oracle当前的归档方式。
“ARCHIVELOG”表示数据库运行在归档模式下,“NOARCHIVELOG”表示数据库运行在非归档模式下。
在我们的系统中数据库必须运行在归档方式下。
$ps -ef|grep ora_|grep -v grep&&ps -ef|grep ora_|grep -v grep|wc –loracle296010 May07 00:01:02 ora_pmon_CKDBoracle296210 May07 00:00:22 ora_psp0_CKDBoracle296410 May07 00:00:00 ora_mman_CKDBoracle296610 May07 00:03:20 ora_dbw0_CKDBoracle296810 May07 00:04:29 ora_lgwr_CKDB oracle297010 May07 00:10:31 ora_ckpt_CKDB oracle297210 May07 00:03:45 ora_smon_CKDB oracle297410 May07 00:00:00 ora_reco_CKDB oracle297610 May07 00:01:24 ora_cjq0_CKDB oracle297810 May07 00:06:17 ora_mmon_CKDB oracle298010 May07 00:07:26 ora_mmnl_CKDB oracle298210 May07 00:00:00 ora_d000_CKDB oracle298410 May07 00:00:00 ora_s000_CKDB oracle299410 May07 00:00:28 ora_arc0_CKDB oracle299610 May07 00:00:29 ora_arc1_CKDB oracle300010 May07 00:00:00 ora_qmnc_CKDB oracle362510 May07 00:01:40 ora_q000_CKDBoracle3159410 Jul20 00:00:00 ora_q003_CKDBoracle2380210 05:09 00:00:33 ora_j000_CKDB19在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:. Oracle写数据文件的进程,输出显示为:“ora_dbw0_CKDB”. Oracle写日志文件的进程,输出显示为:“ora_lgwr_ CKDB”. Oracle监听实例状态的进程,输出显示为:“ora_smon_ CKDB”. Oracle监听客户端连接进程状态的进程,输出显示为:“ora_pmon_ CKDB”. Oracle进行归档的进程,输出显示为:“ora_arc0_ CKDB”. Oracle进行检查点的进程,输出显示为:“ora_ckpt_ CKD B”. Oracle进行的进程,输出显示为:“ora_reco_ CKDB”/home/oracle>lsnrctl statusCopyright (c) 1991,, Oracle.All rights reserved.Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER------------------------AliasLISTENERStart Date07-MAY-2009 09:35:52Uptime77 days 4 hr. 36 min. 0 secTrace LeveloffSecurityON: Local OS AuthenticationSNMPOFFListener ParameterListening 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 greporacle295410 May072.检查系统和oracle日志文件在本节主要检查相关的日志文件,包含:检查操作系统的日志文件,检查Oracle日志文件,检查Oracle核心转储目录,检查Root用户和Oracle用户的email,总共四个部分。
# cat /var/log/messages |grep failed查看是否有与Oracle用户相关的出错信息。
[oracle@AS14 ~]$ cat /data/oracle/admin/CKDB/bdump/ |grep ora-[oracle@AS14 ~]$ cat /data/oracle/admin/CKDB/bdump/ |grep err[oracle@AS14 ~]$ cat /data/oracle/admin/CKDB/bdump/ |grep failListener日志:$ORACLE_HOME/network/log$ls $ORACLE_BASE/admin/CKDB/cdump/*.trc|wc -l$ls $ORACLE_BASE/admin/CKDB/udump/*.trc|wc –l如果上面命令的结果每天都在增长,则说明Oracle进程经常发生核心转储。
这说明某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。
频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。
#tail –n 200 /var/mail/root#tail –n 200 /var/mail/oracle查看有无与Oracle用户相关的出错信息。
3.检查Oracle对象状态在本节主要检查相关Oracle对象的状态,包含:检查Oracle控制文件状态,检查Oracle在线日志状态,检查Oracle表空间的状态,检查Oracle所有数据文件状态,检查Oracle所有表、索引、存储过程、触发器、包等对象的状态,检查Oracle所有回滚段的状态,总共六个部分。
SQL> select status,name from v$controlfile;STATUSNAME------- --------------------------------------------------------------------------------/data/oradata/CKDB//data/oradata/CKDB//data/oradata/CKDB/输出结果应该有3条以上(包含3条)的记录,“STATUS”应该为空。
状态为空表示控制文件状态正常。
SQL> select group#,status,type,member from v$logfile;GROUP# STATUSTYPEMEMBER---------- ------- ------- -----------3ONLINE/data/oradata/CKDB/2ONLINE/data/oradata/CKDB/1ONLINE/data/oradata/CKDB/4ONLINE/data/oradata/CKDB/5ONLINE/data/oradata/CKDB/6ONLINE/data/oradata/CKDB/6 rows selected输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。
注:“STATUS”显示为空表示正常。
SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAMESTATUS------------------------------ --------- SYSTEMONLINEUNDOTBS1ONLINE SYSAUXONLINE TEMPONLINEUSERSONLINESJ1ONLINEADM_INDEXONLINEHOME_DATAONLINEHOME_INDEXONLINEPHOTO_DATAONLINEPHOTO_INDEXONLINE 。