Oracle维护:每天的工作
Oracle维护:每天的工作
检查数据库状态
确认所有的INSTANCE状态以及listener状态正常,登陆到所有数据库或例程,检测ORACLE后台进程:
$ ps –ef|grep ora
$ lsnrctl status
SQL> select status from v$instance;
检查文件系统
如果文件系统的剩余空间过小或增长较快,需对其进行确认并删除不用的文件以释放空间。
$df –k
$df -h
检查警告日志文件(alert_SID.log)
Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:数据库的启动、关闭,启动时的非缺省参数;数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因;对数据库进行的某些操作,如创建或删除表空间、增加数据文件;
数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600)定期检查日志文件,根据日志中发现的问题及时进行处理
问题 |
处理 |
启动参数不对 |
检查初始化参数文件 |
因为检查点操作或归档操作没有完成造成重做日志不能切换 |
如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率; |
有人未经授权删除了表空间 |
检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限 |
出现坏块 |
检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建 |
表空间不够 |
增加数据文件到相应的表空间 |
出现ORA-600 |
根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁 |
alert_SID.log通常是在$ORACLE_BASE/admin/<SID>/bdump目录下。
使用 Unix ‘tail’或者more命令查看该日志信息(为了方便查询,每天查询后将查询的日志mv到与日志同一目录下的bak目录下);
定期检查警告日志、TRC文件及listener日志
如果这些日志量非常大,占用很大的资源空间,可考虑定期删除以便释放资源。
一般情况下这些文件存在的相关目录:
警告日志: $ORACLE_BASE/admin/<SID>/bdump
或者
通过 SQL> show parameter background_dump_dest参数查看其存放位置;
Trc文件: $ORACLE_BASE/admin/<SID>/udump
或者
通过 SQL> show parameter user_dump_dest参数查看其存放位置;
Listener日志: $ORACLE_HOME/network/log
查看数据库连接信息
定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能需要手工进行清理。
以下的SQL语句列出当前数据库建立的会话情况:
Select count(*) from v$session; ――查看当前会话连接数
select sid,serial#,username,program,machine,status from v$session;
SID SERIAL# USERNAME PROGRAM MACHINE STATUS
---- ---------- ------------ ---------------------------- ------------ --------
1 3 oracle@xz15saledb (PMON) xz15saledb ACTIVE
2 3 oracle@xz15saledb (DBW0) xz15saledb ACTIVE
3 3 oracle@xz15saledb (DBW1) xz15saledb ACTIVE
4 3 oracle@xz15saledb (LGWR) xz15saledb ACTIVE
5 3 oracle@xz15saledb (CKPT) xz15saledb ACTIVE
6 3 oracle@xz15saledb (SMON) xz15saledb ACTIVE
7 3 oracle@xz15saledb (RECO) xz15saledb ACTIVE
8 1 oracle@xz15saledb (CJQ0) xz15saledb ACTIVE
9 3 oracle@xz15saledb (ARC0) xz15saledb ACTIVE
10 3 oracle@xz15saledb (ARC1) xz15saledb ACTIVE
11 11319 ZK AccPrtInv_svr@xz15tuxedo2 (TNS V1-V3) xz15tuxedo2 INACTIVE
13 48876 ZG upload@xz15saleap (TNS V1-V3) xz15saleap INACTIVE
17 20405 ZK AccCreateRpt@xz15tuxedo1 (TNS V1-V3) xz15tuxedo1 INACTIVE
20 12895 ZK OweScanSvr@xz15billdb (TNS V1-V3) xz15billdb INACTIVE
其中,
SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
PROGRAM 这个会话是用什么工具连接到数据库的;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
如果DBA要手工断开某个会话,则执行:(一般不建议使用这种方式去杀掉数据库的连接,这样有时候session不会断开。容易引起死连接。建议通过sid查到操作系统的spid,使用ps –ef|grep spidno的方式确认spid不是ORACLE的后台进程。使用操作系统的kill -9命令杀掉连接 )
alter system kill session 'SID,SERIAL#';
注意:
上例中SID为1到10(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。
检查数据库当日备份的有效性。
对RMAN备份方式: 检查第三方备份工具的备份日志以确定备份是否成功
对EXPORT备份方式: 检查exp日志文件以确定备份是否成功
对其他备份方式: 检查相应的日志文件
检查数据文件的状态
SQL>select file_name,status from dba_data_files;
SQL>select count(*) from dba_data_files;
SQL>select count(*) from dba_data_files where status='AVAILABLE';
如果数据文件的STATUS列不是AVAILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。
检查表空间的使用情况
select
f.tablespace_name,
a.total,
f.free,
round((f.free/a.total)*100) "% Free"
from
(select tablespace_name, sum(bytes/(1024*1024)) total from dba_data_files group by tablespace_name) a,
(select tablespace_name, round(sum(bytes/(1024*1024))) free from dba_free_space group by tablespace_name) f
WHERE a.tablespace_name = f.tablespace_name(+)
order by "% Free"
检查数据库的等待事件
set pages 80
set lines 120
col event for a40
select sid,event,p1,p2,p3,WAIT_TIME,SECONDS_IN_WAIT from v$session_wait where event not like 'SQL%' and event not like 'rdbms%'
如果数据库长时间持续出现大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件时,需要对其进行分析,可能存在问题的语句。
锁表问题的处理
查询目前锁对象信息,更细节的锁处理方式请查看工作中长用脚本
col sid for 999999
col username for a10
col schemaname for a10
col osuser for a16
col machine for a16
col terminal for a20
col owner for a10
col object_name for a30
col object_type for a10
select sid,serial#,username,SCHEMANAME,osuser,MACHINE,
terminal,PROGRAM,owner,object_name,object_type,o.object_id
from dba_objects o,v$locked_object l,v$session s
where o.object_id=l.object_id and s.sid=l.session_id;
解锁处理:
alter system kill session '&sid,&serial#';
检查数据库性能,记录数据库的cpu使用、IO、buffer命中率等等
使用vmstat,iostat,sar,top等命令进行信息收集并检查这些信息,判断资源使用情况。
查看是否有僵死进程
select spid from v$process where addr not in (select paddr from v$session);
有些僵尸进程有阻塞其他业务的
Oracle维护:每天的工作的更多相关文章
- oracle维护服务 oracle解决方案 oracle售后服务
为客户提供的oracle 金牌技术服务内容为: 1.电话服务 (7*24) 热线支持电话800-810-0081 每周7天,每天24小时北京技术支持中心每天都有专人值守.以保证及时与客 ...
- oracle维护数据的完整性
介绍: 数据的完整性用于确保数据库数据遵从一定的商业的逻辑规则.在oracle中,数据完整性可以使用约束.触发器.应用程序(过程.函数)三种方法来实现,在这三种方法中,因为约束易于维护,并且具有最好的 ...
- 数据库(Oracle)运维工作内容及常用脚本命令
1.系统资源状况:--内存及CPU资源 --linux,solaris,aix vmstat 5 --说明: 1)观察空闲内存的数量多少,以及空闲内存量是否稳定,如果不稳定就得想办法来 ...
- Oracle维护常用SQL
--查询表空间.表空间大小及表空间对应物理路径 select a.tablespace_name,b.file_name,a.block_size,a.block_size,b.bytes/1024 ...
- oracle批量转库工作,比较快捷的方式
select 'create table ' || t.TABLE_NAME || ' as select * from ODS_ZMGLXT.'|| t.TABLE_NAME ||'; ' fr ...
- oracle维护表空间和数据文件
1:重要参考 wiki 2: oracle doc 表空间参考 3:来自dba-oracle的参考 26,27,28,29 一:oracle 表空间概念 表空间是联系数据库的物理磁盘(数据文件)和逻辑 ...
- [Oracle维护工程师手记]Data Guard Broker中改属性是否需要两侧分别执行?
Data Guard Broker中改属性是否需要两侧分别执行? Data Guard Broker有一些属性,可以通过 show configuration 看到.我有时会想,这些个属性,是否是分别 ...
- [Oracle维护工程师手记]一次升级后运行变慢的分析
客户报告,当他从 Oracle 11.1.0.7 ,迁移到云环境,并且升级到12.1.0.2.运行客户的应用程序测试,发现比以前更慢了. 从AWR report 的"Top 10 Foreg ...
- Oracle 维护数据的完整性 一 索引
简介:索引是用于加速数据存取的数据对象,合理的使用索引可以大大降低i/o 次数,从而提高数据的访问性能. 当我们从一张表中检索我们需要的数据是,oralce往往会进行全表扫描,就是遍历所有的数据行,来 ...
随机推荐
- 使用ReflectionToStringBuilder实现toString方法
使用ReflectionToStringBuilder实现toString方法 org.apache.commons.lang.builder.ReflectionToStringBuilder是co ...
- JVM总结之命令行工具
jps jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号. jps相当于Solaris进程工具ps.不象"pgrep java"或"ps ...
- RedHat安装中文支持和字体
操作系统: Red Hat Enterprise Linux 6.3 x86 安装中文语言支持: yum install "@chinese support" 安装完中文支持后,可 ...
- Java自学手记——多态
对象转型 学习多态前先明白一个叫对象转型的概念,如: class Animal{ void sleep(){ System.out.println("睡觉"); } } class ...
- CentOS7下使用YUM安装mariadb10
1:由于centos7 默认使用yum安装MySQL的话就会安装mariadb,只是安装的版本停留在mariadb5.x,版本比较低.如果我们需要安装mariadb10这里就需要删除mariadb-l ...
- 实现一个栈类,类似STL中的栈
1.思路讲解 stack集合类是一个简单的堆栈的实现. 这里有两个模板参数,T和size,T用于指定堆栈中的元素类型,my_size用于表示堆栈中项数的最大值. 类中添加方法isempty.isful ...
- Java 日志框架终极教程
概述 对于现代的 Java 应用程序来说,只要被部署到真实的生产环境,其日志的重要性就是不言而喻的,很难想象没有任何日志记录功能的应用程序被运行于生产环境中.日志 API 所能提供的功能是多种多样的, ...
- StrutsPreparedAndExcuteFilter与Interceptor
filter详解 Filter种类(可以进行那些预处理) 用户授权的Filter:Filter负责检查用户请求,对用户访问权限的控制 日志Filter:详细记录某些特殊的用户请求. 负责解码的Filt ...
- poj_3461: Oulipo
题目链接 基础KMP题,本文提供一段能AC并且便于调试以及查看next数组的代码. 参考博客 http://blog.csdn.net/v_july_v/article/details/7041827 ...
- Laravel 日志查看器 导入log-viewer扩展
1.修改配置文件 config\app.php中 'log'=>'daily' 日志文件是按天生成的 2.在项目目录中composer命令安装扩展:composer require arcan ...