oracle rac 时间修改
此处首先说明以下几点原理:
1、oracle 11g之前,集群中各节点之间的时间同步靠的是ntpd,即选择一台主节点,或者另找一台ntpd服务器做时间服务器,集群中各节点与该服务器时间同步,以保证数据库各节点之间时间一致。
2、oracle 11g之后集群中新增了一个ctssd服务,主要实现从主节点向其他从节点同步时间。
3、linux服务器下有两个时间需要关注,一个是系统时间,用date命令查看,一个是硬件时间,用hwclock命令查看,硬件时间主要由cpu芯片中的时钟决定,记录在bios中。系统时间和硬件时间之间的关联关系是:
1)开机时操作系统回读取bios中的硬件时间,作为系统时间,关机之前系统会将当前的系统时间写入bios修改硬件时间。
2)可以手动的同步系统时间和硬件时间:hwclock -w 将系统时间同步至硬件时间;hwclock -s 将硬件时间同步至系统时间
本次要说明的是:linux系统时间影响了数据库时间时,如何处理(对于系统时间和数据库时间本身不一致的情况下这里不做说明)
情况1:如果系统时间<正确的时间,那么需要把系统时间向前改,操作步骤如下:
1)关闭从节点的数据库即集群组件:crsctl stop crs
2)修改主节点即从节点的系统时间:date -s
3)修改主节点即从节点的硬件时间:hwclock -w
4)启动从节点的数据库即集群组件:crsctl start crs
情况2:如果系统时间>正确时间,那么需要把系统时间向后改,这种情况下建议停掉数据库操作,步骤如下:
1)停掉主节点即从节点的数据库及集群组件:crsctl stop crs
2)修改主节点及从节点的系统时间:date -s
3)修改主节点及从节点的硬件时间:hwclock -w
4)待系统时间超过修改前的系统时间之后再启动数据库及集群组件(例如17:34的时候停掉了数据库及集群服务,把系统时间修改为了17:00,那么就等到17:34之后再启动数据库及集群服务):crsctl start crs
上述即为两种情况下如何调整系统时间。下面说下如何避免系统时间上的误差,此处要用到上述的原理1和原理2:
1、oralce 10g中可以打开各个节点的ntpd服务,同时从时间服务器同步;或者主节点从时间服务器同步,其他从节点从主节点同步;oracle 11g中则可以只在主节点上设置ntpd服务,主节点再通过ctssd服务向其他从节点同步时间。
2、可以观察,系统时间和硬件是否都不正常,如果其中一个时正常的,那么可以设置一个定时任务,将正确的时间定期同步至不正确的时间。本案例中观察后发现硬件时间一直都是正确的,只是在常年运行过程中有于开关机,导致硬件时间被系统时间影响,因此本案例中,只是设置了如下一个定时任务:
#crontab -e
0 1 * * * /user/sbin/hwclock -s
经过观察,定时任务开启后,系统时间基本正常。
oracle rac 不停机调整时间
最新推荐文章于 2024-04-26 15:51:14 发布