Oracle数据库巡检SQL
- 格式:docx
- 大小:14.34 KB
- 文档页数:9
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 数据库巡检内容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 巡检脚本--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的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用户的对象。
序号检查内容正常值(参考) 影响因素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数据库常规巡检报告单(例⼦)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 检查。
Oracle 数据库日常巡检指令Oracle数据库的日常巡检内容包括:Oracle数据库基本状况检查;Oracle相关资源的使用情况检查;Oracle数据库性能检查;数据库服务器cpu、mem和I/O 性能检查;数据库服务器安全性及其他事项检查等五大检查项目。
1、数据库基本状况检查(1)、数据库实例状况检查说明:其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。
(2)、数据库表空间状态检查说明:输出结果中STATUS应该都为“ONLINE”。
(3)、数据库数据文件检查1 select tablespace_name,status from dba_tablespaces;说明:输出结果中“STATUS”应该都为“AVAILABLE”。
(4)、数据库在线日志检查1 select group#,status,type,member from v$logfile;说明:输出结果应该有3条或3条以上记录,“STATUS”应该为非“INVALID”,非“DELETED”。
“STATUS”的值为空表示正常。
(5)、数据库回滚段检查1 select segment_name,status from dba_rollback_segs;说明:输出结果中所有回滚段的“STATUS”应该为“ONLINE”。
2、数据库相关资源使用情况检查(1)、检查Oracle初始化文件中相关参数值1 select resource_name,max_utilization,initial_allocation, limit_value from v$resource_limit;说明:若字段值【LIMIT_VALU】-【MAX_UTILIZATION】<=5,则表明与RESOURCE_NAME相关的Oracle初始化参数需要调整。
Oracle数据库系统巡检报告XXXXXXXX数据库系统巡检报告福华网络2017年2月15日目录1文档控制 (1)2巡检记录 (1)3巡检概述 (4)4巡检结果记录 (4)5检查项目分析与建议 (4)6数据库实例检查 (5)6.1获取实例基本信息 (5)6.1.1查看实例启动时间,运行状态 (5)6.1.2查看系统会话数 (5)6.2查看数据库文件状态 (6)6.2.1查看日志文件状态 (6)6.2.2查看表空间状态 (8)6.2.3查看表空间使用率 (9)6.2.4查看数据库文件状态 (11)6.3查看数据对象状态 (13)6.3.1查看异常用户对象 (13)6.3.2查看系统表空间的非系统对象 (14)6.3.3查找失效的索引 (15)6.3.4查找失效的约束 (16)6.3.5查找失效的触发器 (16)6.4使用AWR收集实例信息 (17)7RAC健康检查 (18)7.1RAC运行状态信息 (18)7.2ASM磁盘容量检查 (23)8DATAGUARD健康检查 (24)8.1主库确认没有日志缺口 (24)8.2确认主库可以进行角色切换,查询主库 (24)8.3查询备库是否可以切换为主库,查询备库: (24)1文档控制 修改记录2巡检记录3巡检概述2017年2月14日,福华网络对XXXXXXX现运行的维保合同相关Oracle 数据库系统进行了一次全面细致的巡检服务。
巡检范围包括数据库服务器操作系统和Oracle RAC数据库。
目前,数据库服务器和数据库运行稳定。
4巡检结果记录合同相关的数据库系统巡检结果记录如下表所示:5检查项目分析与建议系统当前运行状态良好。
6数据库实例检查6.1 获取实例基本信息6.1.1查看实例启动时间,运行状态启动时间为实例最近一次启动时间,该时间变化表明实例有重启动作,需要关注。
实例运行状态应为OPEN,数据库状态应为ACTIVE。
否则数据库运行状态异常。
SQL> select instance_name ,startup_time,status,database_st atus from gv$instance;INSTANCE_NAME STARTUP_T STATUS DATABASE_STATUS---------------- --------- ------------ ----------------- xtbg1 30-JUL-16 OPEN ACTIVExtbg3 30-JUL-16 OPEN ACTIVExtbg2 30-JUL-16 OPEN ACTIVE6.1.2查看系统会话数系统会话数应和基线参数基本一致,过高和过低以为着系统存在异常。
oracle 数据库巡检语句进行Oracle数据库巡检时,可以使用一系列SQL语句来检查数据库的健康状况、性能和安全性。
以下是一些常用的Oracle数据库巡检语句:1. 检查数据库实例的运行情况:SELECT instance_name, host_name, version,startup_time, status FROM v$instance;2. 检查数据库的空间使用情况:SELECT tablespace_name, sum(bytes)/1024/1024 AS "Total Size (MB)",。
sum(bytes blocks8192)/1024/1024 AS "Used Size (MB)",。
sum(blocks8192)/1024/1024 AS "Free Size (MB)"FROM dba_free_space.GROUP BY tablespace_name;3. 检查数据库的性能指标:SELECT FROM v$sysstat WHERE name LIKE 'parse count%';SELECT FROM v$sysstat WHERE name LIKE 'execute count%';SELECT FROM v$sysstat WHERE name LIKE 'user commits';4. 检查数据库的会话和进程信息:SELECT username, osuser, machine, program FROM v$session;SELECT spid, osuser, username, program FROMv$process;5. 检查数据库的表空间和数据文件信息:SELECT tablespace_name, file_name, bytes/1024/1024 AS "File Size (MB)",。
Oracle数据库巡检维护方案
一、巡检维护的目的
为了保障数据库正常运行,保证数据的安全性、完整性和可用性,需进行数据库巡检维护。
二、巡检维护的分类
数据库巡检维护包含的内容很多,如果每天都将这些项目进行一遍,在时间上是不允许的,可能还会影响到数据库使用效率,因此,通常会将这些巡检维护内容分门别类地按不同的时间频率进行。
数据库巡检维护按时间频率可分为日巡检、周巡检、月巡检、半年度巡检四类。
日巡检维护指每日按计划进行的巡检维护活动,以检查数据库运行状态、数据库备份状态和告警错误为主要内容,同时还必须检查使用数据库的应用软件是否因数据库运行原因产生使用错误或不畅。
周巡检维护指按一周为周期,在每周指定日按计划进行的巡检维护活动,它的工作内容是在日巡检维护工作内容的基础上添加数据库对象检查、安全性检查等内容组成。
月巡检维护指按一月为周期,在每月指定日按计划进行的巡检维护活动,它的工作内容是在周巡检维护工作内容的基础上添加系统参数配置检查、硬件与系统平台运行状态检查等内容组成。
半年度巡检维护指按半年为周期,在指定日按计划进行的巡检维护活动,它的工作内容是在月巡检维护工作内容的基础上添加数据库性能诊断检查组成。
如果能够提供模拟环境或生产环境在特定条件下允许停机,还应该进行备份有效性测试。
由于巡检维护工作任务的涵盖性,进行半年度巡检维护日可不执行所在月的月巡检维护、所在周的周巡检维护和日巡检维护,以此类推。
三、巡检维护工作内容和周期。
Oracle日常巡检内容1. 概述Oracle数据库是一款功能强大的关系型数据库管理系统,用于存储和管理大量的数据。
为了保证Oracle数据库的正常运行,必须进行日常巡检工作,及时发现并解决潜在的问题,确保数据库的稳定性和性能。
本文将介绍Oracle日常巡检的内容,包括数据库基本信息、存储空间、性能优化、安全性、备份与恢复等方面。
2. 数据库基本信息在进行日常巡检时,首先需要了解数据库的基本信息,以便更好地管理和维护数据库。
以下是需要关注的内容:•数据库名称、版本和补丁级别•数据库的物理和逻辑结构•数据库的字符集和语言设置•数据库的运行状态和连接数•数据库的启动参数和配置文件3. 存储空间数据库的存储空间是关键的资源,需要定期检查和管理。
以下是存储空间的巡检内容:•数据文件和表空间的大小和增长趋势•磁盘空间的使用情况和剩余容量•数据文件的布局和分布情况•表空间的使用率和碎片情况•确保数据文件和表空间的备份和恢复策略4. 性能优化数据库的性能是用户体验的重要因素,需要进行定期的性能优化工作。
以下是性能优化的巡检内容:•数据库的响应时间和吞吐量•SQL语句的执行计划和性能指标•索引的使用情况和效率•内存和缓冲区的配置和利用率•确保数据库的统计信息是最新的5. 安全性数据库的安全性是非常重要的,需要进行巡检和加固。
以下是安全性的巡检内容:•用户和角色的权限和访问控制•数据库的审计和日志记录设置•数据库的加密和身份验证策略•数据库的防火墙和网络安全设置•确保数据库的补丁和安全更新是最新的6. 备份与恢复数据库的备份和恢复是数据库管理的核心任务之一,需要定期进行巡检和测试。
以下是备份与恢复的巡检内容:•数据库备份的策略和计划•数据库备份的完整性和可用性•数据库恢复的速度和可靠性•确保备份文件的存储和保护措施•确保备份和恢复的文档和操作步骤是最新的7. 总结Oracle数据库的日常巡检是保证数据库稳定性和性能的重要工作。
-- |----------------------------------------------------------------------------|-- | 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;。