环境:oracle linux5.6 oracle11gR2.0.2 (active dataguard)
最近发现在几个服务器的系统时间不准了,数据库上线才4个多月,都跟正常时间偏差。如下
主库:比正常时间快10分钟
备库1:比正常时间慢2分钟
备库2:比正常时间快4分钟
看来是有快有慢。当时设的是主板硬件时间同步(hwclock --systohc),时间基本上一样的。看了现在硬件时间都不准了,这咱同步方法不是很可靠,因为每台机器的硬件时间可能不一致。
通过在测试环境上测试实验:
1.将主库的时间调慢10分钟,DG仍能正常同步,对系统没有影响;
2.再将备库1时间调快5分钟,DG仍能正常同步,对系统没有影响;
3.最后,分别在主备上将时间调慢或调快几分钟都对系统没有影响。
通过实验结果看,系统的时间调整对active dg环境同步没有影响,并且都是在线修改的时间,数据库都没有停,修改完重启完没有出现异常,DG能正常同步。
只是修改主库时间时,在alter.log出现了下面的错误:
“opiodr aborting process unknown ospid (28225) as a result of ORA-609”
但是系统没有出现其它的异常。
下一步就是在生环境上修改系统时间了,希望同步不会有任何异常。
为了保险、安全起见,最终我们还是先把数据库停掉后,然后再修改的系统时间。完成后数据库没有异常,运行正常。
下面是修改系统linux时间同步的具体方法:
当有多台服务器共同工作时,有时候时间的不同步会带来不小的麻烦。
一、 配置时间服务器
将时间服务器要与外网的时间服务器同步时间,所以作为时间服务器必须可以连接外网。
1、将时间服务器与互联网时间服务器同步
# /usr/bin/rdate -s time-b.timefreq.bldrdoc.gov
2、安装ntp server
--修改/etc/ntp.conf,添加如下信息:
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
--如果想在互联网做ntp server,取消noquery就可以了,如果只是给内部提供,加一行ip限制就行:
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap nopeer
--然后重启ntpd服务:
[root@bogon ~]# service ntpd restart
--最后等ntp第一次去他的上级ntp server同步,可以查看:
[root@appserver ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
======================================================================
114.80.81.13 66.220.9.122 2 u 22 64 1 37.802 -292.77 0.001
122.226.192.4 127.67.113.92 2 u 21 64 1 38.103 -298.15 0.001
61.153.197.226 .INIT. 16 u - 64 0 0.000 0.000 0.000
LOCAL(0) .LOCL. 10 l 21 64 1 0.000 0.000 0.001
3、启动时间服务器
# /etc/init.d/ntpd start
4、每周同步一次时间
--设置计划任务,每周定时的去同步时间服务器的时间。先创建一个同步脚本:
# vi /etc/cron.weekly/rdateweekly.sh
#!/bin/sh
/usr/bin/rdate -s time-b.timefreq.bldrdoc.gov
--把该脚本添加到crontab任务中,定时自动执行:
# chmod 755 /etc/cron.weekly/rdateweekly.sh
# crontab –e
01 00 * 1 * /etc/cron.weekly/rdateweekly.sh &> /dev/null
5、将ntpd设置成为开机自启动
# chkconfig ntpd on
6、修改防火墙使允许时间服务器通信
--如果服务器开了防火墙,则需要手工配置防火墙的配置文件,使防火墙允许时间服务器通信。
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 123 -j ACCEPT
二、设置局域网内其它服务器与该时间服务器同步
1、先停止要同步时间的ntp服务
[root@client ~]# /etc/init.d/ntpd stop --或用service ntpd stop
关闭 ntpd: [确定]
2、内网服务器时间同步
[root@client ~]# ntpdate 192.168.1.8
27 Oct 11:24:05 ntpdate[5707]: step time server 192.168.1.8 offset 199.356250 sec
注:该IP为上面的时间服务器IP。
3、设置计划任务每周定时同步
先创建一个同步脚本:
[root@client ~]# vi /etc/cron.weekly/ntpdateweekly.sh
#!/bin/sh
ntpdate 192.168.1.8
#或是手动添加与时间服务器的同步作业:
*/15 * * * * (/usr/sbin/ntpdate 192.168.1.8 > /dev/null 2>&1;/sbin/hwclock -w)
--在crontab任务中添加定时同步任务:
01 00 * * 6 /etc/cron.weekly/ntpdateweekly.sh &> /dev/null
[root@client ~]# chmod 755 /etc/cron.weekly/ntpdateweekly.sh
到此,局域网时间服务器就算配置完成,以后再也不用为时间的不同步而烦恼了。
三、内网服务器时间同步错误
1、no server suitable for synchronization found
[root@client ~]# ntpdate 192.168.1.8
27 Oct 11:00:02 ntpdate[5299]: no server suitable for synchronization found
解决办法:安装ntp server
修改/etc/ntp.conf,添加如下信息:
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
如果想在互联网做ntp server,取消noquery就可以了,如果只是给内部提供,加一行ip限制就行:
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap nopeer
然后重启ntpd服务:
[root@client ~]# service ntpd restart
最后等ntp第一次去他的上级ntp server同步,可以查看:
[root@appserver ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
======================================================================
114.80.81.13 66.220.9.122 2 u 22 64 1 37.802 -292.77 0.001
122.226.192.4 127.67.113.92 2 u 21 64 1 38.103 -298.15 0.001
61.153.197.226 .INIT. 16 u - 64 0 0.000 0.000 0.000
LOCAL(0) .LOCL. 10 l 21 64 1 0.000 0.000 0.001
否则用客户端同步,会报错:
[root@client ~]# ntpdate -d 192.168.1.8
27 Oct 11:00:44 ntpdate[5307]: ntpdate Thu May 13 14:38:23 UTC 2010 (1)
Looking for host 192.168.1.8 and service ntp
host found : 192.168.1.8
transmit(192.168.1.8)
transmit(192.168.1.8)
transmit(192.168.1.8)
transmit(192.168.1.8)
transmit(192.168.1.8)
192.168.1.8: Server dropped: no data
server 192.168.1.8, port 123
stratum 0, precision 0, leap 00, trust 000
refid [192.168.1.8], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time: 00000000.00000000 Thu, Feb 7 2036 14:28:16.000
originate timestamp: 00000000.00000000 Thu, Feb 7 2036 14:28:16.000
transmit timestamp: d25347df.73e86849 Thu, Oct 27 2011 11:00:47.452
filter delay: 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000
filter offset: 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
27 Oct 11:00:48 ntpdate[5307]: no server suitable for synchronization found
2、the NTP socket is in use, exiting
[root@client ~]# ntpdate 192.168.1.8
2 Dec 15:20:42 ntpdate[2748]: the NTP socket is in use, exiting
解决办法:在客户端服务器上没停止ntpd服务
[root@client ~]# /etc/init.d/ntpd stop
关闭 ntpd: [确定]