暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle exadata存储节点手动调整时间引发故障

1780

作者简介

石云华,Exadata中国用户组联合创始人,ORACLE ACE。毕业后一直从事Oracle数据库第三方运维服务工作,拥有十余年电信运营商、保险、税务、电力行业核心系统数据库运维经验。现就职于北京海天起点技术服务股份有限公司,oracle数据库专家组成员,Exadata部门负责人。个人著作有《Exadata实施运维指南》,《Oracle Exadata性能优化》

案例概要:

客户反映Exadata的监控工具EM12c中,显示存储节点2状态显示为异常,但可以正常登录该存储节点,并且该存储节点的服务运行正常。

 

案例分析及处理:

使用oracle操作系统用户,分别在计算节点db01和db02上,执行如下命令来检查存储节点的状态。

ssh  -l cellmonitor dm01celadm01 cellcli -xml -e 'list cell attributes msStatus'

ssh  -l cellmonitor dm01celadm02 cellcli -xml -e 'list cell attributes msStatus'

ssh  -l cellmonitor dm01celadm03 cellcli -xml -e 'list cell attributes msStatus'

以上命令在存储节点1和3上运行正常,但存储节点2上运行异常,具体日志如下:

[oracle@dm01dbadm02  ~]$ ssh -l cellmonitor dm01celadm02 cellcli -xml -e 'list cell attributes  msStatus'

The  authenticity of host 'dm01celadm02 (10.20.249.54)' can't be established.

RSA  key fingerprint is 65:f4:9b:c8:7a:61:52:93:f1:ed:93:12:10:3c:2d:6c.

Are  you sure you want to continue connecting (yes/no)? yes

Warning:  Permanently added 'dm01celadm02' (RSA) to the list of known hosts.

CELL-01528:  Unable to create the log file in directory  /opt/oracle/cell/cellsrv/deploy/log.   Error: opt/oracle/cell/cellsrv/deploy/log/cellcli.lst.cellmonitor.0.lck:  No space left on device.

<?xml  version="1.0" encoding="utf-8" ?>

<cli-output>

<cell>

 <msStatus>running </msStatus>

</cell>

</cli-output>

[oracle@dm01dbadm02  ~]$

从存储节点2的命令输出可以看出,在检查存储节点状态时报了CELL-01528错误,提示在/opt/oracle/cell/cellsrv/deploy/log目录下无法创建日志文件,原因是磁盘上没有足够的空间。

检查存储节点的文件系统使用情况,具体命令如下。

[root@dm01celadm02  ~]# df -h

Filesystem      Size   Used Avail Use% Mounted on

/dev/md5        9.9G   5.1G  4.4G  54% /

tmpfs            63G  4.0K    63G   1% /dev/shm

/dev/md7        3.0G   962M  1.9G  34% /opt/oracle

/dev/md4        114M    26M   83M  24% /boot

/dev/md11       5.0G   1.3G  3.5G  27% /var/log/oracle

可以看出该主机上的每个文件系统都有大量的剩余空间,但仍然提示没有磁盘空间,这种情况很可能是文件系统上的inode耗尽了。

检查存储节点的inode使用情况,具体命令如下。

[root@dm01celadm02  trace]# df -i

Filesystem       Inodes   IUsed    IFree IUse% Mounted on

/dev/md5         655360  37489    617871    6% /

tmpfs          16463215      2 16463213    1% /dev/shm

/dev/md7         196608   7402    189206    4% /opt/oracle

/dev/md4          30120     38     30082    1% /boot

/dev/md11        327680 327680  0    100%  /var/log/oracle

可以发现,是由于/var/log/oracle文件系统的inode用光了,导致无法创建新文件。而/var/log/oracle文件系统的inode数量为327680,但这些inode已经用光,说明该文件系统中存在大量小文件。

检查存储软件日志目录中文件数量多少,具体命令如下。

$  ls -sort |wc -l

45793

可以看出,该目录中生成的trace文件非常多,查看该目录中的内容,基本上全是cellofltrc开头的trace文件,并且这些trace文件的生成时间非常有规律,每个小时的整点准时生成。

检查存储软件日志,内容如下所示。

Tue  Mar 06 22:00:00 2018

Time  went backwards.

 Old Time: 03-06-2018 22:00:01.965.

 New Time: 03-06-2018 22:00:00.480.

Time  went backwards.

 Old Time: 03-06-2018 22:00:01.965.

 New Time: 03-06-2018 22:00:00.781.

Cellsrv  will have to be restarted, since backward drift in time was more than 300  milliseconds

Tue  Mar 06 22:00:00 2018

[RS]  monitoring process /opt/oracle/cell/cellsrv/bin/cellrsomt (pid: 21446)  returned with error: 128

Errors  in file /opt/oracle/cell/log/diag/asm/cell/dm01celadm02/trace/svtrc_21448_main.trc  (incident=89):

ORA-00600:  internal error code, arguments: [ossmisc:ossmisc_timer_ticks], [], [], [],  [], [], [], [], [], [], [], []

Incident  details in: /opt/oracle/cell/log/diag/asm/cell/dm01celadm02/incident/incdir_89/svtrc_21448_main_i89.trc

Errors  in file /opt/oracle/cell/log/diag/asm/cell/dm01celadm02/trace/svtrc_21448_main.trc  (incident=90):

ORA-00600:  internal error code, arguments: [MutexObject::pthread_rwlock_tryrdlock2],  [GenTimeStats HT],  [FILE:/ade/aime_oss_341446/oracle/oss//src/server/if/LockedHashTable.h  LINE:444], [139814531237632], [139814659644992], [], [], [], [], [], [], []

ORA-00600:  internal error code, arguments: [ossmisc:ossmisc_timer_ticks], [], [], [],  [], [], [], [], [], [], [], []

Incident  details in: /opt/oracle/cell/log/diag/asm/cell/dm01celadm02/incident/incdir_90/svtrc_21448_main_i90.trc

从存储软件的日志文件中可以看到以上报错日志,同时也是非常有规律,每小时的整点产生,具体报错原因是由于操作系统的时间往后调整,导致存储软件出现故障,这个问题在MOS文档(Bug 24327559和Bug24340998)中都进行了解释,这个ORA-600错误并不是存储软件的BUG,而是由于某种原因(人为地修改系统时间或NTP时钟服务器存在同步问题)导致操作系统时间回退,所以存储软件必须重新启动。

(3)、检查NTP时钟同步服务配置情况,以下是收集的信息内容。

[root@dm01celadm01  ~]# cat /etc/ntp.conf |grep -v ^# |grep -v ^$

driftfile  /var/lib/ntp/drift

restrict  default kod nomodify notrap nopeer noquery

restrict  -6 default kod nomodify notrap nopeer noquery

restrict  127.0.0.1

restrict  -6 ::1

includefile  /etc/ntp/crypto/pw

keys  /etc/ntp/keys

restrict  10.20.0.0 mask 255.255.0.0 nomodify notrap

server  127.127.1.0

fudge  127.127.1.0 stratum 1

[root@dm01celadm01  ~]#

[root@dm01celadm01  ~]# ntpq -p

ntpq:  read: Connection refused

[root@dm01celadm01  ~]#

[root@dm01celadm01  ~]# ntpstat

Unable  to talk to NTP daemon. It is running?

[root@dm01celadm01  ~]#

[root@dm01celadm01  ~]# ps -ef |grep ntp

root    29798   28700 0 10:34 pts/0     00:00:00  grep ntp

[root@dm01celadm01  ~]#

[root@dm01celadm01  ~]#  service ntpd status

ntp  is stopped

[root@dm01celadm01  ~]#

从以上收集的信息可以看出,当前的NTP服务已经关闭。

 

故障原因及解决方案

存储节点2的系统时间运行比较快,为了保证整个集群的时间保持一致,于是客户在存储节点2部署了crontab定时任务,每1小时整点让存储节点2与时钟服务器进行ntpdate同步,这一操作导致存储节点的时间往回调整,而存储软件不允许操作系统时间往后调整,否则存储软件会报错并自动重启存储软件,存储软件的重启过程中会产生大量的日志文件,最终这些小日志文件耗光了所有的inode。

临时解决办法:

1、归档及删除日志文件释放inode,同时重启存储节点2,保证一个干净的环境。

2、停止使用ntpdate的方式同步存储节点的时钟。

最终解决办法:

    在Exadata环境中配置NTP时钟服务器,让存储节点与NTP时钟服务器进行同步。目前,客户已经在Exadata环境中配置了NTP时钟服务器,存储节点2已经与该NTP时钟服务器进行同步,该故障已经完全解决,存储软件未报任何异常信息。


最后修改时间:2021-04-09 10:33:43
文章转载自Oracle一体机用户组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论