Oracle检查对象[第八章笔记]

 

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;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值