还剩57页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
oracle数据库巡检内容
1.检查数据库基本状况在本节中主要对数据库的基本状况进行检查,其中包含检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分
1.
1.检查Oracle实例状态SQL selectinstance_name host_name startup_time statusdatabase_status from v$instance;////INSTANCE_NAME HOST_NAME STARTUP_TIME STATUSDATA BASE_STATUSCKDB ASM2023-5-79:3OPEN ACTIVEg用户和Oracle用户的email#tail-n200/var/mail/root#tail-n200/var/mail/oracle查看有无与Oracle用户相关的出错信息
3.检杳Oracle对象状态在本节主要检查相关Oracle对象的状态,包含检查Oracle限制文件状态,检查Oracle在线日志状态,检查Oracle表空间的状态,检查Oracle全部数据文件状态,检查Oracle全部表、索引、存储过程、触发器、包等对象的状态,检查Oracle全部回滚段的状态,总共六个部分
3.L检蛰Oracle限制文件状态SQL selectstatus,name from v$controlfile;/data/oradata/CKDB/controlOl.ctl/data/oradata/CKDB/control
02.ctl/data/oradata/CKDB/control
03.ctl输出结果应当有3条以上(包含3条)的记录,STATUS应当为空状态为空表示限制文件状态正常32检查Oracle在线日志状态SQL selectgroup#status,type,member from v$logfile;zGROUP#STATUS TYPEMEMBERONLINE/data/oradata/CKDB/redo
03.log2ONLINE/data/oradata/CKDB/redo
02.log1ONLINE/data/oradata/CKDB/redoOl.log4ONLINE/data/oradata/CKDB/redo
04.log5ONLINE/data/oradata/CKDB/redo
05.log6ONLINE/data/oradata/CKDB/redo
06.log6rows selected输出结果应当有3条以上(包含3条)记录,STATUS应当为非INVALID,非DELETED注STATUS”显示为空表示正常
3.
3.检直Oracle表空间的状态SQL select tablespace_name status from dba_tablespaces;zTABLESPACE_NAME STATUSSYSTEMONLINEUND0TBS1ONLINESYSAUX ONLINETEMPONLINEUSERS ONLINEONLINESJ1ADMJNDEX ONLINEHOME_DATA ONLINEHOMEJNDEXONLINEPHOTO_DATA ONLINE输出结果中STATUS应当都为ONLINE
3.
4.检查Oracle全部数据文件状态SQL selectname,status fromv$datafile;/data/oradata/CKDB/systemOl.dbf SYSTEM/data/oradata/CKDB/undotbsOl.dbf ONLINE/data/oradata/CKDB/sysauxOl.dbf ONLINE/d ata/o rad ata/C KD B/u sersO
1.d bfONLINE/data/o radata/C KDB/HOME_DATAl.dbf ONLINE/data/oradata/CKDB/HOMEJNDEXl.dbf ONLINE/data/oradata/CKDB/PHOTO_DATAl.dbf ONLINE/data/oradata/CKDB/PHOTO」NDEXLdbf ONLINE/data/oradata/CKDB/BLOG_DATAl.dbf ONLINE/data/oradata/CKDB/BLOG_INDEXl.dbf ONLINE/data/oradata/CKDB/AUDIO_DATAl.dbf ONLINE/data/oradata/CKDB/AUDIOJNDEXl.dbf ONLINE/data/oradata/CKDB/VIDEO_DATAl.dbf ONLINE/data/oradata/CKDB/VIDEOJNDEXl.dbf ONLINE/data/oradata/CKDB/SYS_DATAl.dbf ONLINE/data/oradata/CKDB/SYSJNDEXl.dbf ONLINE/data/oradata/CKDB/ADM_DATAl.dbf/data/oradata/CKDB/ADMJNDEXl.dbf ONLINE/data/oradata/CKDB/perfstat.dbf ONLINE输出结果中STATUS应当都为ONLINE或者SQL selectfiljname,status from dba_data_files;FILE_NAME STATUS/data/oradata/CKDB/usersOl.dbf AVAILABLE/d ata/o rad ata/C KD B/sy sau xO
1.d bfAVAILABLE/data/oradata/CKDB/undotbsOl.dbf AVAILABLE/d ata/o rad ata/C KD B/sy stem
01.d bfAVAILABLE/data/oradata/CKDB/sj.dbf AVAILABLE/d ata/o rad ata/C KD B/p erf stat.d bfAVAILABLE/data/oradata/CKDB/HOME_DATAl.dbf AVAILABLE/data/oradata/CKDB/HOMEJNDEXl.dbf AVAILABLE/data/oradata/CKDB/PHOTO_DATAl.dbf AVAILABLE输出结果中STATUS应当都为AVAILABLE”
3.
5.检查无效对象sqlselect owner,object_name,object_type from dba_objects wherestatus!=VALID andowner!=SYS andowner!=SYSTEM;no rows selected假如有记录返回,则说明存在无效对象若这些对象与应用相关,那么须要重新编译生成这个对象,或者SELECT owner,objecCname,object_type FROM dba_objects WHEREstatus=INVALID,;
3.
6.检查全部回滚段状态SQL selectsegment_name statusfromdba_rollback_segs;zSEGMENT_NAME STATUSONLINESYSTEMONLINE_SYSSMU1$ONLINE_SYSSMU2$ONLINE_SYSSMU3$ONLINE_SYSSMU4$ONLINE_SYSSMU5$ONLINE_SYSSMU6$ONLINE_SYSSMU7$_SYSSMU9$ONLINE_SYSSMU10$ONLINE11rows selected输出结果中全部回滚段的STATUS应当为ONLINE
4.检蛰Oracle相关资源的运用状况在本节主要检查Oracle相关资源的运用状况,包含检查Oracle初始化文件中相关的参数值,检查数据库连接状况,检查系统磁盘空间,检查Oracle各个表空间运用状况,检查一些扩展异样的对象,检查system表空间内的内容,检查对象的下一扩展与表空间的最大扩展值,总共七个部分必_检查查叵初始化文件中相关参数值SQL selectresource_name,max_utilizationjnitial_allocation,其中STATUS表示Oracle当前的实例状态,必需为〃OPEN〃;〃DATABASE_STATUS〃表示Oracle当前数据库的状态,必需为ACTIVESQL selectnamejog_mode open_mode fromv$database;/NAME LOG_MODE OPEN_MODECKDB ARCHIVELOGREAD WRITE其中〃LOG_MODE〃表示Oracle当前的归档方式〃ARCHIVELOG〃表示数据库运行在归档模式下,〃NOARCHIVELOG表示数据库运行在非归档模式下在我们的系统中数据库必需运行在归档方式下
1.
2.检直Oracle服务进程$ps-ef|grep ora_|grep-v grepps-ef|grep ora_|grep-v grep|wc-IIimit_value fromv$resource_limit;RESOURCE_NAME MAX_UTILIZATION INITIAL_ALLOCAT LIMIT_VALUEprocesses162500500sessions168555555enqueuejocks13669306930enqueue_resources1112660UNLIMITEDges_procs000ges_ress00UNLIMITEDgesjocks00UNLIMITEDges_cache_ress00UNLIMITEDges_reg_msgs00UNLIMITEDges_big_msgs00UNLIMITEDges_rsv_msgs000gcs_resources000gcs_shadows000dml_locks762440UNLIMITEDtemporary_table_locks26UNLIMITED UNLIMITEDtransactions13610UNLIMITEDbranches0610UNLIMITEDcmtcallbk610UNLIMITED3sort_segment_locks5UNLIMITED UNLIMITEDmax_rollback_segments1161065535RESOURCE_NAME MAX_UTILIZATION INITIAL_ALLOCAT LIMIT_VALUEmax_shared_servers1UNLIMITED UNLIMITEDparallel_max_servers1680360022rows selected若LIMIT_VALU-MAX_UTILIZATION=5,则表明与RESOURCE_NAME相关的Oracle初始化参数须要调整可以通过修改Oracle初始化参数文件$ORACLE_BASE/admin/CKDB/pfile/initORCL.ora来修改4・
2.检查数据库连接状况查看当前会话连接数,是否属于正常范围SQL selectcount*fromv$session;COUNT*29select sid,serial#,username,program,machine,statusfromv$session;SID SERIAL#USERNAME PROGRAMMACHINE STATUS13oracle@xzl5saledb PMONxzl5saledb ACTIVE23oracle@xzl5saledb DBWOxzl5saledb ACTIVE33oracle@xzl5saledb DBW1xzl5saledb ACTIVE43oracle@xzl5saledb LGWRxzl5saledb ACTIVE53oracle@xzl5saledb CKPTxzl5saledb ACTIVE63oracle@xzl5saledb SMONxzl5saledb ACTIVE73oracle@xzl5saledb RECOxzl5saledb ACTIVE81oracle@xzl5saledb CJQOxzl5saledb ACTIVEoracle@xzl5saledb ARCOxzl5saledb ACTIVE103oracle@xzl5saledb ARC1xzl5saledb ACTIVE1111319ZK AccPrtInv_svr@xzl5tuxedo2TNS V1-V3xzl5tuxedo2INACTIVE1348876ZG upload@xzl5saleap TNSV1-V3xzl5saleap INACTIVE1720405ZK AccCreateRpt@xzl5tuxedol TNSV1-V3xzl5tuxedol INACTIVE2012895ZK OweScanSvr@xzl5billdb TNSV1-V3xzl5billdb INACTIVE其中SID会话session的ID号;SERIAL#会话的序列号,和SID一起用来唯一标识一个会话;USERNAME建立该会话的用户名;PROGRAM这个会话是用什么工具连接到数据库的;STATUS当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;假如建立了过多的连接,会消耗数据库的资源,同时,对一些〃挂死〃的连接可能须要手工进行清理假如D耿要手工断开某个会话,则执行(一般不建议运用这种方式去杀掉数据库的连接,这样有时候session不会断开简洁引起死连接建议通过sid查到操作系统的spid,运用ps-ef|grep spidno的方式确认spid不是ORACLE的后台进程运用操作系统的kill-9吩咐杀掉连接)alter systemkill sessionSID,SERIAL#;留意上例中SID为1到10(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作
4.
3.检直系统磁盘空间假如文件系统的剩余空间过小或增长较快,需对其进行确认并删除不用的文件以释放空间[oracle@AS14〜]$df-hFilesystem SizeUsed AvailUse%Mounted on/dev/sda
59.7G
3.9G
5.4G42%//dev/sdal479M16M438M4%/boot/dev/sda249G19G28G41%/datanone1014M01014M0%/dev/shm4・
4.检查表空间运用状况SQL selectf.tablespace_name a.total f.free,roundf.free/a.total*100%Free//fromselect tablespace_name sumbytes/1024*1024total fromdba_data_files groupby tablespace_name a,zselect tablespace_name roundsumbytes/1024*1024free fromdba_free_space groupby tablespace_name fzWHEREa.tablespace_name=f.tablespace_name+order by%Free;TABLESPACE_NAME TOTALFREE%FreeOPERATION_DATA180054730WAPWEB_DATA IOC3636OPERATIONJNDEX50018637SYSTEM102451550SYSAUX102453452SALE8_TEMP1006262500SJ17034PERFSTAT50035671HOME_DATA1007777SYSJNDEX100100100VIDEO」NDEX100100100VIDEO_DATA100100100BLOG_DATA10010010039rowsselected假如空闲率%Free小于10%以上(包含10%),则留意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能请不要对表空间增加过多的数据文件,增加数据文件的原则是每个数据文件大小为2G或者4G,自动扩展的最大限制在8G4・
5.检查一些扩展异样的对象sqlselect Segment_Name,SegmentJType,TableSpace_Name Extents/Max_extents*100PercentzFrom sys.DBA_SegmentsWhere Max_Extents!=0and Extents/Max_extents*100=95order ByPercent;no rowsselected假如有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值对于这些对象要修改它的存储结构参数
1.
6.检查system表空间内的内容select distinctowner fromdba_tables wheretablespace_name=SYSTEM andowner!=SYS andowner!=SYSTEM unionselectdistinctownerfromdba_indexes wheretablespace_name=SYSTEM andowner!=SYS andowner!=SYSTEM,;no rowsselectedoracle296010May0700:01:02ora_pmon_CKDBoracle296210May0700:00:22ora_psp0_CKDBoracle296410May0700:00:00ora_mman_CKDBoracle296610May0700:03:20ora_dbw0_CKDBoracle296810May0700:04:29ora_lgwr_CKDBoracle297010May0700:10:31ora_ckpt_CKDBoracle297210May0700:03:45ora_smon_CKDBoracle297410May0700:00:00ora_reco_CKDBoracle297610May0700:01:24ora_cjq0_CKDBoracle297810May0700:06:17ora_mmon_CKDBoracle298010May0700:07:26ora_mmnl_CKDBoracle298210May0700:00:00ora_d000_CKDB假如记录返回,则表明system表空间内存在一些非system和sys用户的对象应当进一步检查这些对象是否与我们应用相关假如相关请把这些对象移到非System表空间,同时应当检查这些对象属主的缺省表空间值
1.
7.检查对象的下一扩展与表空间的最大扩展值sqlselect a.table_name a.next_extent,a.tablespace_namezfrom all_tables azselect tablespace.name,maxbytes asbig_chunkfrom dba_free_spacegroup by tablespace_namefwhere f.tablespace_name=a.tablespace_nameand a.next_extentf.big_chunkunionselect a.index_name a.next_extent a.tablespace_namez zfromalljndexes a,select tablespace.name,maxbytes asbig_chunkfrom dba_free_spacegroup bytablespace_namefwhere f.tablespace_name=a.tablespace_nameand a.next_extentf.big_chunk;no rowsselected假如有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参数
5.检查Oracle数据库备份结果在本节主要检查Oracle数据库备份结果,包含检查数据库备份日志信息,检查backup卷中文件产生的时间,检查oracle用户的email,总共三个部分
5.
1.检查数据库备份日志信息假设备份的临时书目为/backup/hotbakup,我们须要检查2023年7月22日的备份结果,则用下面的吩咐来检查#cat/backup/hotbackup/hotbackup-09-7-
22.log|grep-i error备份脚本的日志文件为hotbackup-月份-日期一年份.log,在备份的临时书目下面假如文件中存在“ERROR,则表明备份没有胜利,存在问题须要检查52检查backup卷中文件产生的时间#ls-It/backup/hotbackupbackup卷是备份的临时书目,查看输出结果中文件的日期,都应当是在当天凌晨由热备份脚本产生的假如时间不对则表明热备份脚本没执行胜利
5.
3.检查racle用户的email#tail-n300/var/mail/oracle热备份脚本是通过Oracle用户的cron去执行的cron执行完后操作系统就会发一条Email通知Oracle用户任务已经完成查看Oracleemail中今日凌晨部分有无ORA-Error,Failed等出错信息,假如有则表明备份不正常f
6.检杳Oracle数据库性能在本节主要检查Oracle数据库性能状况,包含检查数据库的等待事务,检查死锁及处理,检查cpu.I/O.内存性能,查看是否有僵死进程,检查行链接/迁移,定期做统计分析,检查缓冲区命中率,检查共享池命中率,检查排序区,检查日志缓冲区,总共十个部分
6.
1.检查数据库的等待事务set pages80set lines120col eventfor a40select sidevent pl,p2p3WAIT_TIME/SECONDS_IN_WAIT fromv$session_wait whereevent not like SQL%and eventnotlike//,/rdbms%;假如数据库长时间持续出现大量像latch free,enqueue,buffer busywaits,db filesequential read,db filescattered read等等待事务时,须要对其进行分析,可能存在问题的语句
6.
2.Disk Read最高的跳语句的获得SQLSELECT SQL_TEXT FROM SELECT*FROM V$SQLAREA ORDER BY DISK_READS WHERER0WNUM=5desc;
6.
3.查找前十条性能差的sqlSELECT*FROM SELECTPARSING_USER_IDEXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,SQL_TEXT FROM V$SQLAREA ORDERBY DISK_READS DESCWHEREROWNUM10;
6.
4.等待时间最多的5个系统等待事务的获得SELECT*FROMSELECT*FROM V$SYSTEM_EVENT WHEREEVENT NOTLIKE SQL%ORDERBYTOTAL_WAITS DESCWHERER0WNUM=5;
6.
5.检查运行很久的SQLCOLUMN USERNAMEFORMAT A12COLUMN OPNAMEFORMAT A16COLUMN PROGRESSFORMAT A8SELECT USERNAMESIDOPNAME ROUNDSOFAR*100/TOTALWORK O||%AS PROGRESS,TIME_REMAINING,SQL_TEXT/,/zFROM V$SESSION_LONGOPS,V$SQL WHERETIME_REMAINING0AND SQL_ADDRESS=ADDRESS ANDSQL_HASH_VALUE=HASH_VALUE;
6.
6.检查消耗CPU最高的进程SET LINE240SET VERIFYOFFCOLUMN SIDFORMAT999COLUMN PIDFORMAT999COLUMN S_#FORMAT999COLUMN USERNAMEFORMAT A9HEADING ORAUSERCOLUMN PROGRAMFORMAT A29COLUMN SQLFORMAT A60COLUMN OSNAMEFORMAT A9HEADING OSUSERSELECT P.PID PID5SID SIDRSPIDSPID,S.USERNAME USERNAME,S.OSUSER OSNAME,P.SERIAL#S_#,P.TERMINAL,P.PROGRAM PROGRAM,P.BACKGROUND,S.STATUS,RTRIMSUBSTRA.SQL_TEXT,L80SQLFROMV$PROCESS P,V$SESSION SV$SQLAREA AWHERE P.ADDR=S.PADDR ANDS.SQL_ADDRESS=A.ADDRESS+ANDZ6・
7.检查碎片程度高的表SQL SELECTsegment_name table_name,COUNT*extents FROMdba_segments WHEREowner NOTINSYS;SYSTEMGROUP BY segment_name HAVINGCOUNT*=SELECT MAXCOUNT*FROMdba_segments GROUPBYsegment_name;
6.
8.检查表空间的I/O比例SQLSELECT DF.TABLESPACE_NAME NAME,DF.FILE_NAME FILE”,F.PHYRDS PYRF.PHYBLKRD PBR,F.PHYWRTS PYW,ZF.PHYBLKWRT PBWFROMV$FILESTAT F,DBA_DATA_FILES DFWHERE F.FILE#=DF.FILEJD ORDERBYDF.TABLESPACE_NAME;
6.
9.检查文件系统的I/O比例SQLSELECT SUBSTRA.FILE#l2n#n,SUBSTRA.NAME,1,30“NAME”,A.STATUS,A.BYTES,B.PHYRDS,B.PHYWRTS FROM//V$DATAFILE A,V$FILESTAT BWHERE A.FILE#=B.FILE#;
6.
10..检查死锁及处理查询目前锁对象信息col sidfor999999col username for alOcolschemaname for alOcol osuserfor al6col machinefor al6col terminalfora20col ownerfor alOcol object_namefora30colobject_type foralO selectsid,serial#,username,SCH EMAN AME,osuser,MACHINE,terminal,PROGRAM,owner,object_rame,o切ect_type,o.o切ect_id fromdba_objects o,v$locked_object lv$session swherezo.object_id=l.objectjd ands.sid=l.session_id;oracle级kill掉该session:alter systemkill sessionsid,serial#;操作系统级kill掉session:
6.
11..检查数据库cpu、I/O,内存性能记录数据库的cpu运用、
10、内存等运用状况,运用vmstatjostatsartop等吩咐进行信息收集并检查这些信息,推断资源运用状况oracle298410May0700:00:00ora_s000_CKDBoracle299410May0700:00:28ora_arcO_CKDBoracle299610May0700:00:29ora_arcl_CKDBoracle300010May0700:00:00ora_qmnc_CKDBoracle362510May0700:01:40ora_q000_CKDBoracle3159410Jul2000:00:00ora_q003_CKDBoracle238021005:0900:00:33oraJ000_CKDB19在检查Oracle的进程吩咐输出后,输出显示至少应包括以下一些进程:.Oracle写数据文件的进程,输出显示为〃adbw0_CKDB〃.Oracle写日志文件的进程,输出显示为〃ora」gwr_CKDB〃.Oracle监听实例状态的进程,输出显示为〃ora_smon_CKDB.Oracle监听客户端连接进程状态的进程,输出显示为〃ora_pmon_CKDB〃
1.CPU运用状况:[root@sale8〜]#toptop-10:29:35up73days,19:54,1user,load average:
0.37,
0.38,
0.29Tasks:353total,2running,351sleeping,0stopped,0zombieCpus:
1.2%us,
0.1%sy,
0.0%ni
98.8%id,
0.0%wa,
0.0%hi,
0.0%si Mem:16404472k total,12887428k used,3517044k free,z60796k buffersSwap:8385920k total,665576k used7720344k free,10358384k cachedzPIDUSER PRNI VIRTRES SHRS%CPU%MEM TIME+COMMAND30495oracle1508329m866m861m R
105.47:
53.90oracle32501oracle1508328m
1.7g
1.7g S
210.61:
58.38oracle32503oracle1508329m
1.6g
1.6g S
210.22:
06.62oracle留意上面的蓝色字体部分,此部分内容表示系统剩余的cpu,当其平均值下降至10%以下的时视为CPU运用率异样,需记录下该数值,并将状态记为异样
2.内存运用状况#free-mtotal usedshared bufferscachedMem:202619580761556-/+buffers/cache:3261700Sw叩5992925900,,,如上所示蓝色部分表示系统总内存红色部分表示系统运用的内存,黄色部分表示系统剩余内存当剩余内存低于总内存的10%时视为异样
3.系统I/O状况:#iostat-k13Linux
2.
6.9-
22.ELsmp ASM07/29/2023avg-cpu:%user%nice%sys%iowait%idle
0.
160.
000.
050.
3699.43Device:tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda
3.
3313.
1650.2594483478360665804avg-cpu:%user%nice%sys%iowait%idle
0.
000.
000.
000.
00100.00Device:tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda
0.
000.
000.0000如上所示,蓝色字体部分表示磁盘读写状况,红色字体部分为cpu10等待状况
4.系统负载状况#uptime12:08:37up162days,23:33,15users,load average:
0.
010.15,
0.10z如上所示,蓝体字部分表示系统负载,后面的3个数值假如有高于
2.5的时候就表明系统在超负荷运转了,并将此值记录到巡检表,视为异样
6.
12.查看是否有僵尸进程select spidfromv$process where addr notin selectpaddr fromv$session;有些僵尸进程有堵塞其他业务的正常运行,定期杀掉僵尸进程
6.
13.检查行链接/迁移Sqlselect table_name,num_rows chain_cnt Fromdba_tables Wherewner=CTAIS2And chain_cnt0;/注含有long raw列的表有行链接是正常的,找到迁移行保存到chained_rows表中,如没有该表执行../rdbms/admin/utlchain.sqlSqlanalyze tabletablename list chainedrows;可通过表chained_rows中table_name,head_rowid看出哪些行是迁移行如:Sqlcreate tableaa asselect a.*from sb_zsxx a,chained_rows bwherea.rowid=b.head_rowid andb.table_name=SB_ZSXX;sqldelete fromsb_zsxx whererowid inselect head_rowid from chained_rows wheretable_name=SB_ZSXX;sqlinsert intosb_zsxx select*fromchained_row wheretable_name=SB_ZSXX;
6.
14.定期做统计分析对于采纳Oracle Cost-Based-Optimizer的系统,须要定期对数据对象的统计信息进行采集更新,使优化器可以依据打算的信息作出正确的explain plan在以下状况更须要进行统计信息的更新L应用发生改变
2、大规模数据迁移、历史数据迁出、其他数据的导入等
3、数据量发生改变查看表或索引的统计信息是否需更新,如SqlSelect table_name,num_rows last_analyzed Fromuser_tables wheretable_name=DJ_NSRXX;sqlselect count*from DJ_NSRXX如num_rows和count*假如行数相差许多,则该表须要更新统计信息,建议一周做一次统计信息收集,如Sqlexec sys.dbms_stats.gather_schema_statsownname=CTAIS2,cascade=TRUE,degree=4;/
6.
15.检查缓冲区命中率SQL SELECTa.VALUE+b.VALUE logical_readszc.VALUE phys_reads round100*l-c.value/a.value4-b.value4hit_ratioz zFROMv$sysstat a,v$sysstat bv$sysstat czWHEREa.NAME=db blockgetsAND b.NAME=consistent getsANDc.NAME=physical reads,;LOGICAL READSPHYS READSHIT RATIO
12736457057119143094.4104假如命中率低于90%则需加大数据库参数db_cache_sizeo
6.
16.检查共享池命中率SQL selectsumpinhits/sumpins*100fromv$librarycache;SUMPINHITS/SUMPINS*
10099.5294474716798如低于95%,则须要调整应用程序运用绑定变量,或者调整数据库参数shared pool的大小
6.
17.检查排序区SQL selectname,value fromv$sysstat wherename like%sort%,;NAME VALUEsortsmemory6135534sorts disk8sorts rows2264742084假如disk/memoty+row的比例过高,则须要调整sort_area_sizeworkarea_size_policy=falsen!6pga_aggregate_targetworkarea_size_policy=trueo
6.
18.检查日志缓冲区SQL selectname,value fromv$sysstat wherename inredo entries/redo bufferallocation retries;NAME VALUEredo entries27663705redo bufferallocation retries880假如redo bufferallocation retries/redoentries超过1%,则须要增大log_buffer
7.检查数据库平安性在本节主要检查Oracle数据库的平安性,包含检查系统平安信息,定期修改密码,总共两个部分
7.L检直系统平安日志信息系统平安日志文件的书目在/var/log下,主要检查登录胜利或失败的用户日志信息检查登录胜利的日志[root@rac2〜]#grep-i accepted/var/log/secureJan808:44:43rac2sshd
[29559]:Accepted passwordfor rootfrom::ffff:
10.
10.
10.6port1119ssh
[3071]:Failed passwordfor invaliduser ydbuserfrom::ffff:
192.
168.
3.5port36005ssh
2.Oracle进行归档的进程,输出显示为nora_arcO_CKDB”.Oracle进行检查点的进程,输出显示为nora_ckpt_CKDB〃.Oracle进行复原的进程,输出显示为〃ora_reco_CKDB〃L
3.检蛰Oracle监听状态/home/oraclelsnrctl statusLSNRCTLfor Linux:Version
10.
2.
0.
2.0-Production on23-JUL-202414:11:53Copyright c1991,2023,Oracle.All rightsreserved.Connecting toADDRESS=PROTOCOL=tcpHOST=PORT=1521STATUS ofthe LISTENERAliasLISTENERJan910:30:56rac2sshd
[3071]:Failed passwordfor invaliduser ydbuserfrom::ffff:192,
168.
3.5port36005ssh2Jan1022:44:38rac2sshd
[21611]:Failed passwordfor rootfrom::ffff:
10.
10.
10.6port1723ssh2在出现的日志信息中没有错误Invalid、refused提示,假如没有Invalid、refused视为系统正常,出现错误提示,应作出系统告警通知
7.
2.检查用户修改密码在数据库系统上往往存在许多的用户,如第三方数据库监控系统,初始播数据库时的演示用户,萱理员用户等等,这些用户的密码往往是写定的,被许多人知道,会被别有专心的人利用来攻击系统甚至进行修改数据须要修改密码的用户包括数据库管理员用户SYS,SYSTEM;其他用户登陆系统后,提示符下输入cat/etc/passwd,在列出来的用户中查看是否存在已经不再运用的或是生疏的帐号若存在,则记录为异样修改密码方法Sqlalter userUSER_NAME identifiedby PASSWORD;其他检查在本节主要检查当前crontab任务是否正常,检查Oracle Job是否有失败等共六个部分
8.L检查当前crontab任务是否正常[oracle@AS14〜]$crontab-I82Oracle Job是否有失败Sqlselect job,what,last_date,next_date,failures,broken fromdbajobs Whereschema_user=CAIKE;如有问题建议重建job,如exec sys.dbmsjob.removel;commit;exec sys.dbmsJob.isubmitl REFRESH_ALL_SNAPSHOT;,SYSDATE+l/1440,SYSDATE+4/1440,;commit;,/
18.
3.监控数据量的增长状况SQL selectA.tablespace_namel-A.total/B.total*100used_percent fromselecttablespace_name sumbytestotal fromz/dba_free_space groupbytablespace_name A,selecttablespace_name sumbytestotal fromdba_data_files groupbyzTABLESPACE_NAME USED.PERCENTtablespace_name Bwhere A.tablespace_name=B.tablespace_name;HOMEJNDEX
1.5BLOG_DATA
0.375VIDEO_DATA
0.25VIDEOJNDEX
0.25SYS.DATA
9.5SYS JNDEX
0.4375CURRENCY」NDEX
132.3055555555UNDOTBS
147.875976562SYSAUX依据本周每天的检查状况找到空间扩展很快的数据库对象,并实行相应的措施:--删除历史数据移动规定数据库中至少保留6个月的历史数据,所以以前的历史数据可以考虑备份然后进行清除以便释放其所占的资源空间---扩表空间alter tablespacetablespace_name adddatafile/file/size sizeautoextend off;留意在数据库结构发生改变时,如增加了表空间,增加了数据文件或重做日志文件这些操作,都会造成Oracle数据库限制文件的改变,DBA应及进行限制文件的备份,备份方法是执行SQL语句alter databasebackup controlfileto/home/backup/control.bak;或alter databasebackup controlfileto trace;这样,会在USER_DUMP_DEST(初始化参数文件中指定)书目下生成创建限制文件的SQL吩咐8・
4.检查失效的索引Sqlselect index_name,table_name,tablespace_name,status Fromdbajndexes Wherewner=CTAIS2AndstatusoVALID,;注分区表上的索引status为N/A是正常的,如有失效索引则对该索引做rebuild,如Sqlalter indexINDEX_NAME rebuildtablespace TABLESPACE_NAME;
8.
5.检查不起作用的约束SELECT owner,constraint_name table_name constraint_type statuszz zFROMdba_constraintsWHERE status=DISABLE andconstraint_type=P;如有失效约束则启用,如Sqlalter TableTABLE_NAME EnableConstraints CONSTRAINT.NAME;8・
6.检查无效的triggerSELECT owner,trigger_name,table_name,status FROMdba_triggers WHEREstatus=DISABLED;如有失效触发器则启用,如Sqlalter TriggerTRIGGER_NAME Enable;
9.每月的工作
9.
1.找寻数据库性能调整的机会运用statspack收集统计数据,比较每天对数据库性能的监控报告,确定是否有必要对数据库性能进行调整9・
2.数据库性能调整如有必要,进行性能调整
9.
3.提出下一步空间管理安排依据每周的监控才是出空间管理的改进方法VersionStart Date07-MAY-202409:35:52TNSLSNR forLinux:Version
10.
2.
0.
2.0-ProductionUptime77days4hr.36min.0secTrace LeveloffSecurity ON:Local OSAuthenticationSNMP OFFListeningEndpoints Summary...DESCRIPTION=ADDRESS=PROTOCOL=tcpHOST=AS14PORT=1521Services Summary...Service CKDBhas1instances.Instance CKDB,status READY,has1handlers forthis service...Service CKDBXDBhas1instances.Instance CKDB,status READY,has1handlers forthis service...Service CKDB_XPTn has1instances.Instance CKDB,status READY,has1handlers forthis service...The commandcompleted successfully“Services Summary”项表示Oracle的监听进程正在监听哪些数据库实例,输出显示中至少应当有〃CKDB〃这一项检查监听进程是否存在[oracle@AS14〜]$ps-ef|grep lsn|grep-v grep
2.检查系统和oracle日志文件在本节主要检查相关的日志文件,包含检查操作系统的日志文件,检查Oracle日志文件,检查Oracle核心转储书目,检查Root用户和Oracle用户的email,总共四个部分
2.L检查操作系统日志文件#cat/var/log/messages|grep failed查看是否有与Oracle用户相关的出错信息
2.
2.检查rade日志文件[oracle@AS14〜]$cat/data/oracle/admin/CKDB/bdump/alert_CKDB.Iog|grep ora-[oracle@AS14~]$cat/data/oracle/admin/CKDB/bdump/alert_CKDB.Iog|grep err[oracle@AS14〜]$cat/data/oracle/admin/CKDB/bdump/alert_CKDB.Iog|grep failOracle在运行过程中,会在警告日志文件alert_SID.log中记录数据库的一些运行状况数据库的启动、关闭,启动时的非缺省参数;数据库的重做日志切换状况,记录每次切换的时间,及假如因为检查点checkpoint操作没有执行完成造成不能切换,会记录不能切换的缘由;对数据库进行的某些操作,如创建或删除表空间、增加数据文件;数据库发生的错误,如表空间不够、出现坏块、数据库内部错误ORA-600等定期检查日志文件,依据日志中发觉的问题刚好进行处理:问题处理启动参数不对检查初始化参数文件,因为检查点操作或归档操作没有完成造成重做日志不能切换假如常常发生这样的状况可以考虑增加重做日志文件组;想方法提高检查点或归档操作的效率;有人未经授权删除了表空间检查数据库的平安问题,是否密码太简洁;如有必要,撤消某些用户的系统权限出现坏块检查是否是硬件问题如磁盘本生有坏块,假如不是,检查是那个数据库对象出现了坏块,对这个对象进行重建表空间不够增加数据文件到相应的表空间出现ORA-600依据日志文件的内容查看相应的TRC文件,假如是Oracle的bug,要刚好打上相应的补丁Listener日志$ORACLE_HOME/network/log2・
3.检查Oracle核心转储书目$ls$ORACLE_BASE/admin/CKDB/cdump/*.trc|wc-I$ls$ORACLE_BASE/admin/CKDB/udump/*.trc|wc-1假如上面吩咐的结果每天都在增长,则说明Oracle进程常常发生核心转储这说明某些用户进程或者数据库后台进程由于无法处理的缘由而异样退出常见的核心转储特殊是数据库后台进程的核心转储会导致数据库异样终止。