Oracle 检查对象
8.3. Oracle对象的状态
共分六个部分,分别为:检查Oracle控制文件状态;检查Oracle在线日志状态;检查Oracle表空间的状态;检查Oracle所有数据文件状态;检查Oracle所有表、索引、存储过程、触发器、包等对象的状态;检查Oracle所有回滚段的状态。
8.3.1. Oracle控制文件状态
检查控制文件状态是否正常。

$sqlplus system/manager
 sql>select * from v$controlfile;输出结果应该有3条以上(包含3条)的记录,“STATUS”应该为空。状态为空表示控制文件状态正常。
 8.3.2. Oracle在线日志状态
 检查在线日志状态是否正常。$sqlplus system/manager
sql>select * from v$logfile;
输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。
 注:“STATUS”显示为空表示正常。
 8.3.3. Oracle表空间状态
 检查应用相关表空间状态是否为“ONLINE”。$sqlplus system/manager
 sql>select tablespace_name,status from dba_tablespaces;其中“STATUS”应该都为“ONLINE”,加粗输出显示的部分为我们应用相关的表空间。
 8.3.4. Oracle所有数据文件状态
 检查数据文件状态是否为“ONLINE”。$sqlplus system/manager
 col NAME form a50
 col STATUS form a10
 sql>select name,status from v$datafile;输出结果中“STATUS”应该都为“ONLINE”。
 8.3.5. Oracle所有表、索引、存储过程、触发器、包等对象的状态
 检查系统是否存在无效对象,无效对象是否与应用相关。$sqlplus system/manager
 sql>select owner,object_name,object_type
 from dba_objects where status!=’VALID’ and owner!=’SYS’ and owner!=’SYSTEM’;如果有记录返回,则说明存在无效的对象。若这些对象与我们应用相关,那么需要重新生成这个对象。
 8.3.6. Oracle所有回滚段的状态
 检查回滚段状态是否正常。$sqlplus system/manager
 sql>select segment_name,status from dba_rollback_segs;应该有若干条记录返回,并且输出结果中所有回滚段的“STATUS”应该为“ONLINE”。
 8.4. Oracle相关资源的使用情况
 共分五个部分,分别为:检查Oracle初始化文件中相关的参数值,检查Oracle各个表空间的增长情况,检查一些扩展异常的对象,检查system表空间内的内容,检查对象的下一扩展与表空间的最大扩展值。8.4.1. 检查Oracle初始化文件中相关的参数值
 如果参数的“LIMIT_VALU”-“MAX_UTILIZATION”<=5,则表明与“RESOURCE_NAME”相关的Oracle初始化参数需要调整。可以通过修改Oracle初始化参数文件方式来修改。$sqlplus system/manager
 sql>select resource_name,max_utilization,initial_allocation,
 limit_value from v$resource_limit;若“LIMIT_VALU”-“MAX_UTILIZATION”<=5,则表明与“RESOURCE_NAME”相关的Oracle初始化 参数需要调整。可以通过修改Oracle初始化参数文件$ORACLE_BASE/admin/XXX/pfile/initXXX.ora来修改。
初始化参数修改后只有在重新启动数据库后才会生效。对于初始化文件中每个参数的意义请参考Oracle官方文档。
 8.4.2. Oracle各个表空间的增长情况
 检查表空间使用率“USED_PERCENT”是否在90%以上,是否需要增加数据文件来扩展表空间。$sqlplus system/manager
 sql>select A.tablespace_name,(1-(A.total)/B.total)*100 used_percent
 from (select tablespace_name,sum(bytes) total
 from dba_free_space group by tablespace_name) A,
 (select tablespace_name,sum(bytes) total
 from dba_data_files group by tablespace_name) B
 where A.tablespace_name=B.tablespace_name;如果使用率“USED_PERCENT”在90%以上,则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能。
8.4.3. 检查扩展异常的对象
 检查是否有某些对象的扩展已快达到其定义时的最大扩展值。对于这些对象建议修改它的存储结构参数。$sqlplus system/manager
 sql>select Segment_Name, Segment_Type, TableSpace_Name,
 (Extents/Max_extents)*100 Percent
 From sys.DBA_Segments
 Where Max_Extents != 0 and (Extents/Max_extents)*100>=95
 order By Percent;如果有记录返回,则这些对象的扩展已经快达到它定义时的最大扩展值。对于这些对象要修改它的存储结构参数,具体方法可咨询相关技术支持。
8.4.4. 检查system表空间内的内容
 检查system表空间是否存在一些非system和sys用户的对象,及是否与应用相关。如果相关,建议把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。$sqlplus system/manager
 sql>select distinct(owner) from dba_tables
 where tablespace_name=’SYSTEM’ and
 owner!=’SYS’ and owner!=’SYSTEM’
 union
 select distinct(owner) from dba_indexes
 where tablespace_name=’SYSTEM’ and owner!=’SYS’ and owner!=’SYSTEM’;如果有记录返回,则表明system表空间内存在一些非system和sys用户的对象。应该进一步检查这些对象是否与我们应用相关。如果相关请把这些对象移到非System表空间,同时应该检查这些对象属主的缺省表空间值。
8.4.5. 检查对象的下一扩展与表空间的最大扩展值
 检查数据库对象的下一个扩展是否大于该对象所属表空间的最大扩展值,如有必要建议调整相应表空间的存储参数。$sqlplus system/manager
 sql>select a.table_name, a.next_extent, a.tablespace_name
 from all_tables a,
 (select tablespace_name, max(bytes) as big_chunk
 from dba_free_space
 group by tablespace_name ) f
 where f.tablespace_name = a.tablespace_name
 and a.next_extent > f.big_chunk
 union
 select a.index_name, a.next_extent, a.tablespace_name
 from all_indexes a,
 (select tablespace_name, max(bytes) as big_chunk
 from dba_free_space
 group by tablespace_name ) f
 where f.tablespace_name = a.tablespace_name and a.next_extent > f.big_chunk;如果有记录返回,则表明这些对象的下一个扩展大于该对象所属表空间的最大扩展值,需调整相应表空间的存储参数。 
检查ORA进程方法
ps -ef |grep “ora_”|grep -v grep
在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:
 • Oracle写数据文件的进程,输出显示为:“ora_dbw0_dbsg”
 • Oracle写日志文件的进程,输出显示为:“ora_lgwr_dbsg”
 • Oracle监听实例状态的进程,输出显示为:“ora_smon_dbsg”
 • Oracle监听客户端连接进程状态的进程,输出显示为:“ora_pmon_dbsg”
 • Oracle进行检查点的进程,输出显示为:“ora_ckpt_dbsg”
 • Oracle进行恢复的进程,输出显示为:“ora_reco_dbsg”————————————————————————————
oracle 8649 1 0 07:21:12 ? 0:00 ora_pmon_ora10g
 oracle 8651 1 0 07:21:13 ? 0:01 ora_psp0_ora10g
 oracle 8653 1 0 07:21:13 ? 0:01 ora_mman_ora10g
 oracle 8655 1 0 07:21:13 ? 0:04 ora_dbw0_ora10g
 oracle 8657 1 0 07:21:13 ? 0:05 ora_lgwr_ora10g
 oracle 8659 1 0 07:21:13 ? 0:09 ora_ckpt_ora10g
 oracle 8661 1 0 07:21:14 ? 0:13 ora_smon_ora10g
 oracle 8663 1 0 07:21:14 ? 0:00 ora_reco_ora10g
 oracle 8665 1 0 07:21:14 ? 0:02 ora_cjq0_ora10g
 oracle 8667 1 0 07:21:14 ? 0:15 ora_mmon_ora10g
 oracle 8669 1 0 07:21:14 ? 0:07 ora_mmnl_ora10g
 oracle 8671 1 0 07:21:15 ? 0:00 ora_d000_ora10g
 oracle 8673 1 0 07:21:15 ? 0:00 ora_s000_ora10g
 oracle 8677 1 0 07:21:21 ? 0:02 ora_arc0_ora10g
 oracle 8679 1 0 07:21:21 ? 0:00 ora_arc1_ora10g
 oracle 8683 1 0 07:21:29 ? 0:00 ora_qmnc_ora10g
 oracle 8690 1 0 07:21:39 ? 0:03 ora_q000_ora10g
 oracle 8692 1 0 07:21:39 ? 0:00 ora_q001_ora10g
 oracle 15635 1 4 14:00:41 ? 0:01 ora_j000_ora10g检查Oracle 实例状态
select instance_name,version,status,database_status from v$instance;
检查Log状态
select name ,log_mode,open_mode from v$database;
归档Log清单
archive log list;
检查Oracle核心转储目录
ls $ORACLE_BASE/admin/ORCL/cdump/*.trc |wc -l
 ls $ORACLE_BASE/admin/ORCL/udump/*.trc |wc -l
 上面命令的结果是某个数字,如果这个数字每天增长10以上,则说明Oracle进程经常发生核心转储,某些用户进程或者数据库后台进程由于无法处理的原因而异常退出。频繁的核心转储特别是数据库后台进程的核心转储会导致数据库异常终止。检查Oracle在线日志状态
select * from v$logfile;
GROUP# STATUS TYPE MEMBER
 ———- ——- ——- —————————————————–
 3 ONLINE /opt/oradata/ora10g/oradata/ora10g/redo03.log
 2 ONLINE /opt/oradata/ora10g/oradata/ora10g/redo02.log
 1 ONLINE /opt/oradata/ora10g/oradata/ora10g/redo01.log输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。
 注:“STATUS”显示为空表示正常。检查Oracle各个表空间的增长情况
select A.tablespace_name,(1-(A.total)/B.total)*100 used_percent
from
(select tablespace_name,sum(bytes) total
from dba_free_space group by tablespace_name) A,
(select tablespace_name,sum(bytes) total
from dba_data_files group by tablespace_name) B
where A.tablespace_name=B.tablespace_name;
 如果使用率USED_PERCENT在90%以上,则注意要增加数据文件来扩展表空间而不要是用数据文件的自动扩展功能。请不要对表空间增加过多的数据文件,增加数据文件的原则是每个数据文件大小为2G,自动扩展的最大限制在4G;
alter tablespace SYSAUX add datafile ‘/opt/oradata/ora10g/oradata/ora10g/sysaux02.dbf’ size 1G;
alter tablespace SYSTEM add datafile ‘/opt/oradata/ora10g/oradata/ora10g/system02.dbf’ size 2G;


增加数据文件后,请检查热备脚本,是否会包含新增的数据文件;