当前位置: 首页 > news >正文

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;

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

相关文章:

  • 魔法数字(dfs/bfs)
  • Win32 OpenGL编程(8) 3D模型变换及其组合应用
  • 牛妹的春游(二维费用背包+技巧)
  • 2019 ICPC 南京区域赛 - C Digital Path(多段图DP)
  • 去年我们在哪儿?——09年SD2.0大会侧记(2)
  • 2019 CSP-J 纪念品(完全背包+思维)
  • 从MTK的BIN文件里提取图片资源
  • 无题(Floyd的理解)
  • 一个MTK的百叶窗特效
  • 无题(贪心+优先队列)
  • 大会轶事录——09年SD2.0大会侧记(3)
  • 卡特兰数
  • 洛谷 P2532 [AHOI2012]树屋阶梯(高精度卡特兰数)
  • UVA - 580 Critical Mass 四种方法(dp/暴力)
  • 全球20国互联网网速、网费统计:日韩最快最便宜
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Asm.js的简单介绍
  • canvas绘制圆角头像
  • flask接收请求并推入栈
  • Invalidate和postInvalidate的区别
  • Linux快速复制或删除大量小文件
  • PV统计优化设计
  • ucore操作系统实验笔记 - 重新理解中断
  • VUE es6技巧写法(持续更新中~~~)
  • Vultr 教程目录
  • 给初学者:JavaScript 中数组操作注意点
  • 离散点最小(凸)包围边界查找
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 【云吞铺子】性能抖动剖析(二)
  • ​第20课 在Android Native开发中加入新的C++类
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (2.2w字)前端单元测试之Jest详解篇
  • (3)llvm ir转换过程
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (十一)c52学习之旅-动态数码管
  • (一) springboot详细介绍
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .net 获取url的方法
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net打印*三角形
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @JsonSerialize注解的使用
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [@Controller]4 详解@ModelAttribute
  • [2023年]-hadoop面试真题(一)
  • [ARM]ldr 和 adr 伪指令的区别