《2022年Oracle管理工作手册.doc》由会员分享,可在线阅读,更多相关《2022年Oracle管理工作手册.doc(66页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 ORACLE治理工作手册ORACLE治理工作手册 EAS产品支持部 蒋俊 请留意:本文件只作为产品介绍之用,不属于您与金蝶签署的任何协议。本文件仅包括金蝶既定策略、产品及功能方面的信息,不能以本文件作为要求金蝶履行商务条款、产品策略以及开发义务的依照。本文件内容可能随时变更,恕不另行通知。前 言概述该文档主要目的是降低现场施行人员及用户Oracle数据库的治理难度,提高Oracle数据库技术才能,文档针对Oracle9i、10g两个版本提供了一套完好的Oracle数据库监控、治理的思路、方法步骤,按照该手册进展Oracle数据库的日常工作,能有效地把握Oracle后台数据库的整体运转健康情况
2、,通过搜集相关重要信息分析,能非常好地防备马上出现的系统风险,系统出现征询题后尽快地定位征询题,现场处理一部分常规数据库征询题。对其它专业要求比拟强的数据库征询题,也能为后续Oracle专家深化分析、诊断征询题提供标准、完好的信息。文档按征询题处于的阶段分两部分事前阶段、事中阶段,事前阶段描绘了每天、每周末、每月末针对数据库所需进展的治理工作,如:日常监控,包括有环境监控、数据库运转情况监控、功能监控;日常数据库治理,包括:系统运转快照采集、表空间治理、数据库备份恢复、表、索引统计分析、TOP会话、SQL执行计划信息查看等。涉及有相关图形化治理工具使用方法、数据库自动脚本、命令使用方法。事中阶
3、段描绘了数据库发生征询题时的处理思路,需要搜集哪些相关信息。适用范围适于需求分析、设计、实现和测试、施行所有阶段。适于架构设计师、系统设计师、开发工程师和工程经理。适于EAS产品所有版本。商定符号商定在本文中可能出现以下标志,它们所代表的含义如下。符号说明表示有潜在风险,假如无视这些文本,可能导致操作错误、数据丧失、设备功能降低或不可预知的结果。表示能够协助您获取更多相关信息或提示您通过其它方式也能够获得一样结果。强调或补充说明所描绘的信息。内容商定本处对文中通用信息作如下商定 l $EAS_HOME表示EAS效劳器安装的根目录,即安装过程中输入的本地途径。 l $BOS_HOME表示BOS工
4、具的安装根目录,即安装过程中输入的本地途径。目 录概述2适用范围2商定21 事前阶段61.1 日常工作每天应做工作内容61.1.1 工作内容日常环境监控61.1.2 工作内容日常功能监控81.1.3 工作内容日常数据库治理181.2 日常工作每隔一周工作内容601.2.1 文件整理工作601.2.2 数据库全量备份601.2.3 依照一周数据增长率分析预留数据文件下一周所需增长空间611.2.4 索引使用情况及碎片分析641.2.5 对用户所有表、索引进展统计分析661.2.6 导出表、索引最新统计分析数据721.2.7 功能报告分析731.3 日常工作每月应做工作内容731.3.1 功能全面
5、分析731.3.2 备份数据转备731.4 日常工作数据库第一次安装部署后需做的工作731.4.1 Statspack系统快照采集工具初始化731.4.2 创立统计信息导出表741.4.3 运转EAS用户下所有表、索引统计分析,导出基准统计信息741.4.4 创立Oracle10g 逻辑备份dump文件存放目录752 事中阶段752.1 Oracle数据库出现征询题时需掌握的相关信息752.1.1 征询题病症描绘752.1.2 征询题在什么地点出现752.1.3 征询题在什么时间出现762.1.4 征询题在什么条件下出现762.1.5 征询题涉及的范围762.1.6 征询题是否能重现772.1
6、.7 数据库运转环境软、硬件根本信息772.1.8 Oracle功能相关772.2 Oracle数据库征询题的处理途径771 事前阶段1.1 日常工作每天应做工作内容1.1.1 工作内容日常环境监控1) 系统运转环境监控查看Oracle 数据文件、操纵文件、联机日志及归档日志存放的文件系统或裸设备空间使用情况。重点关注Oracle软件及数据文件所在卷空间使用率:su - oracleAIX、linux查看磁盘空间:df kv HP-UX查看磁盘空间:bdf检测操作系统CPU、内存、交换区、I/O配置情况AIX :CPU、内存、网络、IO、进程、页面交换:topasLinux、HP-UX :CP
7、U、内存、网络、IO、进程、页面交换: top2) 数据库运转情况监控外部检查Oracle实例核心后台进程是否都存在、状态是否正常$ ps -ef|grep ora_查看数据库实例是否能正常连接、访征询SQL select status from v$instance;监听是否正常$ lsnrctl status内部是否有表空间出现毛病SQL select tablespace_name,status from dba_tablespaces;日志文件是否正常SQL Select * from v$log;SQL Select * from v$logfile;1.1.2 工作内容日常功能监控
8、1) 间隔一段时间使用操作系统top等工具监控系统资源动态运转情况CPU、内存、网络、IO、进程、页面交换等主要活动监控: top、topas、vmstat、iostat等2) 间隔一段时间对数据库功能进展监控Oracle 9i 图形工具Performance Manager监控顶层会话及顶层SQL1 打开OEM操纵台,选中要监控的数据库。2 工具中选择 Diagnostic PackPerformance Manager,也可直截了当选中Top Session或Top SQL。Oracle9i 的Performance Manager工具监控内容主要有:内存的使用情况,IO情况,Oracle
9、数据库进程情况,sql语句运转情况等,主界面如下: 能够通过顶层会话下钻获取到相关SQL执行计划等信息,也能够直截了当查看TopSql选项获取当前执行最频繁、耗费资源最多的SQL语句:在数据页签下面列出了监控的选项列表,能够依照各类选项对SQL语句进展排序。选中相关SQL语句,单击右键选择“下钻”到“解释计划”查看执行计划: 执行计划显示如下:Oracle10g OEM工具监控顶层会话及获取SQL详细信息登录Oracle10g OEM,选择功能其它监视链接:顶级活动点击顶级会话中的会话ID 点击SQL ID,查看该顶级会话中SQL的详细信息点击计划标签,查看该SQL语句的详细执行计划阅读该顶层
10、会话对应SQL语句的详细信息字符界面下Sql语句及用户进程信息采集l 通过视图查看当前主要妨碍功能SQL语句语法模版SELECT * FROM (SELECT hash_value,address,substr(sql_text,1,40) sql, list of columns, list of derived values FROM V$SQL or V$SQLXS or V$SQLAREA WHERE list of threshold conditions for columns ORDER BY list of ordering columns DESC)WHERE rownum
11、100000 AND executions 10 ORDER BY buffer_gets DESC)WHERE rownum select sid,serial#,username from v$session;开场跟踪完毕跟踪Exec dbms_system.set_ev(9,437,10046,8,用户名);Exec dbms_system.set_ev(9,437,10046,0,用户名);生成的跟踪文件在user_dump_dest目录下 tkprof工具输出跟踪报表信息tkprof /opt/oracle/admin/ytcw/udump/ytcw_ora_1026.trc /op
12、t/oracle/admin/ytcw/udump/ytcw_ora_1026.prf aggregate=yes sys=no sort=fchela1.1.3 工作内容日常数据库治理1) 一天内间隔一定时间运转检查警告日志文件中最新错误信息Linux、Unix系列平台:vi alertsid.log输入:“/ORA” 回车进展查找Windows平台下使用常用的文本编辑工具即可查看搜索警告日志文件中Oracle错误信息系统运转情况快照采集每天依照实际情况,在以下三个阶段手工运转Statspack快照采集,输出快照报表:l 正常工作压力下l 每天业务最顶峰期l 特别业务运转阶段Oracle 9
13、i自动化脚本方式快照采集创立当前时间点快照如需采集当前数据库运转情况快照,取20分钟时间间隔运转该脚本两次自动执行statspack快照脚本:statspack_auto_exec.sh#!/bin/sh# creator: james_jiang# function: produce statpack snapshotecho Auto Execute Statspack$ORACLE_HOME/bin/sqlplus /nolog EOFconnect perfstat/perfstatexec statspack.snapecho Auto execute statspack succe
14、ssfully!exitEOF输出最近两个快照时间点之间的快照信息报表自动产生最近两个快照时间点统计信息快照脚本:statspack_auto_report.sh#!/bin/sh# creator: james_jiang# function:get statpack reportecho Auto create statspack snapshot!SQLPLUS=$ORACLE_HOME/bin/sqlplusLOGFILE=$ORACLE_HOME/spreport.logREPFILE=$ORACLE_HOME/spreport.lst$ORACLE_HOME/bin/sqlplus
15、 -S perfstat/perfstat EOFSET ECHO OFFSET HEADING OFFSET FEEDBACK OFFSET PAGESIZE 0SET LINESIZE 1000SET TRIMSPOOL ONSPOOL $LOGFILEselect SNAP_ID from (select SNAP_ID from stats$snapshot where INSTANCE_NUMBER=1 order by SNAP_TIME desc) where rownum3;SPOOL OFF;set echo onset feedback onset heading onex
16、itEOFline1=tail -1 $LOGFILEline2=head -1 $LOGFILEecho line1 is$line1echo line2 is$line2$ORACLE_HOME/bin/sqlplus -S perfstat/perfstat connect target sys/oraclermanconfigure controlfile autobackup on;rmanconfigure controlfile autobackup format for device type disk to f:rman_bak%F.ctl;rmanconfigure sna
17、pshot controlfile name to f:rman_baksnap_%F.ctl;Rman备份命令写到一个脚本中,在命令行中执行这个脚本RMAN TARGET / NOCATALOG sys/oracle CMDFILE f: backup_incre_1.rcv LOG f: backup_incre_1.log以下为增量备份脚本,备份同时删除一天前的所有归档日志。该命令可设置为crontab(unix/linux),bat批处理任务(Windows),每天在特定的时间点自动运转。增量备份脚本: backup_incre_1.rcvrun allocate channel c1
18、 type DISK ;backup incremental level = 1 format f:rman_bakincre_1_%d_%s_%p.bak(database include current controlfile);backup format f:rman_bakarch%u_%s_%p.bak(archivelog from time sysdate-1 all delete input);增量备份脚本: backup_incre_1.rcvrun allocate channel c1 type DISK ;backup incremental level = 1 for
19、mat f:rman_bakincre_1_%d_%s_%p.bak(database include current controlfile);backup format f:rman_bakarch%u_%s_%p.bak(archivelog from time sysdate-1 all delete input);显示RMAN备份集信息:RMAN list backupset;手工删除闪回区归档日志oracle 归档日志满处理方法如下,通常 Oracle 或第三方备份软件备份完归档后都应该及时删除已经备份的归档日志,否则归档日志会占用大量磁盘空间#su - oracle$rman t
20、arget / rman DELETE ARCHIVELOG ALL COMPLETED BEFORE SYSDATE-7; #比方删除7天前的所有归档或者也能够手工直截了当通过操作系统 rm 等命令删除归档日志,然后通过以下命令做同步。rman crosscheck archivelog all;rman delete expired archivelog all;上述脚本中涉及的文件途径需依照现场环境详细情况进展相应修正。Oracle10g OEM图形化方式设置RMAN备份自动执行任务RMAN备份主要参数设置登录10g OEM,选择维护备份设置磁盘设备备份途径、并行度指定(依照效劳器cpu
21、个数匹配)备份策略设置主要是指定备份磁盘位置及备份保存时间,以下图设置中为周备份策略考虑,保存最近7天备份。两种RMAN自动调度备份策略1. 使用Oracle建议的自动调度备份策略选择维护调度备份选择“调度Oracle建议的备份”选择备份目的介质,缺省备份到磁盘介质该备份策略内容描绘设置该策略执行数据库全量或增量备份的调度时间2. 自定义RMAN自动备份策略选择“调度定制备份”选择备份类型、形式、归档日志、过时备份清理策略 备份目的介质设置(缺省使用前面“备份设置”中设置的参数)备份自动执行的调度时间设置(通常设置在系统空闲时进展,如晚上12点过后)备份设置信息复查,确定后提交作业通过查看作业
22、能够理解备份任务进展情况。3. 查看当前数据库RMAN备份信息选择维护备份/恢复中“备份报告”能够查看所有备份执行情况注:前面描绘的是数据库全量备份的调度策略设置,增量备份的调度策略设置方法类似,只需要在备份类型中选择增量备份即可。设置完成后EAS数据库自动备份策略为一周一次全量备份,在星期六晚上12点进展。周一到周五每天晚上12点执行一次增量备份,保存最近7天备份,过期备份、归档日志自动删除。Oracle逻辑备份(EXP/EXPDP)操作系统级设置自动备份任务root用户登录操作系统,运转crontab e,添加以下内容:50 23 * * 1-6 su oracle -c /usr/app
23、/oracle/expdp/eas_expdp_MontoSat.sh /dev/null 21#星期一到星期六晚上11点50导出数据50 23 * * 0 su oracle -c /usr/app/oracle/expdp/eas_expdp_Sunday.sh /dev/null 21#星期日11点50开场导出数据,并删除上周一到周六导出的备份数据。逻辑备份脚本逻辑备份脚本 eas_expdp_MontoSat.sh(星期一到星期六)#=# SCRIPT : eas_expdp_MontoSat.sh# AUTHOR : James_jiang# Date : 2007-10-10# R
24、EV : 1.0# PLATFORM : AIX Linux Solaris HpUnix# PURPOSE : This script is used to run logic backup.# Copyright(c) 2007 Kingdee Co.,Ltd.# All Rights Reserved#=DAY=date +%uFILE_TARGET=eas_expdp_expr $DAY.dmpFILE_LOG=eas_expdp_expr $DAY.log export FILE_TARGET FILE_LOG #导出的Oracle实例名,尤其是效劳器存在多个实例时需指定ORACLE
25、_SID=orcl ORACLE_BASE=/home/app/oracleORACLE_HOME=$ORACLE_BASE/oracle/product/10.2.0/db_1export ORACLE_SID ORACLE_BASE ORACLE_HOMEPATH=$PATH:$HOME/bin:$ORACLE_HOME/binexpdp system/oracle schemas=nm directory=eas_expdp_dir dumpfile=$FILE_TARGET logfile=$FILE_LOG job_name=cases_export parallel=4逻辑备份脚本
26、 eas_expdp_Sunday.sh(星期日)sqlplus /as sysdbaSQLcreate directory eas_expdp_dir as /usr/app/oracle/expdp;SQLgrant read,write on directory eas_expdp_dir to salhr;Oracle10g 版本逻辑备份使用expdp工具,在部署导出自动任务前需创立导出dmp文件存放目录并受权给EAS数据库用户:#!/bin/sh#=# SCRIPT : eas_expdp_Sunday.sh# AUTHOR : James_jiang# Date : 2007-10
27、-10# REV : 1.0# PLATFORM : AIX Linux Solaris HpUnix# PURPOSE : This script is used to run logic backup.#=DAY=date +%uFILE_TARGET=eas_expdp_expr $DAY.dmpFILE_LOG=eas_expdp_expr $DAY.log export FILE_TARGET FILE_LOG #导出的Oracle实例名,尤其是效劳器存在多个实例时需指定ORACLE_SID=orcl ORACLE_BASE=/home/app/oracleORACLE_HOME=$
28、ORACLE_BASE/oracle/product/10.2.0/db_1cd /home/oracle/10gautoexpdprm -f eas_expdp*.dmp eas_expdp*.logexpdp system/oracle schemas=nm directory=eas_expdp_dir dumpfile=$FILE_TARGET logfile=$FILE_LOG job_name=cases_export parallel=4附:上述脚本中导出途径 /usr/app/oracle/expdp需依照现场实际情况修正,备份脚本eas_expdp_MontoSat.sh、e
29、as_expdp_Sunday.sh需给予可执行权限。Expdp导出目录需要创立,详细方法请参看本文档四日常工作数据库第一次安装部署后需做的工作。依照监控信息,对需要的表、索引统计分析Oracle9i 自动化脚本方式对表、索引进展统计分析Oracle9i缺省不对表进展改动监控,假如需要依照监控信息来推断是否需对表进展重新统计分析,则需要手工打开表监控开关,如下:打开表监控开关:alter table 表名 monitoring;/监控表信息记录在sys.dba_tab_modifications视图中依照监控信息对用户统计信息分析搜集脚本:dbms_stats.gather_schema_st
30、ats(ownname=nmeas,options=GATHER AUTO)Oracle10g 自动化任务表、索引统计分析方式Oracle10g 缺省自动对所有表变动进展监控,并自动执行所有用户统计分析,能够禁止该缺省方式,在dbconsole中手工配置对特定用户统计分析任务。Oracle10g 禁用、启用缺省数据库自动统计信息分析搜集任务:exec dbms_scheduler.disable(SYS.GATHER_STATS_JOB);exec dbms_scheduler.enable(SYS.GATHER_STATS_JOB);Oracle10g OEM图形工具自定义配置统计分析任务登
31、录OEM,选择治理统计信息治理治理优化程序统计信息选择“操作”搜集优化程序统计信息选择“方案”,点击下一步设置用户统计信息分析自动执行的时间调度,例如中设置的是从2007-03-29开场,每天晚上12点自动执行用户NMEAS统计信息分析。用户统计信息分析任务设置完好栏目显示提交完成任务设置查看数据库中所有自动调度任务执行情况OEM中选择栏目:治理统计信息治理(治理优化程序统计信息)选择相关链接作业调度程序上述配置的自动统计分析任务利用Oracle自动监控来推断哪些对象改动较大,需要重新进展统计分析,然后在调度的时间对其重新进展统计分析。1.2 日常工作每隔一周工作内容1.2.1 文件整理工作l
32、 警告日志、跟踪文件、dump文件清理l 备份文件整理l Statspack统计分析报告整理1.2.2 数据库全量备份1) Oracle 9i RMAN自动化脚本方式全量备份Rman备份命令写到一个脚本中,在命令行中执行这个脚本RMAN TARGET / NOCATALOG sys/oracle CMDFILE e: backup_incre_0.rcv LOG e: backup_incre_0.log数据库完全备份脚本:backup_full_0.rcvrun allocate channel c1 type DISK ;backup incremental level = 0 forma
33、t f:rman_bakincre_0_%d_%s_%p.bak(database include current controlfile);backup format f:rman_bakarch%u_%s_%p.bak(archivelog from time sysdate-1 all delete input);删除过期备份:RMANdelete expired backup;2) Oracle 10g OEM 图形方式创立RMAN全量备份数据库任务详细方法、步骤请参看数据库日常工作每天应做工作内容中RMAN备份部分。1.2.3 依照一周数据增长率分析预留数据文件下一周所需增长空间1)
34、 SQL脚本方式查看数据文件空间使用率查看脚本:SELECT df.tablespace_name, ROUND (df.BYTES / 1024 / 1024) total(MB), ROUND (df.BYTES - x.free) / 1024 / 1024) used(MB), ROUND (x.hw / 1024 / 1024) hwatermarker, ROUND (x.free / 1024 / 1024) free(MB), df.file_name FROM dba_data_files df, (SELECT file_id, MAX (block_id * p.VALU
35、E) hw, SUM (BYTES) free FROM dba_free_space, v$parameter p WHERE p.NAME = db_block_size GROUP BY file_id) x WHERE x.file_id = df.file_idORDER BY 1, 22) Oracle 9i OEM 数据文件治理3) Oracle 10g OEM 数据文件治理1.2.4 索引使用情况及碎片分析1) 表包含的索引及相关列检查1. 表及索引创立、修正日期检查EAS用户登录到数据库,执行语句:SQLSELECT OBJECT_NAME,OBJECT_TYPE,CREAT
36、ED,LAST_DDL_TIME,STATUS FROM USER_OBJECTS;2. 表包含的索引及索引相关列检查SQL SELECT INDEX_NAME,TABLE_NAME,COLUMN_NAME FROM USER_IND_COLUMNS WHERE TABLE_NAME LIKE T_% ORDER BY TABLE_NAME;3. 特定表及其关联索引、列详细信息检查SELECT A.TABLE_NAME,A.INDEX_NAME,COLUMN_NAME,CREATED,LAST_DDL_TIME,LAST_ANALYZED FROM USER_IND_COLUMNS A,USE
37、R_OBJECTS B,USER_INDEXES C WHERE A.INDEX_NAME=B.OBJECT_NAME AND B.OBJECT_NAME=C.INDEX_NAMEAND C.TABLE_NAME IN(,)如需输出语句执行结果信息,可在语句执行前spool tableindex.list,执行完成后再spool off;2) 自动化脚本方式对索引进展碎片分析每周监测一次索引的碎片情况,依照情况制定索引的重建频率以提高索引使用效率。1、产生EAS用户分析索引的脚本:SQLselect analyze index | index_name | VALIDATE STRUCTURE
38、 from user_indexes; 2、执行EAS用户下所有索引分析:SQL analyze index VALIDATE STRUCTURE;.3、基于分析结果,查看索引碎片率:SQL select name,del_lf_rows_len,lf_rows_len,(del_lf_rows_len/lf_rows_len)*100 from index_stats;索引碎片率(%) = (被删除的索引长度/索引总长)*100 4、对碎片率高的索引执行重建整理SQL alter index rebuild;3) 打开索引自动监控开关如数据库中新增加、修正了索引,则能够打开这些索引的自动监控监测索引的使用情况,依照