oracle rac CTSS时钟同步模式转换为NTP同步模式的实施记录(2)

       我发现原来在安装AIX的时候,时区就搞错了,不是中国的时区,时间却是一样的,导致刚才同步的时候,时间直接变到昨天晚上了。我进行了实验:
在数据库上执行:
SQL> select sessiontimezone from dual;  显示出的时区 和系统的时区是一样的。
SQL> select dbtimezone from dual; 显示出数据库的时区。

我们改变了系统的时区之后,sessiontimezone 的时区也随着系统的改变而改变了。我们原来的老库的 sessiontimezone 和dbtimezone分别是 +00:00 和 +08:00
说明原来数据库一般的dbtimezone 都是+ 00:00  但从session的角度,也就是说人们登录的时候,都是按+08:00 北京时间来进行操作的。
对于一个生产数据库,改变dbtimezone ,我感觉并没有必要,并且我们的老库一直也是00:00,我想只是需要把 sessiontimezone改变就可以了,改变操作系统的时区,这个
值就自动的改变了。

还有一个问题,就是确定数据库中是否有跟timezone类型的列,运用下列语句:


select c.owner || '.' || c.table_name || '(' || c.column_name || ') -'
    || c.data_type || ' ' col
  from dba_tab_cols c, dba_objects o
 where c.data_type like '%WITH LOCAL TIME ZONE'
    and c.owner=o.owner
   and c.table_name = o.object_name
   and o.object_type = 'TABLE'
order by col;


select u.name || '.' || o.name || '.' || c.name TSLTZcolumn
  from sys.obj$ o, sys.col$ c, sys.user$ u
 where c.type# = 231
   and o.obj# = c.obj#
   and u.user# = o.owner#;

如果没有数据,我们就可以大胆的修改时区了。
具体的步骤规划如下:
1.停止数据库。
2.修改操作系统的时区。(修改之后,系统时间会发生改变,但是数据库已经停止,所以并不影响,注意,按照推算,sessiontimezone也会发生改变)
3.把开机自动启动数据库去掉,然后重启操作系统 (只有重启,时区的修改才能生效)
4.重启机器之后,检查时区是否修改,这时操作系统时间也已经回到了过去,因为原来我的时区错误,这时我们开始部署ntp客户端,同步时间,启动xntp进程,配置开机自启。
5.启动数据库,查看sessiontimezone。

先规划到这,未完待续。
请使用浏览器的分享功能分享到微信等