5 系统维护 5.1 Solaris 系统 涉及的服务器 Account1(218.29.0.239), Account2(218.29.0.240), Oradb1(218.29.0.244) ,Oradb2(218.29.0.245) 5.1.1 系统概况 1. 操作系统基本信息: uname -a 将依次显示 操作系统名称,hostname,操作系统大版本信息,操作系统小版本信息,硬件类型,cpu类型,平台信息。 2. 内核信息:修改/etc/system 文件更改缺省的内核参数,modinfo显示模块信息,sysdef显示驱动和内核参数信息。 3. CPU 信息:/usr/sbin/psrinfo -v 显示cpu 状态,数量,cpu类型和主频。 4. 内存信息:prtconf | grep "Memory size" 显示内存大小。 5. 硬盘/光驱信息:iostat -En 显示硬盘和光驱的硬件地址,各种状态信息,型号及硬盘大小。可以通过该命令检查是否出现过各类错误。 6. 网卡信息:ifconfig -a ,显示网卡名称,状态,最大传输单元mtu,ip 地址,子网掩码,广播地址。 7. HA 信息: 8. 网络信息:netstat -rn 显示静态路由和缺省路由。 9. 包pkg 信息 :pkginfo -l pkgname。通过它判定某个pkg 是否安装,相关的还有pkgadd,pkgrm,pkgchk。 10. 补丁patch 信息: showrev -p 。安装某些软件需要特定的patch,通过它判断。 11. 文件系统信息: df -k 监测capacity 判断是否出现空间不足。 12. 用户信息:who 显示当前在线用户。whodo 显示当前用户进行的操作。 通过useradd,groupadd或admintool 进行用户的管理。id 显示当前用户的login name,login id, group name group name。 5.1.2系统监控 1. cpu 性能监控 :vmstat /mpstat 和sar ,vmstat 和sar 在SMP系统中显示汇总信息,而mpstat 可以显示每颗CPU的负载。vmstat 监控procs 下的r和b 数目,它反映目前处于运行和阻滞状态的进程数目,如果r数目长期大于cpu 数目同时cpu 下的us+sy >80,表示cpu处理能力不足。 2. 内存监控: vmstat ,监控memory 下的free和page下的pi/po,pi/po反映每秒钟以k为单位换进/换出的数量。如果free的数目很小同时pi/po数目长时间大于0 ,则表示内存不足。 3. 硬盘监控:iostat -d 和sar -d ,可以看到每块硬盘及硬盘的每个分区的工作情况 4. 交换区监控:swap -l 和swap -s ,应尽量将交换区的放置在负载较轻的硬盘上。同时交换区的使用百分比不应过高。 5. HA 系统监控: 6. 网络监控: netstat -in 显示每块网卡的工作负载情况。Ipkts/Opkts发送包和接受包的情况。Ierrs/oerrs,collis 表示发生的错误和冲突。 Ierrs/Ipkts或Oerrs/Opkts >2%,表示网络冲突严重。 7. 端口监控:监控某个服务是否启动或正常运行, netstat -an |grep portnum 或tcpdump |grep portnum。 8. 硬件故障诊断:/usr/platform/`uname -m`/sbin/prtdiag -v 通过输出结果判定有无硬件故障。 9. syslogd日志监控,, syslogd后台进程将系统运行中的信息写入 /var/adm/messages 文件中,通过它来监控有无异常的软硬件错误信息的出现。 较早一点的信息存在同一目录下的messages.0,message.1 文件中。 10. mail 监控:某些用户通过crontab 定时执行任务,任务完成后,cron进程会给用户发mail,通过察看mail 判断任务是否完成。在系统出异常的情况下,syslogd会发给root用户mail。因此root 用户的mail需要特别注意。 11. 进程监控:通过ps,prstat 命令或/usr/dt/bin/sdtprocess 工具监控特别消耗资源的进程。sdtprocess是图形工具,可以按照cpu和mem的使用及执行时间排序。prstat 统计系统的活动进程并按需要的顺序排序。 12. 系统运行时间监控 :uptime衡量一个机器开时长及系统负载的命令。uptime 显示的时间越大,说明机器越稳定。 13. 系统运行级别监控:who -r 显示当前机器的运行级。
5.2 Linux 系统 涉及的前端机:Fep1(218.29.0.227), Fep2(218.29.0.228), Fep3(218.29.0.229), Fep4(218.29.0.230), Fep5(218.29.0.231), Fep6(218.29.0.232), Fep7(218.29.0.233),Fep8(218.29.0.234),Fep9(218.29.0.235),Fep10(218.29.0.236),Fep11(218.29.0.237),Fep12(218.29.0.238) 5.2.1系统概况 1. 操作系统基本信息: uname -a 2. 内核信息:/proc/sys/kernel 目录下的文件记录各个内核参数,modinfo显示模块信息,sysdef显示驱动和内核参数信息。 3. CPU 信息:。 4. 内存信息:prtconf | grep "Memory size" 显示内存大小。 5. 硬盘/光驱信息:。 6. 网卡信息:ifconfig -a ,显示网卡名称,状态,最大传输单元mtu,ip 地址,子网掩码,广播地址。 7. 网络信息:netstat -rn 显示静态路由和缺省路由。 8. 包pkg 信息 :rpm(Redhat Package Manager)。通过它判定某个pkg 是否安装,rpm -q 查询,rpm -i 安装 9. 补丁patch 信息:文件系统信息: df -k 监测capacity 判断是否出现空间不足。 10. 用户信息:who 显示当前在线用户。通过KDE的user manager工具添加用户。id 显示当前用户的login name,login id, group name group name。 5.2.1系统监控 1. Cpu 性能监控 :vmstat和sar 。vmstat 监控procs 下的r和b 数目,它反映目前处于运行和阻滞状态的进程数目,如果r数目长期大于cpu 数目同时cpu 下的us+sy >80,表示cpu处理能力不足。 2. 内存监控: vmstat ,监控memory 下的free和page下的pi/po,pi/po反映每秒钟以k为单位换进/换出的数量。如果free的数目很小同时pi/po数目长时间大于0 ,则表示内存不足。 3. 硬盘监控:iostat -d 和sar -d 4. 交换区监控swap -l 5. 网络监控 netstat -in 6. 端口监控:监控某个服务是否启动 netstat -an |grep portnum 或tcpdump |grep portnum 7. 硬件故障诊断:。 8. syslogd日志监控,, syslogd后台进程将系统运行中的信息写入 /var/adm/messages 文件中,通过它来监控有无异常的软硬件错误信息的出现。 较早一点的信息存在同一目录下的messages.0,message.1 文件中。 9. mail 监控:某些用户通过crontab 定时执行任务,任务完成后,cron进程会给用户发mail,通过察看mail 判断任务是否完成。在系统出异常的情况下,syslogd会发给root用户mail。因此root 用户的mail需要特别注意。 10. 进程监控:通过ps 或top监控特别消耗资源的进程。
6.数据库维护 6.1 数据库的安装 6.1.1 操作系统的准备工作 1. 内核参数的修改 编辑修改/etc/system 文件 set shmsys:shminfo_shmmax=4294967295 set shmsys:shminfo_shmmin=1 set shmsys:shminfo_shmmni=100 set shmsys:shminfo_shmseg=10 set semsys:seminfo_semmns=2000 set semsys:seminfo_semmsl=1000 set semsys:seminfo_semmni=100 set semsys:seminfo_semopm=100 set semsys:seminfo_semvmx=32767 2. 检查需要的操作系统patch 通过sunsolve.sun.com 上下载特定的版本的patch集并安装,可以满足Oracle 的安装需要。 3. 操作系统用户/组的添加 l groupadd dba l groupadd oinstall l useradd -c "Oracle DBA" -d /home/oracle -g oinstall -G dba l 修改/etc/passwd文件 ,更改用户登陆shell 或其他信息 4. 用户环境变量的设定 6.1.2 数据库的安装 6.1.3数据库patch 安装 1. Patch 下载:Oracle 数据库的patch 从Oracle的metalink网站下载,登录成功后,在patch页面中的Product Family下拉框中选择"Oracle Databse",Product 下拉框中选择"RDBMS Server";Release 下拉框中 选择"Oracle 8.1.7.4";Platform 下拉框中选择"Sun Solaris OS( SPARC) 64-bit",Language下拉框中选择"American English (US)" ,Limit Search to下拉框中选择"Latest Product Patches or Minipacks",点击Submit提交。在随后出现的页面中点击Download下载patch。 2. Patch 安装:Patch 下载后首先需要解压缩, 安装与数据库安装方法类似,启动runInstaller安装程序,选择解压缩完成后patch目录下的product文件进行安装。特别注意patch安装时,数据库必须处于正常关闭状态。 3. 安装完成后检查:select * from v$version; 检查各个产品的版本号是否从8.1.7.0升级成为8.1.7.4。 6.2数据库基本信息汇总 1. 版本信息 SQL>select * from v$version; 2. 数据库名称,归档方式 状态 SQL> col name format a12 SQL>select name,LOG_MODE,open_mode from v$database; 3. 数据库安装选项 SQL>col parameter format a50 SQL>select * from v$option;
4. 数据库文件包括三类:控制文件control file, 日志文件log file , 数据文件datafile l 控制文件 SQL> select name from v$controlfile; l 日志文件名称及大小 col group# format 999 heading 'Group' col member format a45 heading 'Member' justify c col status format a10 heading 'Status' justify c col archived format a10 heading 'Archived' col fsize format 999 heading 'Size|(MB)' select l.group#, member, archived, l.status, (bytes/1024/1024) fsize from v$log l, v$logfile f where f.group# = l.group# order by 1 ; l.数据文件名称,所在表空间及大小 col FILE_NAME format a50 heading 'DataFile Name' col tablespace_name format a18 heading 'Related Tablespace' select substr(FILE_ID,1,3) "ID#", FILE_NAME, TABLESPACE_NAME, BYTES/(1024*1024) "M", STATUS from sys.dba_data_files where tablespace_name<>'PERFSTAT' order by TABLESPACE_NAME, FILE_NAME; 5.表空间信息(大小 剩余空间 使用百分比) SELECT dba.tablespace_name tablespace, nvl(ROUND (used.bytes/(1024*1024), 0),0) "USED MB", nvl(ROUND (free.bytes/(1024*1024), 0),0) "FREE MB", ROUND ((nvl(used.bytes, 0)+nvl(free.bytes, 0))/(1024*1024), 0) total --, --nvl(ROUND (used.bytes/(1024*1024), 0),0)/ROUND ((nvl(used.bytes, 0)+nvl(free.bytes, 0))/(1024*1024), 0) rate from dba_tablespaces dba, (select tablespace_name, sum(bytes) bytes from dba_segments group by tablespace_name) used, (select tablespace_name, sum(bytes) bytes from dba_free_space Group by tablespace_name) free where dba.tablespace_name = used.tablespace_name (+) and dba.tablespace_name = free.tablespace_name (+) and dba.tablespace_name<>'PERFSTAT' order by dba.tablespace_name;
6.回滚段的信息察看回滚段名称,大小,所在表空间,以及状态。 select substr(sys.dba_rollback_segs.SEGMENT_ID,1,5) "ID#", substr(sys.dba_segments.OWNER,1,8) "Owner", substr(sys.dba_segments.TABLESPACE_NAME,1,17)"Tablespace Name", substr(sys.dba_segments.SEGMENT_NAME,1,17) "Rollback Name", substr(sys.dba_segments.BYTES,1,15) "Size (Bytes)", substr(sys.dba_segments.EXTENTS,1,6) "Extent#", substr(sys.dba_rollback_segs.STATUS,1,10) "Status" from sys.dba_segments, sys.dba_rollback_segs where sys.dba_segments.segment_name = sys.dba_rollback_segs.segment_name and sys.dba_segments.segment_type = 'ROLLBACK' order by sys.dba_rollback_segs.segment_id;
7.数据库参数信息察看没有使用缺省值的参数 col name format a20 select name,value from v$parameter where isdefault='FALSE'; 8.数据库用户信息检查是否有用户的 默认或临时表空间为system 表空间
select user_id, substr(username,1,15) UserName, substr(password,1,15) Password, substr(DEFAULT_TABLESPACE,1,15) "Default TBS", substr(TEMPORARY_TABLESPACE,1,15) "Temporary TBS", CREATED, substr(profile,1,10) Profile from sys.dba_users order by username;
6.3数据库优化及主要参数调整 Oracle数据库在启动时会读取命名规则为init<sid>.ora的初始化参数文件。这个配置文件中的各个参数设定对整个Oracle数据库性能起决定作用,先简单介绍各个参数的含义,然后给出建议配置。除特殊说明外,介绍参数的更改都需进行数据库的重启操作。根据数据库系统规模,Oracle提供小,中,大(small,medium,large)三个建议建议配置档,配置时做为参考。 l db_block_size: 数据块大小,数据存储的最小单位,这个参数在Oracle9i以前各个版本中,数据库创建完成后是不可改变的。可选范围是2K,4K,8K,16k,32k单位是byte。应用系统中,部分数据表字段较多,db_block_size设定偏小造成记录不能在单一数据块中存储,因此访问一条用户记录不能在一次物理I/O操作中完成,需要多次I/O,导致性能下降;另外较多的 varchar2类型字段和数据更新可能造成行链接和行迁移,除设定pctfree较大外,db_block_size也要设定大一些。建议配置为8K,创建数据库时指定。 l db_block_buffers: 数据高速块的多少,存放从硬盘中读出的数据块。db_block_buffers决定内存中可存放的大小为db_block_size的Oracle数据块的数量。应用程序第一次访问数据时从硬盘中读取,然后数据存储在内存中,直到数据长时间不被访问,同时内存中不能容纳更多数据时,数据被写回硬盘,下次需要访问时,再从硬盘中读取。该参数越大,Oracle在内存中找到所需数据的可能性就越大。相同数据内存读取速度要比硬盘快几十倍,因此响应速度也会大大提高。db_block_size与db_block_buffers乘积确定Oracle数据库所占内存的90%左右。 如果服务器专用运行数据库,建议两个参数的乘积占服务器物理内存的40%,通过对数据缓存的命中率进行监控后,做进一步调整。 l shared_pool_size:内存中存放sql语句访问路径,相关访问权限,表结构信息的位置,单位是字节。 建议使用默认配置的大(large)一档,为 9000000(字节)。通过sql语句监控生产机缓存命中率后进行相应调整。 l sort_area_size :可在内存中进行排序的最大字节数。应用程序向数据库发出类似orderby,group by 或创建索引时,需要进行排序操作。排序在内存中完成的速度同样快于硬盘中速度。sort_area_size越大,排序完成在内存中的可能也越大。建议使用默认配置的大(large)一档,大小为524288字节。通过对动态视图的监控进行进一步的调整。 l log_buffer: 日志缓存大小,对于数据库的dml/ddl 等语句首先写入log_buffer,然后写入日志文件。建议初始配置为512k,如果日志缓存等待明显,再加大,一般不超过为1M。 l processes: 同时访问Oracle数据库的进程数,包括后台进程(dbwr,lgwr,chpt)和Enus,Cnus 各个模块建立的到数据库的长连接数,设定大一点不会造成负面影响,如果偏小则会造成不能进行数据库连接的错误。建议配置为150。 l dml_locks: 它表示任何时间所有用户在所有表中放置锁定的最大数量。缺省值是事务最大数量的四倍。同样可以设定较大一点,不会有负面影响。建议为2000。 l open_cursors: 用户可以同时打开的游标数。设定大一点不会造成负面影响,如果偏小则会出现不能打开游表的错误。 建议配置为500。 l db_files: 数据库数据文件的数目。建议设定为200。 l rollback_segments:回滚段的名称,用户自己创建完回滚段后将名称添加在此处。在OLTP环境下,回滚段的数目为最大并发交易数的1/3~1/4。 6.4 数据库的备份/恢复 6.5数据库的监控/维护 6.5.1 推荐使用的监控方法 Statspack 的介绍: Statspack 是Oracle公司针对Oracle Enterprise Edition 8.1.6 及以上版本推出的性能监控工具包。用于替代原有的UTLBSTAT/UTLESTAT。比UTLBSTAT/UTLESTAT能够收集更多的数据,包括耗资源多的SQL。同时预先计算了许多对性能调优很有用的比值(ratios)。可以更加全面的监控数据的整体运行情况。同时可将生成的report文件发送给Oracle公司进行协助分析。 监控的范围主要是: l 主要内存参数的大小(db_block_buffers, db_block_size, log_buffer, shared_pool_size)。 l 系统负载情况:每秒钟的生成的日志量,数据库的逻辑读,物理读,交易数量等。 l 各类缓存命中率。如库缓存命中率,字典缓存命中率,db block buffer命中率,排序在内存中进行的比率等。 l 造成系统响应时间慢的几类事件,通过优化这几类事件提高系统响应速度。 l 按照各类消耗资源排序的SQL语句。通常系统响应速度慢除与参数设置有关外,还与书写不规范的SQL语句有关。通过优化捕捉到的SQL语句,提高响应速度。 l 各个表空间及组成表空间各个文件的I/O负载情况。通过这部分内容判断各个文件I/O是否均衡。 l 回滚段信息:反映是否有回滚段的竞争,是否有回滚段的过分扩展。 l 所有没有按缺省设置的参数。 Statspack软件包的创建: l 安装文件:Unix 操作系统下,安装文件存放在$ORACLE_HOME/rdbms/admin 目录下。 l 创建时的执行的用户和执行的文件 SQL>connect internal ; SQL>@?/rdbms/admin/spcreate.sql; l 安装过程中的主要动作: 1安装生成一个用户perfstat/perfstat =>spcusr.sql, 安装时输入:DEFAULT TABLESPACE/ TEMPORARY TABLESPACE 2建立需要的Table =>spctab.sql 3生成dbms_shared_pool 和dbms_job PL/SQL 程序包=>spcpkg.sql Statspack软件包的执行/数据采集 当系统响应速度出现明显下降的时候,可通过statspack进行系统运行数据采集,并生成报告文件,进行分析。 l 初始准备:在init<sid>.ora中设置timed_statistics=true,并让其生效。或使用alter system set timed_statistics=true; l 使用创建的perfstat用户连接 SQL>CONNECT PERFSTAT/PERFSTAT; l 执行第一次采集程序: SQL>EXECUTE STATSPACK.SNAP;l
|