您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > ORACLE数据库管理员的职责
ORACLE数据库管理员的职责一.概述ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控:(1).每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,数据库的性能情况,系统资源的使用情况进行检查,发现并解决问题。(2).每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库的安全情况做检查,对数据库对象的状态做检查。(3).每月对表和索引等进行Analyze,检查表空间碎片,寻找数据库性能调整的机会,进行数据库性能调整,查看I/O瓶颈,检查数据增长速度,提出下一步空间管理计划。对ORACLE数据库状态进行一次全面检查。二.每天的工作1确认所有的INSTANCE状态正常登陆到所有数据库或例程,检测ORACLE后台进程:$ps–ef|grepora问题:2检查文件系统的使用(剩余空间)如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。$df–kdf–mdf-h3检查日志文件trace文件记录alert和trace文件中的错误。3.1连接到每个需管理的系统3.2使用’telnet’3.3对每个数据库,cd到bdump目录,通常是$ORACLE_BASE/SID/bdump3.4使用Unix‘tail’命令来查看alert_SID.log文件3.5如果发现任何新的ORA-错误,记录并解决,同时检查重复出现的ORA-错误,记录并仔细研究。grepORA-ALERT_SID.LOG4检查数据库当日备份的有效性对RMAN备份方式:检查第三方备份工具的备份日志以确定备份是否成功。对EXPORT备份方式:检查exp日志文件以确定备份是否成功对其他备份方式:检查相应的日志文件。(检查备份的磁带文档是否成功)5检查数据文件的状态记录状态不是“online”的数据文件,并做恢复Selectfile_namefromdba_data_fileswherestatus='OFFLINE';6检查在表空间中的剩余空间对每一个实例来说,检查在表空间中是否存在有剩余空间来满足当天的预期的需要。当数据库中已有的数据是稳定的,数据日增长的平均数也是可以计算出来,最小的剩余空间至少要能满足每天数据的增长。6.1检查剩余空间SELECTtablespace_name,sum(blocks)asfree_blk,trunc(sum(bytes)/(1024*1024))asfree_m,max(bytes)/(1024)asbig_chunk_k,count(*)asnum_chunksFROMdba_free_spaceGROUPBYtablespace_name/6.2检查剩余空间百分率SELECTtablespace_name,max_m,count_blocksfree_blk_cnt,sum_free_m,to_char(100*sum_free_m/sum_m,'99.99')||'%'ASpct_freeFROM(SELECTtablespace_name,sum(bytes)/1024/1024ASsum_mFROMdba_data_filesGROUPBYtablespace_name),(SELECTtablespace_nameASfs_ts_name,max(bytes)/1024/1024ASmax_m,count(blocks)AScount_blocks,sum(bytes/1024/1024)ASsum_free_mFROMdba_free_spaceGROUPBYtablespace_name)WHEREtablespace_name=fs_ts_name/该语句执行效率很低。7检查回滚段回滚段的状态一般是在线的,除了一些为复杂工作准备的专用段,它一般状态是离线的。7.1你可以用V$ROLLSTAT来查询在线或是离线的回滚段的现在状态selectusn,latch,Extents,writes,hwmsize,statusFromv$rollstat/7.2对于所有回滚段的存储参数及名字,可用DBA_ROLLBACK_SEGS来查询。但是它不如V$ROLLSTAT准确。selectsegment_name,owner,tablespace_name,segment_id,file_id,block_idstatusfromdba_rollback_segs;8识别过分的增长查看数据库中超出资源或是增长速度过大的段,这些段的存储参数需要调整。8.1收集日数据大小的信息,可以用‘ANALYZE5PCT.SQL’。如果你收集的是每晚的信息,则可跳过这一步。BEGINdbms_utility.analyze_schema('&OWNER','ESTIMATE',NULL,5);END;/8.2检查当前的范围。SELECTe.owner,e.segment_type,e.segment_name,count(*)asnr_extents,s.max_extents,to_char(sum(e.bytes)/(1024*1024),'999,999.90')asMBFROMdba_extentse,dba_segmentssWHEREe.segment_name=s.segment_nameGROUPBYe.owner,e.segment_type,e.segment_name,s.max_extentsHAVINGcount(*)&THRESHOLDOR((s.max_extents-count(*))&&THRESHOLD)ORDERBYcount(*)desc8.3查询当前表的大小信息。8.4查询当前索引大小的信息。8.5查询增长趋势。9确定空间的范围如果范围空间对象的NEXT_EXTENT比表空间所能提供的最大范围还要大,那么这将影响数据库的运行。如果我们找到了这个目标,可以用’ALTERTABLESPACECOALESCE’调查它的位置,或加另外的数据文件。运行下面脚本,如果都是正常的,将不返回任何行。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_extentf.big_chunk/10监控数据库性能使用STATSPACK/AWR收集统计数据,生成报告11检查数据库性能记录数据库的cpu使用、内存使用、IO、buffer命中率等等使用vmstat,iostat,glance,top,sar等命令12检查DBSNMP是否在运行检查每个被管理机器的’DBSNMP’进程并将它们记录到日志中。在UNIX中,在命令行中,键入ps–ef|grepdbsnmp,将回看到2个DBSNMP进程在运行。如果没有,重启DBSNMP。snmp是用来采集oracle数据库的相关信息。Oracle数据库系統如果採用典型安裝,除了創建前面介紹的幾個用戶外,另外還自動創建了一個叫做DBSNMP的用戶,該用戶負責咝蠴racle系統的智能代理(IntelligentAgent),該用戶的缺省密碼也是“DBSNMP”。如果忘記修改該用戶的口令,任何人都可以通過該用戶存取数据库系統。現在我們來看一下該用戶具有哪些權限和角色,然來分析一下該用戶對数据库系統可能造成的損失。这个服务在我们的系统里面有没有意义。13将存档日志复制到备用数据库中如果有一个备用数据库,将适当的存档日志复制到备用数据库的期望位置,备用数据库中保存最近期的数据。14日常出现问题的处理开发人员支持,系统的小问题。15晚间的工作大部分的数据库产品将受益于每晚确定的检查进程的运行。收集VOLUMETRIC数据,分析计划和收集数据,更准确的分析计算并保存结果。15.1如果你现在没有作这些的话,用下面的脚本来创建测定体积的表。CREATETABLEutl_vol_facts(table_nameVARCHAR2(30),num_rowsNUMBER,meas_dtDATE)TABLESPACEplatabSTORAGE(INITIAL128kNEXT128kPCTINCREASE0MINEXTENTS1MAXEXTENTSunlimited)/15.2收集晚间数据大小的信息,用下面的脚本。BEGINsys.dbms_utility.analyze_schema('&OWNER','COMPUTE');END;/15.3收集统计结果,下面的脚本。insertintoutl_vol_factsselecttable_name,NVL(num_rows,0)asnum_rows,trunc(last_analyzed)asmeas_dtfromall_tables--orjustuser_tableswhereownerin('&OWNER');--oracomma-separatedlistofowners/Commit;/15.4在空闲的时候检查数据,可能的话,每周或每个月进行,可以用MSEXCEL和ODBC的联接来检查数据和图表的增长16经常查阅DBA用户手册如果有可能的话,要广泛的阅读,包括DBA手册,行业杂志,新闻组或是邮件列表。下面是供应商的网页://://://三.每周的工作1监控数据库对象的空间扩展情况根据本周每天的检查情况找到空间扩展很快的数据库对象,并采取相应的措施----删除历史数据----扩表空间altertablespacenameadddatafile'file'sizesize---调整数据对象的存储参数nextextentpct_increase2监控数据量的增长情况根据本周每天的检查情况找到记录数量增长很快的数据库对象,并采取相应的措施----删除历史数据----扩表空间altertablespacenameadddatafile'file'sizesize3系统健康检查,检查以下内容:initsid.oracontrolfileredologfilearchivingsortareasizetablespace(system,temporary,tablespacefragment)datafiles(autoextend,location)object(numberofextent,nextextent,index)rollbacksegmentlogging&tracing(alert.log,max_dump_file_size,sqlnet)4数据库对象有效性检查4.1检查无效的数据库对象SELECTowner,object_name,object_typeFROMdba_objectsWHEREstatus='INVALID'/4.2检查不起作用的约束SELECTowner,constraint_name,table_name,constraint_type,statusFROMdba_constraintsWHEREstatus='DISABLED'ANDconstraint_type='P'/4.3检查没有主键的表SELECTtable_nameFROMall_tablesWHEREowner='&OWNER'MINUSSELECTtable_nameFROMall_c
本文标题:ORACLE数据库管理员的职责
链接地址:https://www.777doc.com/doc-4526945 .html