(企业管理手册)O管理工
作手册
ORACLE管理工作手册
EAS产品支持部蒋俊
请注意:本文件只作为产品介绍之用,不属于您与金蝶签署的任何协议。本文件仅包括金蝶既定策略、产品及功能方面的信
息,不能以本文件作为要求金蝶履行商务条款、产品策略以及开发义务的依据。本文件内容可能随时变更,恕不另行通知。
前言
概述
该文档主要目的是降低现场实施人员及用户 Oracle数据库的管理难度,提高 Oracle数据库
技术能力,文档针对 Oracle9i、10g两个版本提供了一套完整的 Oracle数据库监控、管理的
思路、方法步骤,依照该手册进行 Oracle数据库的日常工作,能有效地把握 Oracle后台数
据库的整体运行健康状况,通过收集相关重要信息分析,能很好地防范即将出现的系统风险,
系统出现问题后尽快地定位问题,现场解决一部分常规数据库问题。对其它专业要求比较强
的数据库问题,也能为后续 Oracle专家深入分析、诊断问题提供规范、完整的信息。
文档按问题处于的阶段分两部分-事前阶段、事中阶段,事前阶段描述了每天、每周末、每
月末针对数据库所需进行的管理工作,如:日常监控,包括有环境监控、数据库运行状况监
控、性能监控;日常数据库管理,包括:系统运行快照采集、表空间管理、数据库备份恢复、
表、索引统计分析、TOP会话、SQL执行计划信息查看等。涉及有相关图形化管理工具使用方
法、数据库自动脚本、命令使用方法。事中阶段描述了数据库发生问题时的处理思路,需要
收集哪些相关信息。
适用范围
适于需求分析、设计、实现和测试、实施所有阶段。
适于架构设计师、系统设计师、开发工程师和项目经理。
适于 EAS产品所有版本。
约定
符号约定
在本文中可能出现下列标志,它们所代表的含义如下。
符号 说明
表示有潜在风险,如果忽视这些文本,可能导致操作错误、
数据丢失、设备性能降低或不可预知的结果。
表示可以帮助您获取更多相关信息或提示您通过其它方式
也可以获得相同结果。
强调或补充说明所描述的信息。
内容约定
本处对文中通用信息作如下约定
$EAS_HOME表示 EAS服务器安装的根目录,即安装过程中输入的本地路径。
$BOS_HOME表示 BOS工具的安装根目录,即安装过程中输入的本地路径。
目录
概述 2
适用范围 2
约定 2
1事前阶段 6
日常工作-每天应做工作内容 6
工作内容-日常环境监控 6
工作内容-日常性能监控 8
工作内容-日常数据库管理 18
日常工作-每隔一周工作内容 60
文件整理工作 60
数据库全量备份 60
根据一周数据增长率分析预留数据文件下一周所需增长空间 61
索引使用情况及碎片分析 64
对用户所有表、索引进行统计分析 66
导出表、索引最新统计分析数据 72
性能报告分析 73
日常工作-每月应做工作内容 73
性能全面分析 73
备份数据转备 73
日常工作-数据库第一次安装部署后需做的工作 73
-系统快照采集工具初始化 73
创建统计信息导出表 74
运行 EAS用户下所有表、索引统计分析,导出基准统计信息 74
创建 Oracle10g逻辑备份 dump文件存放目录 75
2事中阶段 75
数据库出现问题时需掌握的相关信息 75
问题症状描述 75
问题在什么地方出现 75
问题在什么时间出现 76
问题在什么条件下出现 76
问题涉及的范围 76
问题是否能重现 77
数据库运行环境软、硬件基本信息 77
性能相关 77
数据库问题的解决途径 77
1 事前阶段
日常工作-每天应做工作内容
工作内容-日常环境监控
1)系统运行环境监控
查看 Oracle数据文件、控制文件、联机日志及归档日志存放的文件系统或裸设备空间使用情
况。
重点关注 Oracle软件及数据文件所在卷空间使用率:
su-oracle
AIX、linux查看磁盘空间:df–kv
HP-UX查看磁盘空间:bdf
检测操作系统 CPU、内存、交换区、I/O配置状况
AIX:
CPU、内存、网络、IO、进程、页面交换:topas
Linux、HP-UX:
CPU、内存、网络、IO、进程、页面交换:top
2)数据库运行状况监控
外部
检查 Oracle实例核心后台进程是否都存在、状态是否正常
$ps-ef|grepora_
查看数据库实例是否能正常连接、访问
SQL>selectstatusfromv$instance;
监听是否正常
$lsnrctlstatus
内部
是否有表空间出现故障
SQL>selecttablespace_name,statusfromdba_tablespaces;
日志文件是否正常
SQL>Select*fromv$log;
SQL>Select*fromv$logfile;
工作内容-日常性能监控
1)间隔一段时间使用操作系统 top等工具监控系统资源动态运行状况
CPU、内存、网络、IO、进程、页面交换等主要活动监控::top、topas、
vmstat、iostat等
2)间隔一段时间对数据库性能进行监控
Oracle9i图形工具-PerformanceManager监控顶层会话及顶层 SQL
1.打开 OEM控制台,选中要监控的数据库。
2.工具中选择 DiagnosticPack-PerformanceManager,也可直接选中 TopSession或 TopSQL。
Oracle9i的 PerformanceManager工具监控内容主要有:内存的使用情况,IO情况,Oracle
数据库进程情况,sql语句运行情况等,主界面如下:
可以通过顶层会话下钻获取到相关 SQL执行计划等信息,也可以直接查看 TopSql选项获取当
前执行最频繁、消耗资源最多的 SQL语句:
在数据页签下面列出了监控的选项列表,可以根据各类选项对 SQL语句进行排序。
选中相关 SQL语句,单击右键选择“下钻”到“解释计划”查看执行计划:
执行计划显示如下:
Oracle10gOEM工具监控顶层会话及获取 SQL详细信息
登录 Oracle10gOEM,选择性能-其它监视链接:顶级活动
点击顶级会话中的会话 ID
点击 SQLID,查看该顶级会话中 SQL的详细信息
点击计划标签,查看该 SQL语句的详细执行计划
浏览该顶层会话对应 SQL语句的详细信息
字符界面下 Sql语句及用户进程信息采集
通过视图查看当前主要影响性能 SQL语句
语法模版
SELECT*FROM
(SELECThash_value,address,substr(sql_text,1,40)sql,
[listofcolumns],[listofderivedvalues]
FROM[V$SQLorV$SQLXSorV$SQLAREA]
WHERE[listofthresholdconditionsforcolumns]
ORDERBY[listoforderingcolumns]DESC)
WHERErownum<=[numberoftopSQLstatements];
实际举例
SELECT*FROM
(SELECThash_value,address,substr(sql_text,1,40)sql,
buffer_gets,executions,buffer_gets/executions"Gets/Exec"
FROMV$SQLAREA
WHEREbuffer_gets>100000ANDexecutions>10
ORDERBYbuffer_getsDESC)
WHERErownum<=10;
跟踪用户进程获取统计信息
获取要跟踪的用户进程
SQL>selectsid,serial#,usernamefromv$session;
开始跟踪-结束跟踪
_ev(9,437,10046,8,‘用户名');
_ev(9,437,10046,0,‘用户名');
生成的跟踪文件在 user_dump_dest目录下
tkprof工具输出跟踪报表信息
tkprof/opt/oracle/admin/ytcw/udump/
/opt/oracle/admin/ytcw/udump/
aggregate=yessys=nosort=fchela
工作内容-日常数据库管理
1)一天内间隔一定时间运行
检查警告日志文件中最新错误信息
Linux、Unix系列平台:
输入:“/ORA-”回车进行查找
Windows平台下使用常用的文本编辑工具即可查看搜索警告日志文件中 Oracle错误信息
系统运行状况快照采集
每天根据实际情况,在以下三个阶段手工运行 Statspack快照采集,输出快照报表:
正常工作压力下
每天业务最高峰期
特殊业务运行阶段
Oracle9i自动化脚本方式快照采集
创建当前时间点快照
如需采集当前数据库运行状况快照,取 20分钟时间间隔运行该脚本两次
自动执行 statspack快照脚本:
#!/bin/sh
#creator:james_jiang
#function:producestatpacksnapshot
echo"AutoExecuteStatspack"
$ORACLE_HOME/bin/sqlplus/nolog<<EOF
connectperfstat/perfstat
echo"Autoexecutestatspacksuccessfully!"
exit
EOF
输出最近两个快照时间点之间的快照信息报表
自动产生最近两个快照时间点统计信息快照脚本:
#!/bin/sh
#creator:james_jiang
#function:getstatpackreport
echo"Autocreatestatspacksnapshot!"
SQLPLUS=$ORACLE_HOME/bin/sqlplus
LOGFILE=$ORACLE_HOME/
REPFILE=$ORACLE_HOME/
$ORACLE_HOME/bin/sqlplus-Sperfstat/perfstat<<EOF
SETECHOOFF
SETHEADINGOFF
SETFEEDBACKOFF
SETPAGESIZE0
SETLINESIZE1000
SETTRIMSPOOLON
SPOOL$LOGFILE
selectSNAP_IDfrom(selectSNAP_IDfromstats\$snapshotwhereINSTANCE_NUMBER=1orderbySNAP_TIMEdesc)whererownum<3;
SPOOLOFF;
setechoon
setfeedbackon
setheadingon
exit
EOF
line1=`tail-1$LOGFILE`
line2=`head-1$LOGFILE`
echo"line1is"$line1
echo"line2is"$line2
$ORACLE_HOME/bin/sqlplus-Sperfstat/perfstat<<EOF
definebegin_snap=$line1
defineend_snap=$line2
definereport_name=$REPFILE
@?/rdbms/admin/
echo"Autocreatestatspacksnapshotsuccessfully!"
exit
EOF
Oracle10gOEM图形管理工具实现系统快照采集
自动化脚本执行快照收集主要是 Oracle9i版本的使用方式,Oracle10gOEM图形工具自动执行
快照采集,缺省 1小时收集一次,可以根据实际情况修改收集的间隔时间、降低对系统性能
的影响。
系统快照自动收集时间、间隔、保留期限设置
登录 Oracle10gOEM,选择管理-自动工作量档案库
点击“编辑”,查看或修改快照收集时间及间隔
Oracle10g缺省系统快照每隔一小时执行一次,保留最近 15天的所有快照,可根据实际情况
修改调整,点确定后保存所做修改。
创建当前时间点系统快照
点击管理快照和保留的快照集下面的当前快照 ID
选择创建保留快照集,点击创建
选择“是”开始执行快照创建
快照在当前时间点成功创建
输出两个快照时间点之间的快照信息报表
修改原来“创建保留的快照集”为“查看报告”,选择起始快照号,点击“创建”
选择结束快照号,点击“确定”
开始创建两个快照时间点之间的所有统计信息报告
另存该输出快照报告为 HTML文件
注:生成的统计信息快照报告放在专门目录下,定期对其整理、分析,作为 EAS数据库运行
整体状况及问题诊断的依据。
2)每天工作结束后、系统空闲时运行
表空间使用率
SQL脚本方式查看
脚本:
_name,ROUND(
ROUND(
ROUND(
ROUND(_free/1024/1024)"free_max(MB)",_tfragment
FROM(SELECTtablespace_name,SUM(BYTES)total
FROMdba_data_files
GROUPBYtablespace_name)a,
(SELECTtablespace_name,SUM(BYTES)free,MAX(BYTES)max_free,
COUNT(BYTES)free_t
FROMdba_free_space
GROUPBYtablespace_name)b
_name=_name
图形界面查看表空间使用率
Oracle9iOEM表空间管理
Oracle10gOEM表空间管理
登录 OEM后选择管理-表空间
数据库备份及日志清理
数据库备份主要提供两种方式,物理备份及逻辑备份。物理备份主要使用 OracleRMAN工具,
逻辑备份主要使用 Oracle导出工具 Exp和 Expdp。
Oracle物理备份(RMAN)
Oracle9iRMAN自动化脚本增量备份
RMAN备份环境初始化设置:
rmannocatalog
rman>connecttargetsys/oracle
rman>configurecontrolfileautobackupon;
rman>configurecontrolfileautobackupformatfordevicetypediskto'f:\rman_bak\%';
rman>configuresnapshotcontrolfilenameto'f:\rman_bak\snap_%';
Rman备份命令写到一个脚本中,在命令行中执行这个脚本
RMANTARGET/NOCATALOGsys/oracleCMDFILEf:\:\
以下为增量备份脚本,备份同时删除一天前的所有归档日志。
该命令可设置为 crontab(unix/linux),bat批处理任务(Windows),每天在特定的时间点
自动运行。
增量备份脚本:
run
{allocatechannelc1typeDISK;
backupincrementallevel=1format'f:\rman_bak\incre_1_%d_%s_%'
(databaseincludecurrentcontrolfile);
backupformat'f:\rman_bak\arch%u_%s_%'
(archivelogfromtime'sysdate-1'alldeleteinput);
}
增量备份脚本:
run
{allocatechannelc1typeDISK;
backupincrementallevel=1format'f:\rman_bak\incre_1_%d_%s_%'
(databaseincludecurrentcontrolfile);
backupformat'f:\rman_bak\arch%u_%s_%'
(archivelogfromtime'sysdate-1'alldeleteinput);
}
显示 RMAN备份集信息:
RMAN>listbackupset;
手工删除闪回区归档日志
oracle归档日志满处理方法如下,通常 Oracle或第三方备份软件备份完归档后都应该及时删除已经备份的归档日志,否则
归档日志会占用大量磁盘空间
#su-oracle
$rmantarget/
rman>DELETEARCHIVELOGALLPLETEDBEFORE'SYSDATE-7';#比如删除 7天前的所有归档
或者也可以手工直接通过操作系统 rm等命令删除归档日志,然后通过以下命令做同步。
rman>crosscheckarchivelogall;
rman>deleteexpiredarchivelogall;
上述脚本中涉及的文件路径需根据现场环境具体情况进行相应修改。
Oracle10gOEM图形化方式设置 RMAN备份自动执行任务
RMAN备份主要参数设置
登录 10gOEM,选择维护-备份设置
磁盘设备备份路径、并行度指定(根据服务器 cpu个数匹配)
备份策略设置
主要是指定备份磁盘位置及备份保留时间,下图设置中为周备份策略考虑,保留最近 7天备
份。
两种 RMAN自动调度备份策略
1. 使用 Oracle建议的自动调度备份策略
选择维护-调度备份
选择“调度 Oracle建议的备份”
选择备份目标介质,缺省备份到磁盘介质
该备份策略内容描述
设置该策略执行数据库全量或增量备份的调度时间
2. 自定义 RMAN自动备份策略
选择“调度定制备份”
选择备份类型、模式、归档日志、过时备份清理策略
备份目标介质设置(缺省使用前面“备份设置”中设置的参数)
备份自动执行的调度时间设置(通常设置在系统空闲时进行,如晚上 12点过后)
备份设置信息复查,确定后提交作业
通过查看作业可以了解备份任务进展情况。
3. 查看当前数据库 RMAN备份信息
选择维护-备份/恢复中“备份报告”可以查看所有备份执行情况
注:前面描述的是数据库全量备份的调度策略设置,增量备份的调度策略设置方法类似,只
需要在备份类型中选择增量备份即可。设置完成后 EAS数据库自动备份策略为一周一次全量
备份,在星期六晚上 12点进行。周一到周五每天晚上 12点执行一次增量备份,保留最近 7
天备份,过期备份、归档日志自动删除。
Oracle逻辑备份(EXP/EXPDP)
操作系统级设置自动备份任务
root用户登录操作系统,运行 crontab–e,添加以下内容:
5023**1-6su–oracle-c/usr/app/oracle/expdp/>/dev/null2>&1
#星期一到星期六晚上 11点 50导出数据
5023**0su–oracle-c/usr/app/oracle/expdp/>/dev/null2>&1
#星期日 11点 50开始导出数据,并删除上周一到周六导出的备份数据。
逻辑备份脚本
逻辑备份脚本 (星期一到星期六)
#====================================================
#SCRIPT:
#AUTHOR:James_jiang
#Date:2007-10-10
#REV:
#PLATFORM:AIXLinuxSolarisHpUnix
#PURPOSE:Thisscriptisusedtorunlogicbackup.
#Copyright(c)2007KingdeeCo.,Ltd.
#AllRightsReserved
#=====================================================
DAY=`date+%u`
FILE_TARGET=eas_expdp_`expr$DAY'.dmp
FILE_LOG=eas_expdp_`expr$DAY`.log
exportFILE_TARGETFILE_LOG
#导出的 Oracle实例名,尤其是服务器存在多个实例时需指定
ORACLE_SID=orcl
ORACLE_BASE=/home/app/oracle
ORACLE_HOME=$ORACLE_BASE/oracle/product/
exportORACLE_SIDORACLE_BASEORACLE_HOME
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
expdpsystem/oracleschemas=nmdirectory=eas_expdp_dirdumpfile=$FILE_TARGETlogfile=$FILE_LOGjob_name=cases_exp
ortparallel=4
逻辑备份脚本 (星期日)
sqlplus"/assysdba"
SQL>createdirectoryeas_expdp_diras'/usr/app/oracle/expdp';
SQL>grantread,writeondirectoryeas_expdp_dirtosalhr;
Oracle10g版本逻辑备份使用 expdp工具,在部署导出自动任务前需创建导出 dmp文件存放目
录并授权给 EAS数据库用户:
#!/bin/sh
#=====================================================
#SCRIPT:
#AUTHOR:James_jiang
#Date:2007-10-10
#REV:
#PLATFORM:AIXLinuxSolarisHpUnix
#PURPOSE:Thisscriptisusedtorunlogicbackup.
#=====================================================
DAY=`date+%u`
FILE_TARGET=eas_expdp_`expr$DAY`.dmp
FILE_LOG=eas_expdp_`expr$DAY`.log
exportFILE_TARGETFILE_LOG
#导出的 Oracle实例名,尤其是服务器存在多个实例时需指定
ORACLE_SID=orcl
ORACLE_BASE=/home/app/oracle
ORACLE_HOME=$ORACLE_BASE/oracle/product/
cd/home/oracle/10gautoexpdp
rm-feas_expdp*.dmpeas_expdp*.log
expdpsystem/oracleschemas=nmdirectory=eas_expdp_dirdumpfile=$FILE_TARGETlogfile=$FILE_LOGjob_name=cases_exp
ortparallel=4
附:上述脚本中导出路径/usr/app/oracle/expdp需根据现场实际情况修改,备份脚本
、需赋予可执行权限。Expdp导出目录需要创
建,具体方法请参看本文档四《日常工作-数据库第一次安装部署后需做的工作》。
根据监控信息,对需要的表、索引统计分析
Oracle9i自动化脚本方式对表、索引进行统计分析
Oracle9i缺省不对表进行改动监控,如果需要根据监控信息来判断是否需对表进行重新统计
分析,则需要手工打开表监控开关,如下:
打开表监控开关:
altertable表名 monitoring;//监控表信息记录在 _tab_modifications视图中
根据监控信息对用户统计信息分析收集脚本:
_schema_stats(ownname=>'nmeas',options=>'GATHERAUTO')
Oracle10g自动化任务表、索引统计分析方式
Oracle10g缺省自动对所有表变动进行监控,并自动执行所有用户统计分析,可以禁止该缺省
方式,在 dbconsole中手工配置对特定用户统计分析任务。
Oracle10g禁用、启用缺省数据库自动统计信息分析收集任务:
('_STATS_JOB');
('_STATS_JOB');
Oracle10gOEM图形工具自定义配置统计分析任务
登录 OEM,选择管理-统计信息管理-管理优化程序统计信息
选择“操作”-搜集优化程序统计信息
选择“方案”,点击下一步
设置用户统计信息分析自动执行的时间调度,示例中设置的是从 2007-03-29开始,每天晚上
12点自动执行用户 NMEAS统计信息分析。
用户统计信息分析任务设置完整栏目显示
提交完成任务设置
查看数据库中所有自动调度任务执行情况
OEM中选择栏目:管理-统计信息管理(管理优化程序统计信息)
选择相关链接-作业调度程序
上述配置的自动统计分析任务利用 Oracle自动监控来判断哪些对象改动较大,需要重新进行
统计分析,然后在调度的时间对其重新进行统计分析。
日常工作-每隔一周工作内容
文件整理工作
警告日志、跟踪文件、dump文件清理
备份文件整理
Statspack统计分析报告整理
数据库全量备份
1)Oracle9iRMAN自动化脚本方式全量备份
Rman备份命令写到一个脚本中,在命令行中执行这个脚本
RMANTARGET/NOCATALOGsys/oracleCMDFILEe:\:\
数据库完全备份脚本:
run
{allocatechannelc1typeDISK;
backupincrementallevel=0format'f:\rman_bak\incre_0_%d_%s_%'
(databaseincludecurrentcontrolfile);
backupformat'f:\rman_bak\arch%u_%s_%'
(archivelogfromtime'sysdate-1'alldeleteinput);
}
删除过期备份:
RMAN>deleteexpiredbackup;
2)Oracle10gOEM图形方式创建 RMAN全量备份数据库任务
具体方法、步骤请参看数据库日常工作-每天应做工作内容中 RMAN备份部分。
根据一周数据增长率分析预留数据文件下一周所需增长空间
1)SQL脚本方式查看
数据文件空间使用率查看脚本:
_name,ROUND(
ROUND(()/1024/1024)"used(MB)",
ROUND(
ROUND(
FROMdba_data_filesdf,
(SELECTfile_id,MAX(block_id*)hw,SUM(BYTES)free
FROMdba_free_space,v$parameterp
='db_block_size'
GROUPBYfile_id)x
_id=_id
ORDERBY1,2
2)Oracle9iOEM数据文件管理
3)Oracle10gOEM数据文件管理
索引使用情况及碎片分析
1)表包含的索引及相关列检查
1. 表及索引创建、修改日期检查
EAS用户登录到数据库,执行语句:
SQL>SELECTOBJECT_NAME,OBJECT_TYPE,CREATED,LAST_DDL_TIME,STATUSFROMUSER_OBJECTS;
2. 表包含的索引及索引相关列检查
SQL>SELECTINDEX_NAME,TABLE_NAME,COLUMN_NAMEFROMUSER_IND_COLUMNSWHERETABLE_NAMELIKE'T_%'ORDERBYTABLE_NAME;
3. 特定表及其关联索引、列详细信息检查
_NAME,_NAME,COLUMN_NAME,CREATED
,LAST_DDL_TIME,LAST_ANALYZEDFROMUSER_IND_COLUMNSA,USER_OBJECTSB,_NAME=_NAM
_NAME=_NAME
_NAMEIN('','')
如需输出语句执行结果信息,可在语句执行前,执行完成后再spooloff;
2)自动化脚本方式对索引进行碎片分析
每周监测一次索引的碎片情况,根据情况制定索引的重建频率以提高索引使用效率。
1、产生 EAS用户分析索引的脚本:
SQL>select'analyzeindex'||index_name||'VALIDATESTRUCTURE'fromuser_indexes;
2、执行 EAS用户下所有索引分析:
SQL>analyzeindex<index_name>VALIDATESTRUCTURE;
……..
3、基于分析结果,查看索引碎片率:
SQL>selectname,del_lf_rows_len,lf_rows_len,(del_lf_rows_len/lf_rows_len)*100fromindex_stats;
索引碎片率(%)=(被删除的索引长度/索引总长)*100
4、对碎片率高的索引执行重建整理
SQL>alterindex<索引名>rebuild;
3)打开索引自动监控开关
如数据库中新增加、修改了索引,则可以打开这些索引的自动监控
监测索引的使用情况,根据使用情况,删除未使用的索引,并添加能提高查询和处理性能的索引。
SQL>alterindex<索引名>monitoringusage;
SQL>alterindex<索引名>nomonitoringusage;
SQL>selectindex_name,usedfromv$object_usage;
对用户所有表、索引进行统计分析
1)查询 EAS用户所有表、索引的最新统计分析时间
表:
SQL>selecttable_name,last_analyzedfromuser_tablesorderby2;
索引:
SQL>selecttable_name,index_name,last_analyzedfromuser_indexesorderby1,3
last_analyzed字段显示的日期太老,则表明该表或索引最近未做统计分析,如果恰好最近大
量更新、导入或删除了记录,需要重新对其执行统计分析。
2)自动化脚本方式对所有表、索引统计分析
对用户所有对象进行完整统计信息分析收集脚本:
_schema_stats(ownname=>'nmeas',method_opt=>'FORALLI
NDEXEDCOLUMNSSIZEauto',estimate_percent=>100,degree=>
ULT_DEGREE,cascade=>true)
9i需(加入 crontab或 bat任务)
3)Oracle10gOEM图形化自定义对所有表、索引统计分析的自动化调度任务
登录 OEM,选择管理-统计信息管理-管理优化程序统计信息-“操作”-搜集优化程序统计信
息
范围选项方案中选择“定制选项”
添加用来做统计信息收集的 EAS用户
配置周统计信息收集 Oracle相关参数
配置周统计信息收集任务执行的调度时间(下图中配置的为每周星期六晚上 12点自动执行统
计信息搜集)
浏览周统计信息收集任务配置的完整信息
提交完成周统计信息收集任务配置
注:每周末 EAS用户下所有表、索引通过上述任务执行完整的统计分析。
导出表、索引最新统计分析数据
将导出的统计分析数据导入测试库,可以在测试库重新构建性能关键或所有 sql语句执行计
划、与基准执行计划进行比较。
导出用户当前统计信息:
_schema_stats('nmeas','stats_export')
存储导出信息的表 stats_export需在安装部署 EAS后台数据库时创建。
可以考虑与周统计信息收集放在同一 job中。
性能报告分析
就一周来的 statspack报告进行整理、分析,主要关注:
数据库整体性能状况指标
数据库主要等待事件
最消耗 CPU、内存资源、I/O的 SQL语句
日常工作-每月应做工作内容
性能全面分析
1)全面分析一次 STATSPACK报告
数据库主要性能指标
数据库主要等待事件
最消耗 CPU、内存资源、I/O的 SQL语句
2)空间使用增长的全面分析
确定是否需要扩充存储空间
考虑预留足够下个月使用的空间
备份数据转备
将一个月以来的 Rman备份文件打包,转存到外部存储介质,有条件最好存放异地。
日常工作-数据库第一次安装部署后需做的工作
Statspack-系统快照采集工具初始化
Oracle9i自动化脚本方式初始化 Statspack工具
安装 statspack工具
SQL>@?/rdbms/admin/spcreate
创建用户 perfstat
要求输入口令:perfstat
要求输入表空间:users
及临时表空间:temp
……创建完成。
Oracle10gOEM图形化系统快照采集不用进行 Statspack初始化
创建统计信息导出表
创建用户统计信息导出表:
_stat_table('nmeas','stats_export')
运行 EAS用户下所有表、索引统计分析,导出基准统计信息
对用户所有对象进行完整统计信息分析收集脚本:
_schema_stats(ownname=>'nmeas',method_opt=>'FORALLINDEXEDSIZEauto',
estimate_percent=>_sample_size,degree=>_DEGREE,cascade=>true)
导出用户当前统计信息:
_schema_stats('nmeas','stats_export')
创建 Oracle10g逻辑备份 dump文件存放目录
Oracle用户登录操作系统,执行:
sqlplus"/assysdba"
SQL>createdirectoryeas_expdp_diras'/usr/app/oracle/expdp';
SQL>grantread,writeondirectoryeas_expdp_dirtoeas用户名;
目录/usr/app/oracle/expdp根据实际环境修改。
2 事中阶段
既使按规范操作手册对数据库进行日常监控、管理,也不能避免数据库运行过程中产生各式
各样的问题,这些问题涉及的原因方方面面,因此,在出现问题的事中阶段关键是收集、掌
握问题发生时所有相关信息并对其进行分析,准确地定位问题,找出最好的解决办法。
Oracle数据库出现问题时需掌握的相关信息
问题症状描述
返回的错误代码及描述信息:
EAS应用返回“ORA-”错误信息
警告日志文件-出现“ORA-”错误信息
问题在什么地方出现
安装 db的哪一步
备份、恢复到哪一步报错
应用程序运行时报错
应用程序连接报错
数据库正常启动、关闭报错
数据库正常使用报错(日志文件)
问题在什么时间出现
一段时间内持续出现
某个特定时间点出现
问题在什么条件下出现
硬、软件升级,更新补丁后
批处理作业在运行导致
操作系统存储进行改动
反病毒软件运行
业务高峰期(并发用户数多少,此时是否有大量用户在做报表、计算等复杂
业务)
问题涉及的范围
个别系统或区域
相关的所有系统或区域
问题是否能重现
数据库运行环境软、硬件基本信息
操作系统平台版本、补丁号
数据库版本、补丁号
第三方软件版本、补丁号
CPU、内存、交换区配置
存储配置及空间使用率
Oracle性能相关
如出现 Oracle数据库整体性能下降、某功能响应时间过长甚至没反应等性能问题,除了需了
解上述的信息外,还需要进行额外信息收集。
Oracle数据库这段时间系统运行快照报告
定位该功能主要 sql后,导出及相关表、索引结构及统计数据
注:该信息收集的方法、步骤请参看第一章相关章节
Oracle数据库问题的解决途径
现场对问题进行分析,结合数据库相关知识、经验积累解决
参看 Oracle相关技术手册解决
通过电话、EMAIL等方式咨询各类 Oracle专家解决