Oracle的FIXED_DATE参数

我们知道,在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>
时间: 2025-02-01 12:46:48

Oracle的FIXED_DATE参数的相关文章

oracle动态注册参数local_listener

local_listener参数有两种书写格式,提供了不同的功能. 监听文件上,1521和1526端口上都有动态监听端口. [[email protected] admin]$ cat listener.ora LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=dbsv)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))) SID_LIST_LISTENER=

Oracle数据库GLOBAL_NAMES参数的详细研究 (创建DBLINK时有用)

Oracle数据库GLOBAL_NAMES参数的相关知识是本文我们主要要介绍的内容,当GLOBAL_NAMES参数设置为TRUE时,使用DATABASE LINK时,DATABASE LINK的名称必须与被连接库的GLOBAL_NAME一致.下面做一个测试,在测试中,创建数据库链接的库为XJ(WINDOWS 2003 ORACLE 10g 10.2.0.1),被链接的库为DMDB(LINUX AS5 ORACLE 10g 10.2.0.1 RAC). 首先查看DMDB的相关配置: 以下是代码片段

ORACLE 配置event参数

下面测试来至于11G 1,数据库的版本 www.htz.pw > select * from v$version;   BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0

静默安装oracle 11g及参数配置优化详解

一.安装前准备工作1.修改主机名#vi /etc/hosts   //并添加内网IP地址对应的hostname,如下127.0.0.1           localhost::1                   localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.8.151          linux-test 2.修改standby数据库的/etc/sysconfig/iptables文件,

【转】Oracle 11g Dataguard 参数详解

转自:https://www.jb51.net/article/52269.htm 这篇文章主要介绍了Oracle 11g Dataguard参数详解,包含了独立参数.主库参数.备库参数的详细说明,需要的朋友可以参考下. 注:本文译自<Oracle Data Guard 11g Handbook> Page 78 – Page 88 就Data Guard(后面都写成DG)来说,我们只关注如下三种参数: 1.独立于数据库角色的参数2.数据库角色为primary时的参数3.数据库角色为stand

理解RHEL上安装oracle的配置参数

无论安装什么版本的oracle,在安装之前,都需要配置 /etc/pam.d/login   /etc/profile   /etc/security/limits.conf这三个文件 那这三个文件究竟是做什么用的呢?答案就是设置对oracle用户的shell limits.下面就仔细分析一下这几个文件 首先需要编辑/etc/security/limits.conf文件(用户限制配置文件) oracle soft nproc 2047 oracle hard nproc 16384 oracle

ORACLE中没有参数文件和控制文件如何通过rman恢复数据库

场景: 一个DEV告诉我生产环境下某个用户的表都看不到了,需要恢复,而此时生产库上存储自动备份的参数文件控制文件的磁盘目录文件坏块,所以导致rman备份的只有数据文件和归档日志文件,这种情况下,如何在测试服务器上利用rman恢复数据呢?google了很多资料,咨询了朋友,恢复过程如下: 前期准备工作:事先查询好先查询下原来的数据文件路径SQL> select name from v$datafile; NAME-------------------------------------------

Oracle基础 07 参数文件 pfile/spfile

--查看数据库运行模式(spfile还是pfile)select decode(count(*),1,'spfile','pfile') from v$spparameterwhere rownum=1 and isspecified='TRUE'; --以pfile启动数据库create pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initdbtest.ora' from spfile;shutdown immediate;startup pf

Oracle游标带参数

Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * from d where id=c_id; begin open b(111); end;