Solaris 系统维护数据库教程 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    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类型,平台信息,

Solaris 系统维护数据库教程

    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.回滚段的信息察看回滚段名称,大小,所在表空间,以及状态,

电脑资料

Solaris 系统维护数据库教程》(https://www.unjs.com)。

    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.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.ora中设置timed_statistics=true,并让其生效。或使用alter system set timed_statistics=true;

    l 使用创建的perfstat用户连接

    SQL>CONNECT PERFSTAT/PERFSTAT;

    l 执行第一次采集程序:

    SQL>EXECUTE STATSPACK.SNAP;l

最新文章