zoukankan      html  css  js  c++  java
  • Oracle的FIXED

    今天发现一个有意思的问题,
    我们知道,在Oracle数据库中正常执行 select sysdate from dual 都可以返回当前主机的系统时间。
    正常修改系统时间,对应的查询结果也会变成修改后的系统时间。
    现在遇到一个问题:测试系统修改了主机系统时间,数据库查询 select sysdate from dual 返回的时间和所在系统的主机时间相差很大,进一步排查发现返回的时间是固定不变的。
    最终发现是Oracle有参数可以使得sysdate一直返回固定的时间,供某些测试场景使用。该库也是因为有其他测试人员设置了该参数,而其他测试人员不知道,产生了疑惑。

    官方对这个参数的描述如下:

    FIXED_DATE enables you to set a constant date that SYSDATE will always return instead of the current date. To undo a fixed date setting, specify FIXED_DATE=NONE. This parameter is useful primarily for testing. The value can be in the format shown above or in the default Oracle date format, without a time.

    简单试验验证下,的确如此:

    --1. 设定会话时间显示格式:
    SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
    
    Session altered.
    
    --2. 查询sysdate值,是正常返回数据库所在主机的系统时间:
    SQL>
    SQL> select sysdate from dual;
    
    SYSDATE
    -------------------
    2017-03-31 10:16:10
    
    SQL> /
    
    SYSDATE
    -------------------
    2017-03-31 10:16:18
    
    --3. 设置fixed_date参数为固定一个值:
    SQL> alter system set fixed_date = '2017-04-01 12:00:00';
    
    System altered.
    
    --4. 再次查询发现sysdate时间为设置的值,且固定不变:
    SQL> select sysdate from dual;
    
    SYSDATE
    -------------------
    2017-04-01 12:00:00
    
    SQL> /
    
    SYSDATE
    -------------------
    2017-04-01 12:00:00
    
    --5. 设置fixed_date参数为none,使sysdate正常显示所在主机的系统时间:
    SQL> alter system set fixed_date = none;
    
    System altered.
    
    SQL> select sysdate from dual;
    
    SYSDATE
    -------------------
    2017-03-31 10:20:11
    
    SQL> /
    
    SYSDATE
    -------------------
    2017-03-31 10:20:14
    
    SQL>
  • 相关阅读:
    Python基础之面向对象3(继承)
    Python基础之面向对象2(封装)
    python基础之面向对象1
    Python基础之变量作用域
    Python基础之函数参数
    Python基础之函数
    Python基础 之for循环嵌套实例
    Python基础之集合
    Python基础之元组和字典
    Python基础之列表深浅复制和列表推导式
  • 原文地址:https://www.cnblogs.com/wangsicongde/p/7577101.html
Copyright © 2011-2022 走看看