Oracle数据库巡检SQL

合集下载

oracle日常巡检内容

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健康检查(巡检)手册

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字
内存泄漏检测:定期检查内存使用情况,发现内存泄漏并 及时处理。
软件优化建议
调整初始化参数
根据数据库的性能需求,调整初始化参数,如打开表的数量、共 享池的大小等。
巡检结果数据收集

oracle数据库巡检内容

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数据库教程 —— sqlserver 巡检脚本

Oracle数据库教程 ——    sqlserver 巡检脚本

Oracle数据库教程—— sqlserver 巡检脚本--1.查看数据库版本信息select @@version--2.查看所有数据库名称及大小exec sp_helpdb--3.查看数据库所在机器的操作系统参数exec master..xp_msver--4.查看数据库启动的参数exec sp_configure--5.查看数据库启动时间select convert(varchar(30),login_time,120)from master..sysprocesses where spid=1--6.查看数据库服务器名select 'Server Name:'+ltrim(@@servername)--7.查看数据库实例名select 'Instance:'+ltrim(@@servicename)--8.数据库的磁盘空间呢使用信息exec sp_spaceused--9.日志文件大小及使用情况dbcc sqlperf(logspace)--10.表的磁盘空间使用信息exec sp_spaceused 'tablename'--11.获取磁盘读写情况select@@total_read [读取磁盘次数],@@total_write [写入磁盘次数],@@total_errors [磁盘写入错误数],getdate() [当前时间]--12.获取I/O工作情况select @@io_busy [自上次启动的I/O操作毫秒数],@@timeticks [每个时钟周期对应的微秒数],@@io_busy*@@timeticks [I/O操作毫秒数],getdate() [当前时间]--13.查看CPU活动及工作情况select@@cpu_busy [自上次启动CPU的工作时间毫秒数],@@timeticks [每个时钟周期对应的微秒数],@@cpu_busy*cast(@@timeticks as float)/1000 [CPU工作时间(秒)],@@idle*cast(@@timeticks as float)/1000 [CPU空闲时间(秒)],getdate() [当前时间]--14.检查锁与等待exec sp_lock--15.检测死锁和阻塞declare @spid int,@bl int,@intTransactionCountOnEntry int,@intRowcount int,@intCountProperties int,@intCounter intcreate table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)IF @@ERROR<>0 print @@ERRORinsert into #tmp_lock_who(spid,bl) select 0 ,blockedfrom (select * from sysprocesses where blocked>0 ) awhere not exists(select * from (select * from sysprocesseswhere blocked>0 ) bwhere a.blocked=spid)union select spid,blocked from sysprocesses where blocked>0IF @@ERROR<>0 print @@ERROR-- 找到临时表的记录数select @intCountProperties = Count(*),@intCounter = 1from #tmp_lock_whoIF @@ERROR<>0 print @@ERRORif @intCountProperties=0select '现在没有阻塞和死锁信息' as message-- 循环开始while @intCounter <= @intCountPropertiesbegin-- 取第一条记录select @spid = spid,@bl = blfrom #tmp_lock_who where Id = @intCounterbeginif @spid =0select '引起数据库死锁的是: '+ CAST(@bl AS V ARCHAR(10))+ '进程号,其执行的SQL语法如下'elseselect '进程号SPID:'+ CAST(@spid AS V ARCHAR(10))+ '被'+ '进程号SPID:'+ CAST(@bl AS V ARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下' DBCC INPUTBUFFER (@bl )end-- 循环指针下移set @intCounter = @intCounter + 1end/--16.用户和进程信息exec sp_whoexec sp_who2--17.活动用户和进程的信息exec sp_who 'active'--19.查看所有数据库用户登录信息exec sp_helplogins--20.查看所有数据库用户所属的角色信息exec sp_helpsrvrolemember--21.查看链接服务器exec sp_helplinkedsrvlogin--22.查看远端数据库用户登录信息exec sp_helpremotelogin--23.获取网络数据包统计信息select@@pack_received [输入数据包数量],@@pack_sent [输出数据包数量],@@packet_errors [错误包数量],getdate() [当前时间]--24.检查数据库中的所有对象的分配和机构完整性是否存在错误dbcc checkdb--25.查询文件组和文件selectdf.[name],df.physical_name,df.[size],df.growth,f.[name][filegroup],f.is_defaultfrom sys.database_files df join sys.filegroups fon df.data_space_id = f.data_space_id--26.查看数据库中所有表的条数select as tablename ,a.rowcnt as datacountfrom sysindexes a ,sysobjects bwhere a.id = b.idand a.indid < 2and objectproperty(b.id, 'IsMSShipped') = 0--27.得到最耗时的前10条T-SQL语句;with maco as(select top 10plan_handle,sum(total_worker_time) as total_worker_time ,sum(execution_count) as execution_count ,count(1) as sql_countfrom sys.dm_exec_query_stats group by plan_handleorder by sum(total_worker_time) desc)select t.text ,a.total_worker_time ,a.execution_count ,a.sql_countfrom maco across apply sys.dm_exec_sql_text(plan_handle) t--28. 查看SQL Server的实际内存占用select * from sysperfinfo where counter_name like '%Memory%'--29.显示所有数据库的日志空间信息dbcc sqlperf(logspace)--30.收缩数据库dbcc shrinkdatabase(databaseName)更多文章可见:公司官网:。

oracle巡检 手册

oracle巡检 手册

Oracle巡检手册第一部分数据库状态监控首先检查oracle的log,在sqlplus中:show parameter background_dump_dest;select * from v$diag_info;可以得到日志路径1:检查oracle 监听lsnrtcl statusPs –ef|grep ora2:检查oracle初始化参数Select * from v$parameter;3:检查oracle实例状态Select instance_name,version,status,database_status from v$instance;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:检查后台进程状态:select name,Description From v$BGPROCESS Where Paddr<>'00'5:查看系统全局区SGA信息select * from v$sga;6: 查看SGA各部分占用内存情况:select * from v$sgastat;select request_misses,request_failures from v$shared_pool_reserved;比较好的状态:REQUEST_MISSES REQUEST_FAILURES为0或者接近0REQUEST_MISSES REQUEST_FAILURES-------------- ----------------007:查看系统SCN号select (select dbms_flashback.get_system_change_number from dual)scn,current_scn,scn_to_timestamp(current_scn)from v$database;8:检查数据库状态:select name,log_mode,open_mode,platform_name from v$database;select inst_id,dbid,name,to_char(created,'yyyy-mm-dd hh24:mi:ss')created,log_mode,to_char(version_time,'yyyy-mm-ddhh24:mi:ss')version_time,open_mode from gv$database;第二部分:数据库空间监控检查表空间使用率select A.tablespace_name, (1 - (A.total) / B.total) * 100 used_percentfrom (select tablespace_name, sum(bytes) totalfrom dba_free_spacegroup by tablespace_name) A,(select tablespace_name, sum(bytes) totalfrom dba_data_filesgroup by tablespace_name) Bwhere A.tablespace_name = B.tablespace_name;检查system表空间内的内容select distinct (owner)from dba_tableswhere tablespace_name = 'SYSTEM'and owner != 'SYS'and owner != 'SYSTEM'unionselect distinct (owner)from dba_indexeswhere tablespace_name = 'SYSTEM'and owner != 'SYS'and owner != 'SYSTEM';输出:no rows selected分析:如果有记录返回,则表明system表空间内存在一些非system和sys用户的对象。

Oracle数据库巡检

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的设置影响。

Oracle数据库日常巡检及常见故障解决-20180620

Oracle数据库日常巡检及常见故障解决-20180620

, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'07',1,0)) H07
, SUM(DECODE(SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH24:MI:SS'),10,2),'08',1,0)) H08
志切换,将该日志文件组的状态改动为inactive
1.1、检查数据库基本状况
检查监听状态:lsnrctl status(start/stop)
1.1、检查数据库基本状况
检查无效对象
select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';
第三步:调用dbms_job的broken函数将要停止的job干掉 SQL> EXEC DBMS_JOB.BROKEN(18,TRUE); PL/SQL procedure successfully completed SQL>commit; 此时这个job还是运行的,可以通过dba_jobs_running查看
1.1、检查数据库基本状况
在线日志切换频率过高处理办法: 1、创建新的日志组 alter database add logfile group 4 ('目录/redo04.log') size
500M; 2、切换日志到新建的日志组 alter system switch logfile; 3、删除旧日志组 alter database drop logfile group 3; 注意:删除的日志文件组不能处于current状态,须要运行一次手动日

ORACLE数据库常规巡检报告单(例子)

ORACLE数据库常规巡检报告单(例子)

ORACLE数据库常规巡检报告单(例⼦)ORACLE数据库常规巡检报告单⽬录ORACLE数据库常规巡检报告单 (1)⼀、概述 (3)⼆、使⽤的相关软件简要说明 (3)三、主机及操作系统常规配置检查 (3)1、系统设置检查 (3)2、I/O 设备信息 (3)3、⽹络配置信息 (4)四、ORACLE 数据库常规检查 (5)1、ORACLE 常规检查 (5)2、基本参数配置 (5)3、ORACLE ⽤户配置⽂件 (6)五、数据库关键性能检查及分析 (6)1、数据库性能检查 (6)2、数据库响应时间分析 (6)六、备份恢复策略检查和维护 (7)1、RMAN 配置情况 (7)2、备份策略描述 (7)3、备份策略实施 (7)4、备份检查和每⽇备份脚本⽇志检查 (8)5、对当前策略的总结 (8)七、关键性SQL 语句定位及分析 (8)⼋、近期警告⽇志及相关分析 (8)1、orcl_ora_8727.trc (8)2、orcl_ora_8727.trc (9)九、⼩结 (9)⼀、概述按照维护计划和为了系统的稳定运⾏,需要定期对系统进⾏⼀次巡检,时间周期为每星期⼀次。

⽬的在于诊断当前环境是否存在安全隐患,系统运⾏是否存在明显的系统瓶颈,定位重要的SQL 语句并进⾏性能分析,分析当前备份策略,分析警告⽇志信息并提供解决⽅案。

⼆、使⽤的相关软件简要说明1.使⽤RDA 对整个系统进⾏检查,并且⽣成报告2.使⽤AWR 对数据库进⾏检查,并且⽣成报告。

3.使⽤RMAN 对数据库进⾏备份,并且使⽤RMAN 相关的功能进⾏备份检查。

相关详细后页提供三、主机及操作系统常规配置检查1、系统设置检查主机和版本号Linux localhost 2.6.9-34.ELsmp #1 SMP Fri Feb 24 16:56:28 EST 2006 x86_64主机名localhost.localdomain操作系统平台64-bit Red Hat Linux操作系统版本 2.6.92、I/O 设备信息3、⽹络配置信息四、ORACLE 数据库常规检查1、ORACLE 常规检查Database OverviewDB Name ORCLGlobal Name /doc/e298af7e4693daef5ef73dba.html Host Name localhost Instance Name orclInstance Start Time 18-Nov-2008 14:14:01Restricted Mode NOArchive Log ModeARCHIVELOG3、ORACLE ⽤户配置⽂件# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATHunset USERNAME#for oracleexport ORACLE_SID=orclexport ORACLE_BASE=/oracleexport ORACLE_HOME=/oracle/10gexport PATH=$ORACLE_HOME/bin:$PATHexport NLS_LANG=AMERICAN_AMERICA.ZHS16GBK五、数据库关键性能检查及分析1、数据库性能检查2、数据库响应时间分析响应时间是⾮常重要的数据库性能指标从以上信息可以看出,RMAN 备份占⽤的⼤量的时间,六、备份恢复策略检查和维护1、RMAN 配置情况RMAN configuration parameters are:CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;CONFIGURE BACKUP OPTIMIZATION ON;CONFIGURE DEFAULT DEVICE TYPE TO DISK;CONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'orclcongrol_%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET; CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE CHANNEL 1 DEVICE TYPE DISK MAXPIECESIZE 100 M MAXOPENFILES 8 RATE 40 M; CONFIGURE CHANNEL 2 DEVICE TYPE DISK MAXPIECESIZE 100 M MAXOPENFILES 8 RATE 40 M; CONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/10g/dbs/snapcf_orcl.f'; # default2、备份策略描述选⽤RMAN 多级备份策略,以每个星期作为⼀个周期星期1 数据库全备0 级星期2 增量备份 1 级星期3 增量备份 1 级星期4 累积增量备份1c 级星期5 数据库全备0 级星期6 增量备份 1 级星期天增量备份 1 级基于以上策略,任何时间点的数据恢复只需要做最多1 次0 级恢复和2 次1 级恢复.加上当⽇的归档⽇志可以实现快速的完全恢复3、备份策略实施Cat /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly00 4 * * 1 oracle /oracle/scripts/rman/backupweek1.cmd &00 4 * * 2 oracle /oracle/scripts/rman/backupweek2.cmd &00 4 * * 3 oracle /oracle/scripts/rman/backupweek3.cmd & 00 4 * * 4 oracle/oracle/scripts/rman/backupweek4.cmd &00 4 * * 5 oracle /oracle/scripts/rman/backupweek5.cmd &00 4 * * 6 oracle /oracle/scripts/rman/backupweek6.cmd &00 4 * * 7 oracle /oracle/scripts/rman/backupweek7.cmd &4、备份检查和每⽇备份脚本⽇志检查使⽤crosscheck backupset 检查。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-- |----------------------------------------------------------------------------|-- | FILE : Datebase_XunJian.sql |-- +----------------------------------------------------------------------------+promptprompt +-----------------------------------------------------------------------------------------+prompt | Database XunJian |prompt |-----------------------------------------------------------------------------------------+prompt | |prompt +-----------------------------------------------------------------------------------------+promptprompt Creating database report.prompt This script must be run as a user with SYSDBA privileges.prompt This process can take several minutes to complete.set termout offpromptset pagesize 50000set linesize 80define fileName=Database_XunJiandefine versionNumber=1.0COLUMN tdate NEW_VALUE _date NOPRINTSELECT TO_CHAR(SYSDATE,'MM/DD/YYYY') tdate FROM dual;COLUMN time NEW_VALUE _time NOPRINTSELECT TO_CHAR(SYSDATE,'HH24:MI:SS') time FROM dual;COLUMN date_time NEW_VALUE _date_time NOPRINTSELECT TO_CHAR(SYSDATE,'MM/DD/YYYY HH24:MI:SS') date_time FROM dual;COLUMN date_time_timezone NEW_VALUE _date_time_timezone NOPRINTSELECT TO_CHAR(systimestamp, 'Mon DD, YYYY (') || TRIM(TO_CHAR(systimestamp, 'Day')) || TO_CHAR(systimestamp, ') "at" HH:MI:SS AM') || TO_CHAR(systimestamp, ' "in Timezone" TZR') date_time_timezoneFROM dual;COLUMN spool_time NEW_VALUE _spool_time NOPRINTSELECT TO_CHAR(SYSDATE,'YYYYMMDD') spool_time FROM dual;COLUMN dbname NEW_VALUE _dbname NOPRINTSELECT name dbname FROM v$database;COLUMN dbid NEW_VALUE _dbid NOPRINTSELECT dbid dbid FROM v$database;COLUMN platform_id NEW_VALUE _platform_id NOPRINTSELECT platform_id platform_id FROM v$database;COLUMN platform_name NEW_VALUE _platform_name NOPRINTSELECT platform_name platform_name FROM v$database;COLUMN global_name NEW_VALUE _global_name NOPRINTSELECT global_name global_name FROM global_name;COLUMN blocksize NEW_VALUE _blocksize NOPRINTSELECT value blocksize FROM v$parameter WHERE name='db_block_size';COLUMN startup_time NEW_VALUE _startup_time NOPRINTSELECT TO_CHAR(startup_time, 'MM/DD/YYYY HH24:MI:SS') startup_time FROM v$instance;COLUMN host_name NEW_VALUE _host_name NOPRINTSELECT host_name host_name FROM v$instance;COLUMN instance_name NEW_VALUE _instance_name NOPRINTSELECT instance_name instance_name FROM v$instance;COLUMN instance_number NEW_VALUE _instance_number NOPRINTSELECT instance_number instance_number FROM v$instance;COLUMN thread_number NEW_VALUE _thread_number NOPRINTSELECT thread# thread_number FROM v$instance;COLUMN cluster_database NEW_VALUE _cluster_database NOPRINTSELECT value cluster_database FROM v$parameter WHERE name='cluster_database';COLUMN cluster_database_instances NEW_VALUE _cluster_database_instances NOPRINT SELECT value cluster_database_instances FROM v$parameter WHERE name='cluster_database_instances';COLUMN reportRunUser NEW_VALUE _reportRunUser NOPRINTSELECT user reportRunUser FROM dual;spool &FileName._&_instance_name._&_spool_time..txtpromptprompt -------------------------------------report_header-------------------promptprompt Report Name: &FileName._&_dbname._&_spool_time..txt prompt Snapshot Database Version:&versionNumberprompt Run Date / Time / Timezone:&_date_time_timezoneprompt Host Name:&_host_nameprompt Database Name:&_dbnameprompt Database ID:&_dbidprompt Global Database Name:&_global_nameprompt Platform Name / ID:&_platform_name / &_platform_idprompt Clustered Database?:&_cluster_databaseprompt Clustered Database Instances:&_cluster_database_instancesprompt Instance Name:&_instance_nameprompt Instance Number:&_instance_numberprompt Thread Number:&_thread_numberprompt Database Startup Time:&_startup_timeprompt Database Block Size:&_blocksizeprompt Report Run User:&_reportRunUserpromptpromptprompt -------------------Version--------------------------promptSelect * from v$version;promptprompt -------------------opatch----------------------promptcol comp_name form a30 ENTMAP offSelect comp_name,version from dba_registry;promptprompt -------------------psu----------------------promptcol comments format a50Select id,version,comments,action_time,action from dba_registry_history;prompt -------------------SGA----------------------promptcol name form a30 ENTMAP offcol value form 99999999999999999 ENTMAP offpromptshow sga;promptshow parameter sga;promptshow parameter pga;promptcol name form a30 ENTMAP offcol value form a30 ENTMAP offSelect name,value from v$parameter where name like '%ga%';promptprompt -------------------Controlfile---------------------promptcol name form a60 ENTMAP offSelect name from v$controlfile;prompt -------------------Logfile--------------------------promptcol status form a10 ENTMAP offselect GROUP#,THREAD#,SEQUENCE#,BYTES,MEMBERS,ARCHIVED,STATUS from v$log; promptselect group#,sequence#,to_char(first_time,'yyyy-mm-dd hh24:mi:ss') from v$log; promptcol member form a53 ENTMAP offpromptselect group#,status,member from v$logfile;promptprompt -------------------archive mode-------------------archive log list;promptprompt -------------------Tablespace user-------------------promptpromptCOLUMN TABLESPACE_NAME FORMAT A28;COLUMN SUM_M FORMAT A12;COLUMN USED_M FORMAT A12;COLUMN FREE_M FORMAT A12;COLUMN PTUSED FORMAT 99.99;SET PAGES 200 LINES 200;promptSELECT S.TABLESPACE_NAME,CEIL(SUM(S.BYTES/1024/1024))||'M' SUM_M,CEIL(SUM(EDSPACE/1024/1024))||'M'USED_M,CEIL(SUM(S.FREESPACE/1024/1024))||'M' FREE_M, round(SUM(EDSPACE)/SUM(S.BYTES)*100,2) PTUSEDFROM (SELECT B.FILE_ID,B.TABLESPACE_NAME,B.BYTES, (B.BYTES-SUM(NVL(A.BYTES,0))) USEDSPACE,SUM(NVL(A.BYTES,0)) FREESPACE,(SUM(NVL(A.BYTES,0))/(B.BYTES)) * 100 FREEPERCENTRATIO FROM SYS.DBA_FREE_SPACE A,SYS.DBA_DATA_FILES B WHERE A.FILE_ID(+)=B.FILE_ID GROUP BY B.FILE_ID,B.TABLESPACE_NAME,B.BYTES ORDER BY B.TABLESPACE_NAME) SGROUP BY S.TABLESPACE_NAME ORDER BY SUM(S.FREESPACE)/SUM(S.BYTES) asc;prompt -------------------TEMP Tablespace user-------------------promptSELECT d.tablespace_name "Name",TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999') "HWM (M)",TO_CHAR(NVL(t.hwm / a.bytes * 100, 0), '990.00') "HWM % " ,TO_CHAR(NVL(t.bytes/1024/1024, 0),'99999999.999') "Using (M)",TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Using %"FROM sys.dba_tablespaces d,(select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,(select tablespace_name, sum(bytes_cached) hwm, sum(bytes_used) bytes from v$temp_extent_pool group by tablespace_name) tWHERE d.tablespace_name = a.tablespace_name(+)AND d.tablespace_name = t.tablespace_name(+)AND d.extent_management like 'LOCAL'AND d.contents like 'TEMPORARY'/prompt -------------------Autoextensible------------------------promptCol file_name format a60 ENTMAP offpromptselect file_name,autoextensible from dba_data_files where autoextensible='YES';prompt -------------------Users---------------------------------promptcol default_tablespace form a25 ENTMAP offcol temporary_tablespace form a10 ENTMAP offcol username form a20 ENTMAP offcol account_status form a18 ENTMAP offpromptselect username,default_tablespace,temporary_tablespace,account_status from dba_users;promptprompt -------------------Jobs----------------------------------promptcol NEXT_SEC format a10 ENTMAP offcol job format 9999 ENTMAP offcol what format a50 ENTMAP offselect job, next_date,next_sec,failures,what from dba_jobs where failures !=0; promptprompt -------------------Invalid index-------------------------promptCol index_name form a20 ENTMAP offCol owner form a10 ENTMAP offCol table_name form a20 ENTMAP offCol tablespace_name form a20 ENTMAP offpromptselect index_name,owner,table_name,tablespace_namefrom dba_indexeswhere owner not in ('SYS','SYSTEM')and status != 'VALID';promptprompt -------------------Invalid object---------------------------------promptCOL OBJECT_NAME FORM A40 HEADING 'OBJECT_NAME' ENTMAP offselect object_name, object_type, owner,statusfrom dba_objectswhere status !='VALID'and owner not in ('SYS','SYSTEM')and object_type in('TRIGGER','VIEW','PROCEDURE','FUNCTION');spool off;promptprompt --------------------OS----------------------------promptprompt --------------------/etc/hosts----------------------------prompthost more /etc/hosts >> &FileName._&_dbname._&_spool_time..txtpromptpromptprompt ---------------------disk -----------------------prompthost df -k >> &FileName._&_dbname._&_spool_time..txthost bdf >> &FileName._&_dbname._&_spool_time..txtpromptpromptprompt ------------------------cpu ---------------------prompthost vmstat 2 10 >> &FileName._&_dbname._&_spool_time..txt promptpromptprompt -------------------------crs-----------------------prompthost crs_stat -t >> &FileName._&_dbname._&_spool_time..txtprompt ------------------------ora_ ---------------------prompthost ps -ef|grep ora_ >> &FileName._&_dbname._&_spool_time..txt promptpromptexit;。

相关文档
最新文档