Oracle进程记录

 1.僵尸进程

 

问题背景:

aix环境,收到监控告警,僵尸进程超阈值,疑似进行备份会导致产生大量的僵尸进程

 

 

查看僵尸进程:


ps -ef |grep defunct

一般僵尸进程会在备份完毕后自行消失,若可以采取措施(前提为系统init初始化产生的僵尸进程则可处理)



cp /etc/inttab /etc/inittab.bak


rmitab welcome


telinit q


ps -ef|grep welcome (to find the


‘welcome’ pid#)


kill #pid


telinit q


inittab修改详解

{

修改 /etc/inittab 文件需要特定命令:


      (1)mkitab:将记录添加到 /etc/inittab 文件。


      (2)lsitab:列出 /etc/inittab 文件中的记录。


      (3)chitab:更改 /etc/inittab 文件中的记录。


      (4)rmitab:删除 /etc/inittab 文件中的记录。

}



inittab读取命令详解

{

TELINIT

/sbin/telinit 是一个到 /sbin/init 的软链接。它用一个单字符参数来通知 init 执行相应的操作。下面是相关的参数:

0,1,2,3,4,5 或 6

通知 init 将运行级别切换到指定的运行级别

a,b,c

告诉 init 只运行那些 /etc/inittab 文件中运行级别是 a,b 或 c 的记录

Q 或 q

通知 init 重新检测 /etc/inittab 文件

S 或 s

通知 init 将运行级别切换到单用户模式下

U 或 u

通知 init 自动重启(保留状态),此操作不会对文件/etc/inittab 进行重新检测。执行此操作时,运行级别必须处在 Ss12345 之一,否则,该请求将被忽略

telinit 还可以告诉 init 两次发送 SIGTERM 和 SIGKILL 信号的时间间隔。默认值是 5 秒,你可以通过使用 -t sec 的选项来修改。

telinit 只能由具有恰当权限的用户执行。

init 通过检查自己的 进程号 来判断自己是 init 还是 telinit ;真的 init 的进程号永远都是 1。从这一点来看,我们在调用 telinit 时也可以只使用 init 来少敲几个键.

}


2.资源占用

diag

问题背景:

监控内存告警,交换分区超过阈值,查看后发现diag,dia0进程占用过大

经大佬指点,为数据库11g bug,DIAG DIA0 占用内存会缓慢增长 最后把内存耗光

使用命令,查看占用大小


svmon -G -O unit=GB

topas

筛选进程

ps aux | sort -k3,3nr | head -n 10

 ps aux|head -1;ps aux |sort -rn -k3|head -10

查出进程后kill,问题暂时解决


oraagent

问题背景:

查看cpu使用率极高,大佬检查后发现oraagent进程疑似卡住,单个进程使用cpu负载极高,达到110%-170%


使用命令查出


ps aux|sort -k3,3nr |head -n 10


操作


srvctl stop cvu

srvctl start cvu

若无效果,可kill进程,进程会自动拉起