ORACLE数据库日常维护手册(共19页).doc

上传人:飞****2 文档编号:14373754 上传时间:2022-05-04 格式:DOC 页数:19 大小:69.50KB
返回 下载 相关 举报
ORACLE数据库日常维护手册(共19页).doc_第1页
第1页 / 共19页
ORACLE数据库日常维护手册(共19页).doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《ORACLE数据库日常维护手册(共19页).doc》由会员分享,可在线阅读,更多相关《ORACLE数据库日常维护手册(共19页).doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上ORACLE数据库日常维护手册1 前言数据库系统往往是企业或组织信息系统中最重要的基础架构,一旦数据库系统不能正常运行,那基于数据库的整个信息架构都会随之瘫痪,因此我们必须保证数据库系统持续的健康的运行。因此数据库管理员必须每天对数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行检查,发现并解决可能存在的问题,将隐患消除在萌芽中。本文列举了ORACLE 数据库管理员每天,每周和每月应该检查的一些东西,希望对DBA有些帮助。注:所有示例可能与客户的实际系统不尽相同。2 ORACLE数据库每天应检查的项目2.1 数据库基本状况检查2.1.1

2、 检查Oracle的进程$ps ef|grep “ora_”|grep v grep oracle 6586 1 0 May 15 ? 0:00 ora_pmon_ORCL oracle 6598 1 0 May 15 ? 0:00 ora_snp0_ORCL oracle 6600 1 0 May 15 ? 0:00 ora_snp1_ORCL oracle 6594 1 0 May 15 ? 0:06 ora_smon_ORCL oracle 6604 1 0 May 15 ? 0:00 ora_snp3_ORCL oracle 6588 1 0 May 15 ? 6:50 ora_dbw

3、0_ORCL oracle 6590 1 0 May 15 ? 37:48 ora_lgwr_ORCL oracle 6602 1 0 May 15 ? 0:00 ora_snp2_ORCL oracle 6606 1 0 May 15 ? 5:19 ora_arc0_ORCL oracle 6592 1 0 May 15 ? 0:45 ora_ckpt_ORCL oracle 6596 1 0 May 15 ? 0:01 ora_reco_ORCL . 在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程: Oracle写数据文件的进程,输出显示为:ora_dbw0_ORCL。

4、 Oracle写日志文件的进程,输出显示为:ora_lgwr_ORCL。 Oracle监听实例状态的进程,输出显示为:ora_smon_ORCL。 Oracle进行检查点的进程,输出显示为:ora_ckpt_ORCL。 注:进程的后缀ORCL是指数据库的实例名,以上仅是示例,与客户系统可能不尽相同。2.1.2 检查Oracle监听进程$lsnrctl status LSNRCTL for Solaris: Version 9.2.0.4.0 - Production on 23-MAY-2005 13:12:09 (c) Copyright 2002 Oracle Corporation. A

5、ll rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ipasdb)(PORT=1521) STATUS of the LISTENER - Alias LISTENER Version TNSLSNR for Solaris: Version 9.2.0.4.0 - Production Start Date 15-MAY-2005 22:05:58 Uptime 7 days 15 hr. 6 min. 11 sec Trace Level off Security OFF SNMP OFF

6、Listener Parameter File /opt/oracle/db01/app/oracle/product/920/network/ admin/listener.ora Listener Log File /opt/oracle/db01/app/oracle/product/920/network/ log/listener.log Services Summary. ORCL has 1 service handler(s)注:以上仅是示例,与客户系统可能不尽相同。2.1.3 检查Oracle实例状态$sqlplus system/manager sqlselect inst

7、ance_name,version,status,database_status from v$instance; INSTANCE_NAME VERSION STATUS DATABASE_STATUS - - - - ORCL 9.2.0.4.0 OPEN ACTIVE 其中STATUS表示Oracle当前的实例状态,必须为OPEN;DATABASE_STATUS表示Oracle当前数据库的状态,必须为ACTIVE。 sqlselect name,log_mode,open_mode from v$database; NAME LOG_MODE OPEN_MODE - - -ORCLARC

8、HIVELOGREAD WRITE2.1.4 检查归档情况SQLarchive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /opt/oracle/arch/ORCL Oldest online log sequence 1 Next log sequence to archive 2 Current log sequence 2 Automatic archivalEnabled表示归档进行是否自动启动 其中LOG_MODE表示Oracle当前的归档方式。ARC

9、HIVELOG表示数据库运行在归档模式下,NOARCHIVELOG表示数据库运行在非归档模式下。2.2 数据库日志文件检查2.2.1 检查Oracle日志文件$cat $ORACLE_BASE/admin/ORCL/bdump/alert_ORCL.log|grep -i ora- $cat $ORACLE_BASE/admin/ORCL/bdump/alert_ORCL.log|grep -i err $cat $ORACLE_BASE/admin/ORCL/bdump/alert_ORCL.log|grep -i fail Oracle在运行过程中,会在警告日志文件(alert_SID.l

10、og)中记录数据库的一些运行情况: 数据库的启动、关闭,启动时的非缺省参数; 数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因; 对数据库进行的某些操作,如创建或删除表空间、增加数据文件; 数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA600)DBA应该定期检查日志文件,根据日志中发现的问题及时进行处理问题 处理: 启动参数不对 检查初始化参数文件 因为检查点操作或归档操作没有完成造成重做日志不能切换 如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率;

11、有人未经授权删除了表空间 检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限 出现坏块 检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建 表空间不够 增加数据文件到相应的表空间 出现ORA-600 根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁2.2.2 检查Oracle核心转储目录$ls $ORACLE_BASE/admin/ORCL/cdump/*.trc|wc -l $ls $ORACLE_BASE/admin/ORCL/udump/*.trc|wc l 如果上面命令的结果每

12、天都在增长,则说明Oracle进程经常发生核心转储。这说明某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。2.3 数据库对象状态检查2.3.1 检查Oracle控制文件状态sqlselect * from v$controlfile; STATUS NAME - /opt/oracle/db02/oradata/ORCL/control01.ctl /opt/oracle/db03/oradata/ORCL/control02.ctl /opt/oracle/db04/oradata/ORCL/control03.c

13、tl2.3.2 检查Oracle在线日志状态sqlselect * from v$logfile; GROUP# STATUS MEMBER - 1 ONLINE/opt/oracle/db02/oradata/ORCL/redo01.log 2 ONLINE/opt/oracle/db03/oradata/ORCL/redo02.log 3 ONLINE/opt/oracle/db04/oradata/ORCL/redo03.log 输出结果应该有3条以上(包含3条)记录,STATUS应该为非INVALID,非DELETED。 注:STATUS显示为空表示正常。2.3.3 检查Oracle表

14、空间的状态sqlselect tablespace_name,status from dba_tablespaces; TABLESPACE_NAME STATUS - - SYSTEM ONLINE TOOLS ONLINE RBS ONLINE TEMP ONLINE USERS ONLINE INDX ONLINE DRSYS ONLINE其中STATUS应该都为ONLINE2.3.4 检查Oracle所有数据文件状态sqlselect name,status from v$datafile; NAME STATUS - /opt/oracle/db02/oradata/ORCL/sys

15、tem01.dbf ONLINE /opt/oracle/db02/oradata/ORCL/tools01.dbf ONLINE /opt/oracle/db02/oradata/ORCL/rbs01.dbf ONLINE /opt/oracle/db02/oradata/ORCL/temp01.dbf ONLINE /opt/oracle/db02/oradata/ORCL/users01.dbf ONLINE /opt/oracle/db02/oradata/ORCL/indx01.dbf ONLINE /opt/oracle/db02/oradata/ORCL/drsys01.dbf

16、ONLINE /opt/oracle/wacos/oradata/ORCL/wacos01.dbf ONLINE /opt/oracle/nms/oradata/ORCL/data01.dbf ONLINE 输出结果中STATUS应该都为ONLINE。2.3.5 检查Oracle所有表、索引、存储过程、触发器、包等对象的状态sqlselect owner,object_name,object_type from dba_objects where status!=VALID and owner!=SYS and owner!=SYSTEM; no rows selected 如果有记录返回,则

17、说明存在无效的对象。如果应用相关的对象。请首先以sys用户登录sqlplus,执行$ORACLE_HOME/rdbms/admin/utlrp.sql来重新编译这些对象。编译后再执行上述语句来检查,如果仍有输出,请寻求技术支持。2.4 数据库资源使用情况检查2.4.1 检查Oracle初始化文件中相关的参数值SQL select resource_name,max_utilization,initial_allocation,limit_value from v$resource_limit;RESOURCE_NAME MAX_UTILIZATION INITIAL_ALLOCATION LI

18、MIT_VALUE- - - -processes 11 150 150sessions 11 170 170enqueue_locks 14 2230 2230enqueue_resources 10 968 UNLIMITEDges_procs 0 0 0ges_ress 0 0 UNLIMITEDges_locks 0 0 UNLIMITEDges_cache_ress 0 0 UNLIMITEDges_reg_msgs 0 0 UNLIMITEDges_big_msgs 0 0 UNLIMITEDges_rsv_msgs 0 0 0RESOURCE_NAME MAX_UTILIZATI

19、ON INITIAL_ALLOCATION LIMIT_VALUE- - - -gcs_resources 0 3300 3300gcs_shadows 0 3300 3300dml_locks 3 748 UNLIMITEDtemporary_table_locks 0 UNLIMITED UNLIMITEDtransactions 4 187 UNLIMITEDbranches 0 187 UNLIMITEDcmtcallbk 0 187 UNLIMITEDsort_segment_locks 1 UNLIMITED UNLIMITEDmax_rollback_segments 11 38

20、 38max_shared_servers 0 20 20parallel_max_servers 0 6 6若LIMIT_VALU-MAX_UTILIZATIONselect A.tablespace_name,(1-(A.total)/B.total)*100 used_percent from (select tablespace_name,sum(bytes) total from dba_free_space group by tablespace_name) A, (select tablespace_name,sum(bytes) total from dba_data_file

21、s group by tablespace_name) B where A.tablespace_name=B.tablespace_name; TABLESPACE_NAME USED_PERCENT - - DRSYS 30. FS .19375 INDX . Data01 .0375 SYSTEM 34. TEMP 2. TOOLS . USERS . 1、 如果使用率USED_PERCENT在90%以上,则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能。 2、 请不要对表空间增加过多的数据文件,增加数据文件的原则是每个数据文件大小为2G,自动扩展的最大限制在4G; 3、

22、 增加数据文件后,请检查热备脚本,是否会包含新增的数据文件; 2.4.3 检查一些扩展异常的对象sqlselect Segment_Name, Segment_Type, TableSpace_Name, (Extents/Max_extents)*100 Percent From sys.DBA_Segments Where Max_Extents != 0 and (Extents/Max_extents)*100=95 order By Percent; no rows selected 如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值。对于这些对象要修改它的存储结构参数。

23、2.4.4 检查system表空间内的内容sqlselect distinct(owner) from dba_tables where tablespace_name=SYSTEM and owner!=SYS and owner!=SYSTEM union select distinct(owner) from dba_indexes where tablespace_name=SYSTEM and owner!=SYS and owner!=SYSTEM; no rows selected 如果记录返回,则表明system表空间内存在一些非system和sys用户的对象。请把这些对象移到

24、非System表空间,同时应该检查这些对象属主的缺省表空间值。 2.4.5 检查对象的下一扩展与表空间的最大扩展值sqlselect a.table_name, a.next_extent, a.tablespace_name from all_tables a, (select tablespace_name, max(bytes) as big_chunk from dba_free_space group by tablespace_name ) f where f.tablespace_name = a.tablespace_name and a.next_extent f.big_c

25、hunk union select a.index_name, a.next_extent, a.tablespace_name from all_indexes a, (select tablespace_name, max(bytes) as big_chunk from dba_free_space group by tablespace_name ) f where f.tablespace_name = a.tablespace_name and a.next_extent f.big_chunk; no rows selected 如果有记录返回,则表明这些对象的下一个扩展大于该对

26、象所属表空间的最大扩展值,需调整相应表空间的存储参数2.4.6 数据库表空间使用情况监控数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。select tablespace_name,count(*) chunks ,max(bytes/1024/1024) max_chunkfrom dba_free_spacegroup by tablespace_name;上面的SQL列出了数据库中每个表空间的空闲块情况,如下所示(以下只是示例,与客户数据库可能有出入):

27、TABLESPACE_NAME CHUNKS MAX_CHUNK- - -INDX 1 57.RBS 3 490.RMAN_TS 1 16.SYSTEM 1 207.TEMP 20 70.TOOLS 1 11.USERS 67 71.其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL命令进行表空间相邻碎片的接合:alter tablespace 表空间名 coalesce;然后再执行查看表空间碎片的SQL语句,看表空间的碎片

28、有没有减少。如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。MAX_CHUNK列的结果是表空间上最大的可用块大小,如果该表空间上的对象所需分配的空间(NEXT值)大于可用块的大小的话,就会提示ORA-1652、ORA-1653、ORA-1654的错误信息,DBA应该及时对表空间的空间进行扩充,以避免这些错误发生。对表空间的扩充对表空间的数据文件大小进行扩展,或向表空间增加数据文件,具体操作见“存储管理”部份。2.5 检查数据库定时作业的完成情况a如果数据库使用了Oracle的JOB来完成一些定时作业,要对这些JOB的运行情况进行检查:select job,

29、log_user,last_date,failures from dba_jobs;如果FAILURES列是一个大于0的数的话,说明JOB运行失败,要进一步的检查。2.6 数据库坏块的处理当Oracle数据库出现坏块时,Oracle会在警告日志文件(alert_SID.log)中记录坏块的信息:ORA-01578: ORACLE data block corrupted (file # 7, block # )ORA-01110: data file : /oracle1/oradata/V920/oradata/V816/users01.dbf其中,AFN代表坏块所在数据文件的绝对文件号,代

30、表坏块是数据文件上的第几个数据块。出现这种情况时,应该首先检查是否是硬件及操作系统上的故障导致Oracle数据库出现坏块。在排除了数据库以外的原因后,再对发生坏块的数据库对象进行处理。1 确定发生坏块的数据库对象SELECT tablespace_name,segment_type,owner,segment_nameFROM dba_extents WHERE file_id = AND between block_id AND block_id+blocks-1;2 决定修复方法如果发生坏块的对象是一个索引,那么可以直接把索引DROP掉后,再根据表里的记录进行重建;如果发生坏块的表的记录可

31、以根据其它表的记录生成的话,那么可以直接把这个表DROP掉后重建;如果有数据库的备份,则恢复数据库的方法来进行修复;如果表里的记录没有其它办法恢复,那么坏块上的记录就丢失了,只能把表中其它数据块上的记录取出来,然后对这个表进行重建。3 用Oracle提供的DBMS_REPAIR包标记出坏块exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(,);4 使用Create table as select命令将表中其它块上的记录保存到另一张表上create table corrupt_table_bak asselect * from corrupt_table;5 用DROP

32、TABLE命令删除有坏块的表drop table corrupt_table;6 用alter table rename命令恢复原来的表alter table corrupt_table_bakrename to corrupt_table;7 如果表上存在索引,则要重建表上的索引2.7 数据库备份情况检查2.7.1 检查备份软件的日志如果采用了第三方的备份软件,如:verytas,HP Ominback等,备份过程中都会有日志,查看备份软件的日志,若有错误报告,判断错误类型,然后分别检查备份软件与ORACLE数据库。2.7.2 检查数据库归档日志所有的归档日志都应是当天产生的, 如果存在更早

33、的归档日志, 则说明前次的备份有问题。如果归档目录所在卷已满会导致数据库挂起。2.7.3 控制文件的备份在数据库结构发生变化时,如增加了表空间,增加了数据文件或重做日志文件这些操作,都会造成Oracle数据库控制文件的变化,DBA应及进行控制文件的备份,备份方法是:执行SQL语句:alter database backup controlfile to /home/backup/control.bak;或:alter database backup controlfile to trace;这样会在USER_DUMP_DEST(初始化参数文件中指定)目录下生成创建控制文件的脚本。2.8 数据库

34、连接情况检查2.8.1 检查数据库连接在客户端用字符串方式连接数据库,测试网络连接SQLconnect username/passwordstringConnected2.8.2 检查数据库会话DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。以下的SQL语句列出当前数据库建立的会话情况:select sid,serial#,username,program,machine,status from v$session;输出结果为:SID SERIAL# USERNAME

35、 PROGRAM MACHINE STATUS- - - - - -1 1 ORACLE.EXE WORK3 ACTIVE2 1 ORACLE.EXE WORK3 ACTIVE3 1 ORACLE.EXE WORK3 ACTIVE4 1 ORACLE.EXE WORK3 ACTIVE5 3 ORACLE.EXE WORK3 ACTIVE6 1 ORACLE.EXE WORK3 ACTIVE7 1 ORACLE.EXE WORK3 ACTIVE8 27 SYS SQLPLUS.EXE WORKGROUPWORK3 ACTIVE11 5 DBSNMP dbsnmp.exe WORKGROUPWOR

36、K3 INACTIVE其中,SID 会话(session)的ID号;SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;USERNAME 建立该会话的用户名;PROGRAM 这个会话是用什么工具连接到数据库的;STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;如果DBA要手工断开某个会话,则执行:alter system kill session SID,SERIAL#;注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。2.9 操作系统相关检查2.9.

37、1 检查空间使用情况检查各挂载点的空间使用情况,特别是ORACLE相关的,如:ORACLE软件挂载点,数据库挂载点及归档日志挂载点,如果这些挂载点的使用率达到90以上,就要考虑增加这些文件系统的大小。df -k2.9.2 检查网络状况检查用于ORACLE数据库连接的IP是否正常。ifconfig -a2.9.3 检查内存使用情况#vmstat 5 10查看是否有持续高数值的po和sr,若有说明系统内存分配有问题,请寻求技术支持。注:高数值按经验数量级不应该超过10的三次方,但是不能一概而论,需与系统平衡运行时相比较。2.9.4 检查磁盘I/O瓶颈#sar d 5 2检查是否有异常高的%busy和avque,若有说明系统出现了磁盘I/O瓶颈,请寻求技术支持。注:异常高是指与系统稳定运行后的数值相比较。3 ORACLE数据库每周应检查的项目3.1 查看是否有危害到安全策略的问题根据本系统的安全策略,查看本

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁