Oracle数据库日常检查文档_第1页
Oracle数据库日常检查文档_第2页
Oracle数据库日常检查文档_第3页
Oracle数据库日常检查文档_第4页
Oracle数据库日常检查文档_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库日常检查文档1. 检查表空间使用情况:1.1 检查是否开启自扩展功能:select tablespace_name,file_name,file_id,autoextensible,round(increment_by*8191)/(1024*1024),2)|'M' as 自扩展大小M from dba_data_files; 目的:检查表空间是否开启自扩展功能。若检查自扩展特别小,请用下面的方法把自扩展根据数据量增长情况调大。alter database datafile '新增加数据文件路径' autoextend   

2、 on next *M maxsize unlimited;-把*替换为你需要的自扩展大小1.2 检查表空间的使用情况:select a.tablespace_name,a.totals 总大小M,b.frees 空闲大小M,round(a.totals-b.frees)/a.totals,4)*100|'%' 使用率from (select sum(bytes)/(1024*1024) as totals,tablespace_namefrom dba_data_filesgroup by tablespace_name) a,(select sum(bytes)/(1024

3、*1024) as frees,tablespace_namefrom dba_free_spacegroup by tablespace_name) bwhere a.tablespace_name=b.tablespace_name ;目的:当表空间没有开启自扩展功能时,表空间的使用率大于等于85%时,需要向表空间增加数据文件。开启自扩展功能的表空间,检查常用的表空间自扩展的大小不小于100M。注:检查ulog用户对应的表空间:select default_tablespacefrom dba_userswhere username='ULOG' Ulog用户下的tlog表

4、主要是记录日志的,因为大部分的报表涉及记录日志。所以,ulog用户对应的表空间不管是开启还是未开启自扩展功能,当ulog对应的表空间的使用率大于等于85%时,就对性能有影响,考虑truncate释放空间或是扩空间。解决办法:手工降低使用率的方法:Alter database datafile 数据文件的路径 resize *M;另一种情况:当前的文件是开启自扩展的,但是要扩展的数据文件已经到达限制值32G了,此时的解决办法:alter tablespace 表空间名 add datafile '新增加数据文件路径' size 5120M;-向表空间中增加数据文件alter da

5、tabase datafile '新增加数据文件路径' autoextend    on next 100M maxsize unlimited;-开启自动扩展alter database datafile '达到最大值的数据文件路径' AUTOEXTEND off;-关闭之前文件的自扩展2. 定期检查磁盘的使用情况:2.1 Windows下检查执行下面sql,获得数据文件的路径:select file_name from dba_data_files;Windows下直接检查数据文件所在的盘的总大小和可用空间,当使用率为85%&#

6、160;时,清除数据文件所在的盘上无用的数据,或考虑增加硬件。2.2 Linux或是unix下:Linux或是unix下检查oracle的安装所用的盘,检查变量ORACLE_BASE所在目录的磁盘的使用情况,当使用率大于或等于90%时,需要清除无用的资料或是考虑增加硬件。例如,linux下用df命令 :rootrac1 /# df文件系统 1K-块 已用 可用 已用% 挂载点/dev/sda1 10115104 8671272 921724 91% /dev/sda2 15398476 5604628 8999036 39% /u01/oracletmpfs 871640 0 871640 0

7、% /dev/shm3. 常规检查:3.1 检查是否有无效的对象:select owner as 用户,object_name as 对象名,object_type as 对象类型 from dba_objects where status='INVAID'目的:若查询有结果,对无效对象需要重新编译。 Alter object_type owner.object_name compile;3.2 检查不可用的主键:select owner,constraint_name,table_namefrom dba_constraints where status!='ENAB

8、LED' and constraint_type='P'目的:若查询有数据,执行下面语句的执行结果。select 'alter table '|owner|'.'|table_name|' enable constraints '|constraint_name|'' from dba_constraints where status!='ENABLED' and constraint_type='P'3.3 检查不可用的触发器:select owner,trigger_na

9、mefrom dba_triggers where status!='ENABLED'目的:若查询有数据,执行下面语句的执行结果。select 'alter trigger '|owner|'.'|trigger_name|' enable;'from dba_triggers where status!='ENABLED'3.4 检查session和process:对照当前使用数和参数设置值:Select count(*) from v$session ;Select count(*) from v$proces

10、s;数据库设置值:select name,value from v$parameter where name in('sessions','processes');注:以 v$开头的表需要是业务高峰时的数据对分析才有作用。注:现场工程在使用pl/sql developer时,因多个sql窗口会增加sessions和process数,尽量在一个sql窗口操作。3.5 检查job:检查参数:当前数据库的并发可执行的job数量:select name,valuefrom v$parameterwhere name='job_queue_processes

11、9;查询当前数据中所有的job:select * from dba_jobs;涉及检查项:LOG_USER,提交任务的用户 ;PRIV_USER ,赋予任务权限的用户 ;SCHEMA_USER ,对任务作语法分析的用户模式;THIS_DATE ,表示正在运行任务的开始时间;LAST_DATE:最后一次成功运行完此job的时间;NEXT_DATE:下一次运行job的开始时间; INTERVAL:用于计算下一运行时间的表达式;What:执行任务的PL/SQL块。结果判断:1、 若有创建在sys或是system用户下的业务job需要删除,重新创建在业务用户下。2、 如果

12、Next_date是晚上21点执行的job,在第二天上午9点查询dba_jobs表时,this_date列不为空表示此job仍在执行。那么就需要优化what列显示的存储过程了。3、 当FAILURE<>0时,job不能执行成功。检查并发可执行的job进程数是否够用,根据next_date判断下次需要并发执行的job数与参数job_queue_processes的设置数比较?若不够,修改方法:Alter system set job_queue_processes=11 scope=both;3.6 检查数据文件的状态:select * from v$datafile where s

13、tatus not in('SYSTEM','ONLINE');目的:若查询无结果,表示数据文件正常。3.7 检查数据库的模式:Select name,Created, Log_Mode From V$Database;若log_mode为archive,当value不为空时,检查对应目录下的空间使用情况:select value from v$parameter where name= 'log_archive_dest_1'若归档日志存在use_db_recovery_file_dest下,检查下面视图归档日志的使用情况:select per

14、cent_space_usedfrom v$flash_recovery_area_usage where file_type='ARCHIVELOG'当空间使用百分比(percent_space_used)为85%时,需要释放空间。若使用的是asm 自动存储管理,检查空闲大小是否够用:select group_number,name,total_MB as 总大小,free_MB as 空闲大小from v$asm_diskgroup;3.8 检查锁的情况:检查是否发生阻塞:select /*+ ordered*/ sql_text, spid, p.pid, s.

15、sid, s.username, gram, process from v$sqlarea q, v$session s, v$process p where q.address = s.sql_address and q.hash_value = s.sql_hash_value and s.paddr = p.addr and exists (select sid from v$lock where block=1 and sid=s.sid);目的:若有结果,发回sql的执行结果,开发人员检查sql涉及的程序。 导出结果后杀掉session。杀session步骤:Alter s

16、ystem kill session SID,SERIAL#;有时候杀掉session后,session对应的进程好长时间不释放,占用资源,需要从操作系统级杀掉session: select spid, osuser, gram from v$session s,v$process pwhere s.paddr=p.addr and s.sid=&sid;1)在unix上,用root身份执行命令: #kill -9 123(上面语句查询出的spid)2)在windows用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakill sid

17、thread 例如:orakill cangzhoucg 123检查是否有锁等待:select /*+ ordered*/ sql_text, spid, p.pid, s.sid, s.username, gram, process from v$sqlarea q, v$session s, v$process p where q.address = s.sql_address and q.hash_value = s.sql_hash_value and s.paddr = p.addr and exists (select sid from v$lock where requ

18、est > 0 and block<>1 and sid=s.sid);检查目的:检查哪些语句一直在等待资源释放,正常的锁等待时间不会持续很长,持续时间较长的就尽快导出结果以便处理。4. 检查数据库的alert日志执行下面sql获得alert日志的路径:select a.value|' 下的alert_'|b.instance_name|'.log' from v$parameter a,gv$instance bwhere ='background_dump_dest'注:若数据库为集群环境,查出的结果是二条,需要分别取二台数据库服务器所查目录下的alert日志。目的:检查最近日期的alert日志是否有以ora-开头的错误或异常信息。5. 检查tlog的错误日志select * from ulog.tlog where llevel=30 and ldate>=sysdate-1 order by

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论