Oracle数据库日常维护培训_第1页
Oracle数据库日常维护培训_第2页
Oracle数据库日常维护培训_第3页
Oracle数据库日常维护培训_第4页
Oracle数据库日常维护培训_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

Oracle数据库日常维护管理培训1.1.检查Oracle的进程1.2.检查Oracle监听进程1.3.检查Oracle实例状态1.4.检查Oraclealert日志1.5.检查Oracle核心转储目录第一章 检查数据库的基本状况1.1. 检查Oracle的进程执行如下:ps-ef|grepora_|grep-vgrep解释:在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:•Oracle写数据文件的进程,输出显示为:“ora_dbw0_ORCL”•Oracle写日志文件的进程,输出显示为:“ora_lgwr_ORCL”•Oracle系统监控的进程,输出显示为:“ora_smon_ORCL”•Oracle进程监控的进程,输出显示为:“ora_pmon_ORCL”•Oracle进行归档的进程,输出显示为:“ora_arc0_ORCL”•Oracle进行检查点的进程,输出显示为:“ora_ckpt_ORCL”•Oracle进行恢复的进程,输出显示为:“ora_reco_ORCL”1.2. 检查Oracle监听进程执行如下:$lsnrctlstatus解释:“ServicesSummary”项表示Oracle的监听进程正在监听哪些数据库实例,输出显示中至少应该有“TESTDB”这一项。1.3. 检查Oracle实例状态SQLPLUS中执行如下:selectinstance_name,version,status,database_statusfromv$instance;selectname,log_mode,open_modefromv$database;解释:第一个语句:其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。第二个语句:其中“LOG_MODE”表示Oracle当前的归档方式。“ARCHIVELOG”表示数据库运行在归档模式下,“NOARCHIVELOG”表示数据库运行在非归档模式下。1.4. 检查Oraclealert日志执行如下:

cd$ORACLE_BASE/admin/$ORACLE_SID/bdumpcatalert_$ORACLE_SID.log|egrep-i'ora-|err|fail'解释:查看有无“ORA-”,“Error”,“Failed”等出错信息。如:“ORA-07445:exceptionencountered:coredump[00000001015EF610][SIGSEGV][Addressnotmappedtoobject]”这条错误信息表示Oracle的一个进程内存异常,而导致核心转储。1.5. 检查Oracle核心转储目录执行如下:ls$ORACLE_BASE/admin/$ORACLE_SID/udump/*.trc|wc–l

ls$ORACLE_BASE/admin/$ORACLE_SID/cdump/*.trc|wc-l解释:上面命令的结果是某个数字,如果这个数字每天增长10以上,则说明Oracle进程经常发生核心转储,某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。2.1.检查Oracle控制文件状态2.2.检查Oracle在线日志状态2.3.检查Oracle表空间的状态2.4.检查Oracle所有数据文件状态2.5.检查Oracle所有表、索引、存储过程、触发器、包等对象的状态2.6. 检查Oracle所有回滚段的状态第二章 检查Oracle对象的状态2.1.检查Oracle控制文件状态执行如下:SQL>setwrapoffSQL>colnamefora50SQL>select*fromv$controlfile;解释:输出结果应该有3条以上(包含3条)的记录,“STATUS”应该为空。状态为空表示控制文件状态正常。2.2.检查Oracle在线日志状态执行如下:SQL>setwrapoffSQL>colmemberfora50SQL>select*fromv$logfile;解释:输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。

注:“STATUS”显示为空表示正常。2.3.检查Oracle表空间的状态SQLPLUS中执行如下:selecttablespace_name,statusfromdba_tablespaces;解释:

正常情况下,其中“STATUS”应该都为“ONLINE”2.4.检查Oracle所有数据文件状态执行如下:SQL>colnamefora45SQL>selectname,statusfromv$datafile;解释:输出结果中“STATUS”应该都为“ONLINE”,系统表空间状态为”system”2.5.检查Oracle所有表、索引、存储过程、触发器、包等对象的状态执行如下:Sql>selectowner,object_name,object_typefromdba_objectswherestatus!='VALID'andowner!='SYS'andowner!='SYSTEM';解释:

如果有记录返回,则说明存在无效的对象。若这些对象与我们应用相关,那么需要重新生成这个对象2.6. 检查Oracle所有回滚段的状态执行如下:SQL>setwrapoffSQL>selectsegment_name,statusfromdba_rollback_segs;解释:应该有记录返回,并且输出结果中所有回滚段的“STATUS”应该为“ONLINE”。3.1. 检查Oracle各个表空间的增长情况3.2. 检查一些扩展异常的对象3.3. 检查system表空间内的内容3.4. 检查对象的下一扩展与表空间的最大扩展值3.5.检查job执行情况3.6.检查表空间的碎片程度3.7.检查oracle软件目录使用情况第三章 检查Oracle相关资源的使用情况3.1. 检查Oracle各个表空间的增长情况执行如下:SELECTa.tablespace_name,ROUND(100-b.free/a.total*100)used_pct,ROUND(a.total/1024/1024)total,ROUND(b.free/1024/1024)free_total,ROUND(b.max_free/1024/1024)free_max,b.free_cntfragmentFROM(SELECTtablespace_name,SUM(BYTES)totalFROMdba_data_filesGROUPBYtablespace_name)a,(SELECTtablespace_name,SUM(BYTES)free,MAX(BYTES)max_free,COUNT(BYTES)free_cntFROMdba_free_spaceGROUPBYtablespace_name)bWHEREa.tablespace_name=b.tablespace_nameorderbyused_pct;解释:如果使用率“USED_PCT”在90以上,则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能.

3.2. 检查一些扩展异常的对象执行如下:selectSegment_Name,Segment_Type,TableSpace_Name,(Extents/Max_extents)*100PercentFromsys.DBA_SegmentsWhereMax_Extents!=0and(Extents/Max_extents)*100>=95orderByPercent;解释:如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值。对于这些对象要修改它的存储结构参数3.3. 检查system表空间内的内容执行如下:selectdistinct(owner)fromdba_tableswheretablespace_name='SYSTEM'andowner!='SYS'andowner!='SYSTEM'andowner!='OUTLN'unionselectdistinct(owner)fromdba_indexeswheretablespace_name='SYSTEM'andowner!='SYS'andowner!='SYSTEM'andowner!='OUTLN';解释:如果有记录返回,则表明system表空间内存在一些非system和sys用户的对象。应该进一步检查这些对象是否与我们应用相关。如果相关请把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值3.4. 检查对象的下一扩展与表空间的最大扩展值执行如下:selecta.table_name,a.next_extent,a.tablespace_namefromall_tablesa,(selecttablespace_name,max(bytes)asbig_chunkfromdba_free_spacegroupbytablespace_name)fwheref.tablespace_name=a.tablespace_nameanda.next_extent>f.big_chunkunionselecta.index_name,a.next_extent,a.tablespace_namefromall_indexesa,(selecttablespace_name,max(bytes)asbig_chunkfromdba_free_spacegroupbytablespace_name)fwheref.tablespace_name=a.tablespace_nameanda.next_extent>f.big_chunk;解释:如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参数3.5.检查job执行情况执行如下:SQL>selectjob,log_user,last_date,failuresfromdba_jobs;解释:如果FAILURES列是一个大于0的数的话,说明JOB运行失败,要进一步的检查。然后调用dbms_job.run来重新执行.

创建测试表

SQL>createtableTEST(adate);

创建一个自定义过程

SQL>createorreplaceprocedureMYPROCas

2begin

3insertintoTESTvalues(sysdate);

4end;

5/

创建JOB

SQL>variablejob1number;

SQL>begin

2dbms_job.submit(:job1,‘MYPROC;’,sysdate,‘sysdate+1/1440’);3end;

4/

运行JOB

execdbms_job.run(:job1);

删除JOB

execdbms_job.remove(:job1);3.6.检查表空间的碎片程度执行如下:selecttablespace_name,count(*)chunks,max(bytes/1024/1024)max_chunkfromdba_free_spacegroupbytablespace_name;解释:

CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,

温馨提示

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

评论

0/150

提交评论