
指导手册
1、目的
网e通宽带网络运营支撑系统使用的服务器中,服务器均采用red hat linux as 4操作系统,数据库版本为:oracle 10g ,随着业务的开展,oracle 数据库中存储的数据量也不断增大,这样操作系统和数据库的日常维护就显得十分重要。
本手册详细描述了程序模块,linux操作系统,DHCP双机热备、负载平衡及oracle数据库等日常检查的主要步骤,指导现场工程师对其进行监控和维护。
2、适用范围
使用者为网e通宽带网络运营支撑系统维护工程师
3、服务器及数据库概述
3.1 服务器概述
服务器数量:4台,基本信息如下:
| 服务器 | 机器型号 | 操作系统 | 安装的模块 | 主机名 | Ip地址 |
| 主服务器 | DELL PC | RedHat linux AS 4.0 | Cm鉴权数据库 业务支撑数据库 主DHCP服务 | oracle01 | eth0:192.168.20.60 |
| 从服务器 | DELL PC | RedHat linux AS 4.0 | 从DHCP服务 | oracle02 | eth0: 192.168.20.61 |
数据库软件分别安装在主服务器上。
/dev/mapper/VolGroup00-LogVol00 逻辑卷上
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/ 10.2.0
ORACLE_SID=oracmts
4、系统服务程序的详细说明
4.1系统服务程序的构成
DHCP主程序:
| 所在服务器 | 主服务器(ip: 192.168.20.60) |
| 程序名称 | Dhcpd |
| 所在目录 | /opt/dpcp |
| 所在服务器 | 从服务器(ip: 192.168.20.61) |
| 程序名称 | Dhcpd |
| 所在目录 | /opt/dpcp |
4.2.1 dhcp主服务
4.2.1.1 dhcp主服务说明
| 所在目录 | 程序名称 | 程序简要说明 |
| /opt/dpcp | Dhcpd | Dhcp主程序 |
| /etc/dhcpd.conf | 主程序的配置文件 | |
| /var/state/dhcp/dhcpd.leases | 租约数据库 | |
1、启动方法:
输入:cd /opt/dpcp
dhcpd即可
注意:请首先确认数据库服务正常,数据库监听正常。
输出:
[root@localhost dhcp]$ ./dhcpd
Internet Systems Consortium DHCP Server V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Wrote 1 leases to leases file.
Listening on LPF/eth0/00:0c:29:fb:d4:32/192.168.50/24
S0c:29:fb:d4:32/192.168.50/24
说明:dhcp启动时,会启动1个进程,正常情况下,dhcp启动的进程数为1个。
2、关闭方法
输入:kill pid
说明:pid为进程号,可使用进程查看获得。如|-dhcpd(4665),则进程id为4665,则kill 4665就可关闭dhcp。
3、进程查看
输入:[root@localhost dhcp]# pstree -p | grep dhcp
输出:
4.2.1.3 配置说明
启动配置文件:etc/dhcpd.conf
可使用more 或者 tail 命令查看
配置服务配置,更改后需要重新启动才能生效,该配置文件的设置需要与从服务器的配置文件吻合。配置文件全文如下:
#
# DHCP Server Configuration file.
#
ddns-update-style none;
failover peer "buptdhcp"
{
}
subnet 192.168.20.0 netmask 255.255.255.0{
}
#---------------cisico1_cm---------------------------
subnet 10.10.128.0 netmask 255.255.240.0{
}
#---------------cisico1_iad---------------------------
shared-network cisico1_iad{
option routers 10.8.80.1;
option domain-name-servers 219.150.32.132, 219.150.150.150, 219.146.0.130;
default-lease-time 3600;
pool
{
failover peer "buptdhcp";
deny dynamic bootp clients;
range 10.8.80.2 10.8.80.254;
}
}
#---------------cisico1_cpe---------------------------
shared-network cisico1_cpe{
}
租约数据库/var/state/dhcp/dhcpd.leases
可使用more 或者 tail 命令查看
记录当前服务器与对方服务器的服务状态与分配的ip租约。
示例如下:
lease 192.168.5.254 {
starts 2 2007/11/27 13:15:22;
ends 3 2007/11/28 13:15:22;
tstp 3 2007/11/28 13:15:22;
binding state active;
next binding state free;
hardware ethernet 00:11:1a:07:2e:8e;
uid "\\001\\000\\021\\032\\007.\\216";
option agent.remote-id 0:11:1a:7:2e:8e;
}
Dhcp状态如下:
failover peer " name " state {
my state normal at 2007/11/27 13:15:22 ;
peer state normal at 2007/11/27 13:15:22 ;
}
4.2.2 dhcp从服务
4.2.2.1 dhcp从服务说明
| 所在目录 | 程序名称 | 程序简要说明 |
| /opt/dpcp | Dhcpd | Dhcp主程序 |
| /etc/dhcpd.conf | 主程序的配置文件 | |
| /var/state/dhcp/dhcpd.leases | 租约数据库 | |
| 所在目录 | 程序名称 | 程序简要说明 |
| /opt/dpcp | Dhcpd | Dhcp主程序 |
| /etc/dhcpd.conf | 主程序的配置文件 | |
| /var/state/dhcp/dhcpd.leases | 租约数据库 | |
1、启动方法:
输入:cd /opt/dpcp
即可
注意:请首先确认数据库服务正常,数据库监听正常。
输出:
[root@localhost dhcp]$ ./dhcpd
Internet Systems Consortium DHCP Server V3.0.4
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/
Wrote 1 leases to leases file.
Listening on LPF/eth0/00:0c:29:fb:d4:32/192.168.50/24
S0c:29:fb:d4:32/192.168.50/24
说明:dhcp启动时,会启动1个进程,正常情况下,dhcp启动的进程数为1个。
2、关闭方法
输入:kill pid
说明:pid为进程号,可使用进程查看获得。如|-dhcpd(4665),则进程id为4665,则kill 4665就可关闭dhcp。
3、进程查看
输入:[root@localhost dhcp]# pstree -p | grep dhcp
输出:
4.2.2.3 配置说明
启动配置文件:etc/dhcpd.conf
可使用more 或者 tail 命令查看.
配置服务配置,更改后需要重新启动才能生效,该配置文件的设置需要与主服务器的配置文件吻合。配置文件全文如下:
#
# DHCP Server Configuration file.
#
ddns-update-style none;
failover peer "buptdhcp"
{
}
subnet 192.168.20.0 netmask 255.255.255.0{
}
#---------------cisico1_cm---------------------------
subnet 10.10.128.0 netmask 255.255.240.0{
}
#---------------cisico1_iad---------------------------
shared-network cisico1_iad{
option routers 10.8.80.1;
option domain-name-servers 219.150.32.132, 219.150.150.150, 219.146.0.130;
default-lease-time 3600;
pool
{
failover peer "buptdhcp";
deny dynamic bootp clients;
range 10.8.80.2 10.8.80.254;
}
}
#---------------cisico1_cpe---------------------------
shared-network cisico1_cpe{
}
租约数据库/var/state/dhcp/dhcpd.leases
记录当前服务器与对方服务器的服务状态与分配的ip租约。
示例如下:
lease 192.168.5.254 {
starts 2 2007/11/27 13:15:22;
ends 3 2007/11/28 13:15:22;
tstp 3 2007/11/28 13:15:22;
binding state active;
next binding state free;
hardware ethernet 00:11:1a:07:2e:8e;
uid "\\001\\000\\021\\032\\007.\\216";
option agent.remote-id 0:11:1a:7:2e:8e;
}
Dhcp状态如下:
failover peer " name " state {
my state normal at 2007/11/27 13:15:22 ;
peer state normal at 2007/11/27 13:15:22 ;
}
4.2.3 web管理模块
4.2.3.1 web管理模块中主要目录说明
/opt/apache-2.0.52为apache模块所在目录
/opt/taiyuan 为web 程序存储目录
4.2.5.2 web管理模块中各程序说明
命令所在目录:/opt/apache/bin
| 命令 | 命令说明 |
| apachectl | Apache HTTP服务器控制接口 |
| httpd | Apache超文本传输协议服务器 |
| ab | Apache HTTP服务器性能测试工具 |
| apxs | APache功能扩展工具 |
| dbmmanage | 建立和更新DBM形式的基本认证文件 |
| htdigest | 建立和更新摘要认证文件 |
| htpasswd | 建立和更新基本认证文件 |
| logresolve | 将Apache日志文件中的IP地址解析为主机名 |
| rotatelogs | 滚动Apache日志而无须终止服务器 |
| 命令所在目录 | 命令 | 命令说明 |
| /opt/apache/bin | ./apachectl start | 启动httpd |
| /opt/apache/bin | ./apachectl startssl | 启动httpd并加载SSL服务 |
| /opt/apache/bin | ./apachectl stop | 关闭apache |
| /opt/apache/bin | ./apachectl status | 查看apache的状态 |
Log存放目录为:/opt/apache/logs
/opt/apache/logs/access_log为所有访问网站的日志
/opt/apache/logs/error_log为错误信息日志
/opt/apache/logs/httpd.pid为主进程的pid号
/opt/apache/logs/ssl_engine_log 为ssl引擎日志,即ssl的运行日志,可以通过查看此日志了解运行状态及错误。
/opt/apache/logs/ssl_request_log 为ssl请求日志
即是哪个ip使用https ssi协议登录web站点,请求的时间,内容,访问的页面等。
4.2.5.5 日常维护
维护分为:业务维护及系统维护
业务维护就是,利用系统管理员的身份,查看操作日志
系统维护是:定期查看系统日志,apache日志等,看是否有运行错误,并定期备份日志。
5、服务器硬件维护(略)
6、linux系统的日常维护
6.1 定期检查磁盘空间
使用df显示磁盘空间
输入:
[oracle@localhost server]$ df
输出:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/cciss/c0d0p2 107938336 7612144 94843208 8% /
/dev/cciss/c0d0p1 101086 12308 83559 13% /boot
none 2073908 4 2073904 1% /dev/shm
/dev/cciss/c0d0p5 30976636 185056 29218016 1% /home
说明:
这里显示了/、 /boot、/home分区 挂载的系统分区使用的大小,磁盘空间以k为单位。
可以加参数 -h
[oracle@localhost server]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p2 103G 7.3G 91G 8% /
/dev/cciss/c0d0p1 99M 13M 82M 13% /boot
none 2.0G 4.0K 2.0G 1% /dev/shm
/dev/cciss/c0d0p5 30G 181M 28G 1% /home
注意:
当某空间使用率超过85%时,通过du查看是哪些文件占用的空间比较大
例如/home使用了85%
cd /home
以root用户查看
su
输入root用户密码
[root@localhost /]# du -m --max-depth=1
-m是以M大小显示
--max-depth=1表示只是一级子目录的大小,如果想查看二级的就写为2
找出占用很大的文件,经判断后决定删除或转移。
6.2 使用top工具监视cpu及内存的使用率
每隔5秒,top工具确定哪些进程消耗最多的cpu时间,并按递减顺序在屏幕显示。
输入:[oracle@localhost /]$ top
输出:
top - 10:52:46 up 6 days, 39 min, 2 users, load average: 0.12, 0.09, 0.02
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 99.3% id, 0.4% wa, 0.0% hi, 0.0% si
Mem: 8247956k total, 1828612k used, 19344k free, 119476k buffers
Swap: 8385920k total, 0k used, 8385920k free, 15260k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 16 0 3004 552 472 S 0.0 0.0 0:01.02 init
2 root RT 0 0 0 0 S 0.0 0.0 0:01.28 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:01.28 migration/1
5 root 34 19 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/1
6 root RT 0 0 0 0 S 0.0 0.0 0:00.65 migration/2 说明:
当发现个别进程占用率很高,可以通过用“ps –axj | grep 进程名”查看这个进程在进行什么操作,如果发现这个进程持续的时间很长,而且非系统必要进程;可以通过“kill –9” 进程的PID号,将进程杀死。(不确定情况下,请不要使用);
退出top用ctrl+c。
6.3 定期查看root邮件
输入:
[oracle@localhost log]$ su -l
Password:
[root@localhost root]# mail
输出:
1 ******************** Fri Sep 8 16:23 18/704 "HP Insight Management Agents Trap Alarm"
N 2 ******************** Fri Sep 8 16:23 18/684 "HP Agent Trap Alert"
N 3 ******************** Fri Sep 8 16:23 19/748 "HP Insight Management Agents Trap Alarm"
说明:
前面为N的表示新邮件
可以在& 后面输入1,代表看第一封信,ctrl+c表示退出查看这封信,h显示所有的
如果都看过的邮件,就可以通过d来删除
如果删除1-10就用
&d 1-10这样就会删除1-10的信。
6.4 定期查看系统日志
系统的日志存储于/var/log目录下,需要定期查看,常用日志说明如下:
boot.log:该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息
maillog: 该日志文件记录了每一个发送到系统或从系统发出的电子邮件的活动
messages: 该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵
lastlog: 该日志文件记录最近成功登录的事件和最后一次不成功的登录事件,由login生成
wtmp: 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件
xferlog: 该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件
cron: 该日志文件记录crontab守护进程crond所派生的子进程的动作,前面加上用户、登录时间和PID,以及派生出的进程的动作
7、备份策略
7.1 备份方式
为了保证数据库的高安全性,目前我们采用的数据库备份方式为物理备份和逻辑备份相结合的方式,数据库归档模式为自动归档模式。这样当数据库出现故障时,我们就可以利用备份文件与归档方法相结合,作数据库“最新状态”的恢复。
7.2 备份计划
通过自动备份脚本实现每天进行一次热备份及逻辑备份,每周进行一次冷备份。所备份的数据文件存储于磁阵上的硬盘。
7.3 常见故障恢复
我们首先从/opt/oracle/admin/oracmts/bdump下的日志文件判断是什么故障。通过查看v$recover_file 来确定哪些文件需要恢复,通过查看v$datafile视图查看文件ID和文件名之间的相关性
通过下面的命令查看需要恢复的数据文件的文件ID号:
select file#, online, error from v$recover_file;
通过视图返回名字和相应的文件ID:
select name, file# from v$datafile;
通过这些信息,决定对哪些文件进行恢复,及其采用的恢复方式。
7.3.1 实例故障
当oracle实例由于突然断电或者操作系统故障而崩溃时,可以通过输入dbstart即可开启数据库,无须发布恢复命令,oracle会自动执行崩溃恢复,最好启动前后检查日志文件
7.3.2 介质故障
介质故障发生在数据库结构组织出现毁坏时,在这些组织中数据库文件不能进行读写。
在数据库打开的情况下,如果是system表空间的数据文件出现介质失败,那么oracle需要在mount状态下恢复其数据文件,
如果是其他表空间,可以只对介质失败涉及到的数据文件进行恢复,即在数据库打开的状态下进行恢复。
步骤如下:
1.确定需要恢复的数据文件
2.使数据文件脱机
3.拷贝数据文件备份到原目标地址
4.恢复表空间或数据文件
5.使表空间或数据文件联机
例:
当出现以下信息时,说明是数据库的system表空间出现了问题。
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-01116: error in opening database file 1
ORA-01110: data file 1: '/opt/oracle/oradata/oracmts/system01.dbf'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
System出现介质失败,表示被误删或被损坏,可以执行如下:
1)首先登录SQL*PLUS并启用SYSDBA权限
输入::sqlplus user/passwd@oracmts;
(启动SYSDBA权限)
shutdown abort (关闭数据库)
startup mount (加载数据库)
也可以通过查看视图,确定哪个文件需要恢复
SQL> select file#,error from v$recover_file;
---------- -----------------------------------------------------------------
查看v$datafile视图查看对应关系
SQL> select file#,name from v$datafile;
----------
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/oracmts/system01.dbf
/opt/oracle/oradata/oracmts/undotbs01.dbf
/opt/oracle/oradata/oracmts/sysaux01.dbf
----------
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/oracmts/users01.dbf
知道要恢复的是1(system01.dbf):
2)在SQL>提示符下输入
alter database datafile '/opt/oracle/oradata/oracmts/system01.dbf' offline;
3)再打开一个终端:
将备份数据文件拷贝到原目标地址,即:
cp /opt/backup/system01.dbf /opt/oracle/oradata/oracmts/
4)然后进行恢复
SQL> recover datafile 1;或recover datafile '/opt/oracle/oradata/oracmts/system01.dbf';
如果不需要归档日志文件进行恢复,即输出
Media recovery complete.
如果需要归档日志文件参与恢复,即输出:
ORA-00279: change 2246878 generated at 07/22/2005 16:28:13 needed for thread 1
ORA-002: suggestion : /opt/oracle/oradata/archive /1_167_562355694.dbf
ORA-00280: change 2246878 for thread 1 is in sequence #167
Specify log: { 输入:auto即可自动完成恢复。 输出: ORA-00279: change 2366990 generated at 07/25/2005 00:00:09 needed for thread 1 ORA-002: suggestion : /opt/oracle/oradata/archive/1_185_562355694.dbf ORA-00280: change 2366990 for thread 1 is in sequence #185 ORA-00278: log file '/opt/oracle/oradata/archive /1_184_562355694.dbf' no longer needed for this recovery ORA-00279: change 2375106 generated at 07/25/2005 04:00:54 needed for thread 1 ORA-002: suggestion : /opt/oracle/oradata/archive /1_186_562355694.dbf ORA-00280: change 2375106 for thread 1 is in sequence #186 ORA-00278: log file '/opt/oracle/oradata/archive /1_185_562355694.dbf' no longer needed for this recovery Log applied. Media recovery complete.(表示恢复结束) 5)在SQL>提示符下输入 alter database datafile '/opt/oracle/oradata/oracmts/system01.dbf' online; 6)打开数据库即可,在SQL>提示符下输入 alter database open 其他数据文件恢复方法类似,只需要把数据文件的名字更改即可。 注:如果维护工程师没有数据库恢复经验,或判断不出数据库的故障原因,请联系我们的工程师,我们一起协商解决。 9、数据库的日常维护 9.1 检查数据库的基本状况 主要介绍如何对数据库的基本情况进行检查,内容共分三部分,分别为:检查oracle的进程;检查oracle监听进程;检查oracle实例状态。 9.1.1 检查oracle的进程 输入:ps -ef |grep "ora_" |grep -v grep 输出: 1 8510 8510 8510 ? -1 Ss 500 0:00 ora_pmon_oracmts 1 8512 8512 8512 ? -1 Ss 500 0:05 ora_psp0_oracmts 1 8514 8514 8514 ? -1 Ss 500 0:00 ora_mman_oracmts 1 8516 8516 8516 ? -1 Ss 500 0:04 ora_dbw0_oracmts 1 8518 8518 8518 ? -1 Ss 500 0:04 ora_lgwr_oracmts 1 8520 8520 8520 ? -1 Ss 500 0:11 ora_ckpt_oracmts 1 8522 8522 8522 ? -1 Ss 500 0:09 ora_smon_oracmts 1 8524 8524 8524 ? -1 Ss 500 0:00 ora_reco_oracmts 1 8526 8526 8526 ? -1 Ss 500 0:05 ora_cjq0_oracmts 1 8528 8528 8528 ? -1 Ss 500 0:14 ora_mmon_oracmts 1 8530 8530 8530 ? -1 Ss 500 0:05 ora_mmnl_oracmts 1 8532 8532 8532 ? -1 Ss 500 0:00 ora_d000_oracmts 1 8534 8534 8534 ? -1 Ss 500 0:00 ora_s000_oracmts 1 8539 8539 8539 ? -1 Ss 500 0:00 ora_arc0_oracmts 1 8541 8541 8541 ? -1 Ss 500 0:00 ora_arc1_oracmts 1 8545 8545 8545 ? -1 Ss 500 0:00 ora_qmnc_oracmts 1 8580 8580 8580 ? -1 Ss 500 0:00 ora_q000_oracmts 1 8583 8583 8583 ? -1 Ss 500 0:00 ora_q001_oracmts 说明: 在检查oracle的进程命令输出后,输出显示至少应包括以下一些进程: ⏹oracle写数据文件的进程,输出显示为:“ora_dbw0_oracmts” ⏹oracle写日志文件的进程,输出显示为:“ora_lgwr_oracmts” ⏹oracle监听实例状态的进程,输出显示为:“ora_smon_oracmts” ⏹oracle监听客户端连接进程状态的进程,输出显示为:“ora_pmon_oracmts” ⏹oracle进行归档的进程,输出显示为:“ora_arc0_oracmts” ⏹oracle进行检查点的进程,输出显示为:“ora_ckpt_oracmts” ⏹oracle进行恢复的进程,输出显示为:“ora_reco_oracmts” ⏹注:上面进程中的oracmts是数据库的实例名,必须为oracmts,否则为错误。 9.1.2 检查oracle监听进程 输入:lsnrctl status 输出: LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 24-OCT-2006 17:22:28 Copyright (c) 1991, 2005, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle02)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production Start Date 24-OCT-2006 17:22:23 Uptime 0 days 0 hr. 0 min. 5 sec Trace Level off Security ON: Local OS Authentication SNMP ON Listener Parameter File /opt/oracle/product/10.2.0/network/admin/listener.ora Listener Log File /opt/oracle/product/10.2.0/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle02)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "oracmts" has 1 instance(s). Instance "oracmts", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully 说明: “Services Summary”项表示oracle的监听进程正在监听哪些数据库的实例,输出显示中至少应该有“oracmts”这一项。 9.1.3 检查oracle实例状态 输入: [oracle@localhost oracle]$ sqlplus /nolog SQL> connect / as sysdba; SQL> select instance_name,version,status,database_status from v$instance; 输出: INSTANCE_NAME VERSION STATUS DATABASE_STATUS ---------------- ----------------- ------------ ----------------- oracmts 10.2.0.1.0 OPEN ACTIVE 说明: 其中“STATUS”表示oracle当前的状态,必须为“OPEN”;“DATABASE_STATUS”表示oracle当前数据库的状态,必须为“ACTIVE”。 输入: SQL> archive log list; 输出: Database log mode Archive Mode Automatic archival Enabled Archive destination /opt/oracle/oradata/archive Oldest online log sequence 5 Next log sequence to archive 7 Current log sequence 7 说明: 其中Database log mode 表示oracle当前的归档方式,“Archive Mode”表示数据库运行在归档模式下,我们数据库必须运行在归档方式下。 9.2 检查数据库日志文件 Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况: ⏹数据库的启动、关闭,启动时的非缺省参数; ⏹数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因; ⏹对数据库进行的某些操作,如创建或删除表空间、增加数据文件; ⏹数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600) 输入: cat /opt/oracle/admin/oracmts/bdump/alert_oracmts.log |grep -i ora- cat /opt/oracle/admin/oracmts/bdump/alert_oracmts.log |grep -i fail cat /opt/oracle/admin/oracmts/bdump/alert_oracmts.log |grep -i err 说明:查看“ora-”,“fail”,“err”等出错信息。 有关“ora-”错误信息,可以到oracle官方网站上查询。 9.3 检查oracle对象的状态 主要介绍检查相关oracle对象的状态,内容包括五个部分,分别为:检查oracle控制文件状态;检查oracle在线日志状态;检查oracle表空间的状态;检查oracle所有数据文件状态;检查Oracle所有回滚段的状态。 9.3.1 检查oracle控制文件状态 输入:SQL> select * from v$controlfile; 输出: STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS /opt/oracle/oradata/oracmts/control01.ctl NO 16384 430 /opt/oracle/oradata/oracmts/control02.ctl NO 16384 430 /opt/oracle/oradata/oracmts/control03.ctl NO 16384 430 说明:输出结果应该有3条以上(包含3条)的记录,“STATUS”应该为空,状态为空表示控制文件状态正常。 9.3.2 检查oracle在线日志状态 输入:SQL> select * from v$logfile; 输出: GROUP# STATUS TYPE MEMBER IS_ 3 ONLINE /opt/oracle/oradata/oracmts/redo03.log NO 2 ONLINE /opt/oracle/oradata/oracmts/redo02.log NO 1 ONLINE /opt/oracle/oradata/oracmts/redo01.log NO 说明:其中“STATUS”应该都为“ONLINE”。 9.3.3 检查oracle表空间的状态 输入:SQL> select tablespace_name,status from dba_tablespaces; 输出: TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE UNDOTBS1 ONLINE SYSAUX ONLINE TEMP ONLINE USERS ONLINE APPTBS01 ONLINE 说明:其中“STATUS”都应该为“ONLINE”。 9.3.4 检查oracle所有数据文件状态 输入:SQL> select name,status from v$datafile; 输出: NAME STATUS /opt/oracle/oradata/oracmts/system01.dbf SYSTEM /opt/oracle/oradata/oracmts/undotbs01.dbf ONLINE /opt/oracle/oradata/oracmts/sysaux01.dbf ONLINE /opt/oracle/oradata/oracmts/users01.dbf ONLINE /opt/oracle/oradata/oracmts/apptbs01.dbf ONLINE 说明:输出结果中“STATUS”应该为“ONLINE”,其中system01.dbf状态值为SYSTEM, 9.3.5检查Oracle所有回滚段的状态 输入:SQL> select segment_name,status from dba_rollback_segs; 输出: SEGMENT_NAME STATUS ------------------------------ ---------------- SYSTEM ONLINE _SYSSMU1$ ONLINE _SYSSMU2$ ONLINE _SYSSMU3$ ONLINE _SYSSMU4$ ONLINE _SYSSMU5$ ONLINE _SYSSMU6$ ONLINE _SYSSMU7$ ONLINE _SYSSMU8$ ONLINE _SYSSMU9$ ONLINE _SYSSMU10$ ONLINE 说明:输出结果中所有回滚段的“STATUS”应该为“ONLINE”。 9.3.6检查Oracle所有表、索引、存储过程、触发器等对象的状态 输入:select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM'; 输出:no rows selected 说明:如果有记录返回,则说明存在无效的对象。若这些对象与我们应用相关,那么需要重新生成这个对象。 9.4监控数据库表空间的使用情况(字典管理表空间) 数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,维护工程师应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。 9.4.1 判断是否需要碎片整理 输入:select tablespace_name, count(*) chunks , max(bytes/1024/1024) max_chunk from dba_free_space group by tablespace_name; 输出: TABLESPACE_NAME CHUNKS MAX_CHUNK UNDOTBS1 13 7.9375 SYSAUX 1 3.3125 APPTBS01 1 1847.9375 USERS 1 42.5625 SYSTEM 2 9.9375 说明:其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL命令进行表空间相邻碎片的接合: alter tablespace 表空间名 coalesce; 然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。 9.4.2 判断是否需要扩展表空间 输入:select b.file_id "File # b.tablespace_name, b.bytes All_space, sum(nvl(a.bytes,0)) "free (sum(nvl(a.bytes,0))/(b.bytes))*100 "%free" from dba_free_space a, dba_data_files b where a.file_id = b.file_id group by b.tablespace_name, b.file_id,b.bytes order by b.tablespace_name; 输出: File # TABLESPACE_NAME ALL_SPACE free %free 5 APPTBS01 21474838 1937702912 90.2313232 3 SYSAUX 314572800 3473408 1.10416667 1 SYSTEM 513802240 10813440 2.10459184 2 UNDOTBS1 26214400 17170432 65.5 4 USERS 77332480 44630016 57.71184 说明:ALL_SPACE表示表空间总的字节数,free表示空闲的字节数,%free为空闲的百分率,当空闲的百分率小于10时,就需要增加数据文件来扩展表空间,而不要是用数据文件的自动扩展功能。 扩展表空间的方法: 输入: alter database datafile '数据文件的位置' resize 扩展后的大小; 例如扩展system表空间到800M alter database datafile '/opt/oracle/oradata/oracmts/system01.dbf' resize 800M; 输出: Database altered. 再查看表空间的使用情况,输出: File # TABLESPACE_NAME ALL_SPACE free %free ---------- ------------------------------ ---------- ---------- ---------- 可以看出表空间扩展成功了。 9.5 查看数据库的连接情况 DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。 输入: select sid,serial#,username,program,machine,status from v$session; 输出: SID SERIAL# USERNAME PROGRAM MACHINE STATUS 141 8698 oracle@oracle02 (J000)oracle02 ACTIVE 1 462 SYS sqlplus@oracle02 (TNS V1-V3) oracle02 ACTIVE 说明:SID 会话(session)的ID号; SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话; USERNAME 建立该会话的用户名; PROGRAM 这个会话是用什么工具连接到数据库的; STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作; 如果DBA要手工断开某个会话,则执行: alter system kill session 'SID,SERIAL#'; 注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。 9.6术语解释 • Oracle的实例:由Oracle的内存结构和Oracle进程组成的集合。一般由ORACLE_SID环境变量定义。 • Oracle的监听进程:Oracle是一个基于client/server体系结构的应用程序。Oracle服务进程和客户端进程之间通过Oracle监听进程进行连接和转发。Oracle监听进程一般在数据库服务器的1521号端口进行监听。 • Oracle控制文件:Oracle系统文件之一。用来存放Oracle主要的控制信息,如:日志文件的位置,数据文件的位置,数据库名字,数据库归档信息等等。 • Oracle在线日志:Oracle所有增、删、改等操作都记录在在线日志中。通过在线日志和归档日志,Oracle就可以跟踪所有的数据库更改操作,就可以做完整的数据恢复。 • Oracle表空间:Oracle所有对象都存储在表空间中,表空间是Oracle数据库中的逻辑存储单元。它在数据库中的概念类似于操作系统中文件的概念,不同的是每个表空间可以由一个或多个数据文件构成。 • Oracle回滚段:Oracle用回滚段来保存用户已经修改但没有递交的信息。回滚段中的信息可以用来将没递交的信息进行回退,同时也可以保证用户视图的读一致性。 • Oracle检查点:Oracle将内存中所有已经修改但没有写入数据文件的信息集中写入的过程叫做检查点,checkpoint。 • Oracle的归档和非归档模式:Oracle在归档模式下时只有当一个在线日志已经归档结束后才能被Oracle实例重新写入。非归档模式下在线日志不用归档完成就可以被Oracle实例重新写入。 • Cron:Unix操作系统的一个进程,它可以定时执行一些脚本。 • ORACLE_BASE:安装所有管理脚本和其他与oracle相关的文件的基本目录。 • ORACLE_HOME:安装所有oracle软件的位置。 • ORACLE_SID:oracle实例名。 10、命令解释 • ps:操作系统用来检查系统进程的命令。 • pstree:操作系统用来检查系统进程的命令。 • tail:操作系统中用来查看文件内容的特殊方法,加参数-f使tail不停地去读最新的内容 • cd:操作系统中用来切换目录。 • top:操作系统用来显示,管理执行中的程序。 • su:操作系统中用来变更用户身份。 • du:操作系统用来显示目录或文件的大小。 • mail:操作系统E-mail的管理程序 • df:操作系统用来显示磁盘空间。 • cat:操作系统用来浏览一个文件的命令。 • more:操作系统用来浏览一个文件的命令,类似与cat。 • ls:操作系统用来显示文件和目录的命令。 • grep:操作系统用来在文件中进行字符串查找的命令。 • sqlplus:Oracle提供的一个工具,用来执行标准SQL语句,以对数据库进行操作。 • lsnrctl:Oracle提供的一个工具,可以用来启动、停止Oracle监听进程以及检查 Oracle监听进程的状态。
