当前位置:  数据库>oracle

如何诊断RAC环境下sysdate 返回错误时间问题

    来源: 互联网  发布时间:2017-06-15

    本文导语: 最近处理了一些rac环境下访问sysdate返回错误时间的问题,而这种问题往往出现在数据库链接是通过Listener创建的情况下,而且,大部分情况下都是和时区设置相关的。在这篇文章中我们会针对如何诊断这种问题进行解释。这篇文...

最近处理了一些rac环境下访问sysdate返回错误时间的问题,而这种问题往往出现在数据库链接是通过Listener创建的情况下,而且,大部分情况下都是和时区设置相关的。在这篇文章中我们会针对如何诊断这种问题进行解释。这篇文章适用于版本11.2.0.2 及以上版本。

首先,对问题当中涉及到的知识进行介绍。
1. 从版本11.2.0.2 开始Oracle 集群(GI)开始拥有了自己的时区和一些其他配置,这些配置保存在配置文件/crs/install/s_crsconfig__env.txt中。
例如:
TZ=Asia/Shanghai
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
TNS_ADMIN=
ORACLE_BASE=
我们能看到变量TZ 用于定义集群的时区。当然,这个集群的时区是在安装GI时从操作系统获得的。既然集群有了时区,那么我们就需要保证GI的时区和操作系统的设置是一致的,并且当操作系统的时区发生改变时,GI的时区也需要改变。而修改集群时区的基本步骤是(修改/crs/install/s_crsconfig__env.txt文件,重启节点)。
2. 当数据库或者listner 使用srvctl 命令或者随着GI启动被启动时,环境变量会继承GI的时区。您也可以通过下面的命令来手动设置数据库和listener资源的环境变量。
srvctl setenv database -d -t 'TZ='
srvctl setenv listener -l -t 'TZ='
3. sysdate返回的值并不依赖于数据库的时区设置,oracle 只是简单的从操作系统获取系统时间返回(例如:调用os 函数gettimeofday)。所以,修改数据库的时区对于这种问题并没有帮助。而对应的服务器进程所使用的环境变量TZ才会影响返回的系统时间。

接下来,我们简单介绍一下客户端通过listener 连接到数据库时会经过那些过程。我们会通过一个具体的例子来解释。在这个例子中,我们使用sqlplus 创建数据库链接,并对listener进程搜集truss 信息

1.客户端连接数据库
sqlplus scott/tiger@test
2.listner 进程收到了对应的链接,并产生了对应的server process.
524732: psargs: /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
......
524732: kfork() = 496094
496094: kfork() (returning as child ...) = 0
......
496094: kfork() = 483742
483742: kfork() (returning as child ...) = 0
3. 为server process指定环境变量。
483742: execve(0x0FFFFFFFFFFF2660, 0x0000000110773730, 0x000000011077B670) argc: 2
483742: argv: oracle (LOCAL=NO)


    
 
 

您可能感兴趣的文章:

  • Oracle常见错误诊断
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • KDE桌面下Home 和 Home Dirtory 打不开?请各位大哥给诊断诊断
  • TCP/IP 连接诊断工具 Why Can't I Connect?
  • 图形化 Linux 内核诊断工具 SystemTap GUI
  • IPv6兼容性诊断工具 IPv6 CARE
  • PHP 应用跟踪诊断程序 PHP Debug
  • JS的BDD/TDD诊断库 Chai
  • Linux下有开放源码的PC硬件诊断软件吗?那位大吓知道,先谢谢了
  • 汽车诊断工具 O2OO
  • MP3文件诊断工具 MP3 Diags
  • C/C++代码诊断库 NoBug
  • 网卡诊断和调整工具 ethtool
  • 实时 Nginx 分析和诊断工具 nginx-systemtap-toolkit
  • Linux 内核诊断工具 SystemTap
  • HTTP诊断工具 httping
  • JVM 常规诊断库 jdiagnostics
  • Sco Unix 无法启动,请诊断!
  • 100分求诊断:telnet 22能通,但ssh远程登陆不上
  • Cisco交换机附带的控制线 (RJ45---DB9串口) 能用来做sun Blade2500的POST诊断吗? 机器启动没显示了!!
  • 运行时诊断工具 Valgrind
  • 装完redhat9后老是死机,都快要我的小命了哪位帮忙诊断一下


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3