Solaris 系统维护

类别:数据库 点击:0 评论:0 推荐:

 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 

本文地址:http://com.8s8s.com/it/it20263.htm