如何修改oracle时区,如何修改oracle数据库时间

oracle 11g RAC 修改时区步骤,要注意什么

看MOS文档 How To Change Timezone for 11gR2 Grid Infrastructure (文档 ID 1209444.1)

创新互联专注于网站建设|成都企业网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都宴会酒店设计等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身定制品质网站。

AIX改时区必须重启。

我是全部节点停止, stop crs,然后 disable crs 让crs不自动启动 , 然后改AIX的时区,重启,时区生效,改grid时区,然后start crs 。

要改$GRID_HOME/crs/install/s_crsconfig_nodename_env.txt。

改时区没有什么大问题,数据库本身并不依赖时区,建议看看 Timestamps time zones - Frequently Asked Questions (文档 ID 340512.1)

吐槽一下,经常有人安装AIX的时候不注意选时区选择到 BST(Bering) 以为是BEIST(Beijing)。

oracle时间戳设置

这个和数据库安装的时候选择的时区有关,一般国内安装都是选择北京时区。

查看timestamp

select current_timestamp,systimestamp from dual;

current_timestamp                         systimestamp

12-12月-18 04.24.02.427990 下午 +08:00    12-12月-18 04.24.02.427980 下午 +08:00

查看时区

select dbtimezone,sessiontimezone from dual; 

dbtimezone    sessiontimezone

+00:00        +08:00

对于显示是12小时制这个问题,和客户端的操作系统有关,与实际存储的数据无关。

如果想显示成24小时制,修改客户端操作系统的环境变量可以达到目的:

NLS_TIMESTAMP_FORMAT

YYYY-MM-DD HH24:MI:SS:FF6

按照上图设置后,重启plsql,查询后我们能看到时间显示成“2018-12-12 16:16:35:877000”这样的格式了。

但是,如果建库时,时间设置错误或者是将来要改变时区时,表中的值会不会变化呢?因此引用官方的回答:

对于time zone数据类型的数据,即使你更新了数据库时区,原数据也不会进行对应调整,只能你导出数据,然后调整数据库时区,再把原始数据导入即可。所以,一般情况下,一定不要调整数据库时区。官方建议数据库时间采用UTC,因为这种时区性能好。如果没有显式指定数据库时区,数据库会使用操作系统的时区,但是如果操作系统时区不是一个合理的数据库时区,数据库则会使用默认的时区UTC,且UTC的取值范围为-12:00 to +14:00。等等,为什么会有+14?百度一下基里巴斯。这是一个神奇的网站国度。

如何修改oracle数据库时间

oracle的服务器时间,是由服务器的系统时间控制的,所以要看服务器的具体类型,以windows 10和linux系统为例分别说明。

工具:windows 10、linux

windows 10操作步骤:

1、右键开始菜单,选择控制面板。

2、找到日期和时间,点击进入。

3、点击更改日期和时间。

4、进入后,修改日期时间,保存即可。

linux下更改方法:

1、以root用户登录到指定服务器。

2、执行命令

date -s '2017-07-11 23:58:00'

这是将系统时间修改为2017年7月11日23点58分00秒。

3、修改后,reboot重启系统即可。

oracle修改会话时区后,重启数据库后时区又变成原来的了

首先确认会话时区是否正确,会话时区可能和数据库时区不一致

SQL SELECT SESSIONTIMEZONE FROM DUAL;

SESSIONTIMEZONE

---------------------------------------------------------------------------

+08:00

会话时区是北京时区

SQL SELECT DBTIMEZONE FROM DUAL;

DBTIME

------

+00:00

DB是世界时区

SQL SELECT TZ_OFFSET(SESSIONTIMEZONE), TZ_OFFSET(DBTIMEZONE) FROM DUAL;

TZ_OFFS TZ_OFFS

------- -------

+08:00 +00:00

1.检查数据库是否有这样的字段类型 TIMESTAMP WITH LOCAL TIME ZONE

SQLselect 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

/

SQLselect 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#;

2.检查当前数据库时区

SQL select * from database_properties where property_name='DBTIMEZONE';

行将被截断

PROPERTY_NAME PROPERTY_VALUE

------------------------------ -------------------------------------------------

DBTIMEZONE 00:00

3.改变数据库时区

SQL ALTER DATABASE SET TIME_ZONE = '+8:00';

数据库已更改。

SQL shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL startup

ORACLE 例程已经启动。

Total System Global Area 272629760 bytes

Fixed Size 1248528 bytes

Variable Size 92275440 bytes

Database Buffers 171966464 bytes

Redo Buffers 7139328 bytes

数据库装载完毕。

数据库已经打开。

SQL select dbtimezone from dual;

DBTIME

------

+08:00

4.检查时间

SQL select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual

SQL SELECT SYSTIMESTAMP FROM dual;

SYSTIMESTAMP

---------------------------------------------------------------------------

23-7月 -09 11.50.25.750000 上午 +08:00

如何设置oracle时间戳类型的时区

时间戳的概念:它是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

下图是从linux系统中获得当前时间戳的一种方式

在oracle使用时间戳,一般都是为了方便计算时间差的,我们要知道oracle中的date类型想减是不能友好的得到时间的差值的。所以使用时间戳来得到两个时间差。

首先来看oracle中如何获得当前时间的时间戳,我们用当前时间减去计算机元年后再经过换算得到了的从1970年来到当前时间的时间戳,单位是微妙。

另外oracle提供了另一种便捷得到两个时间差的方式,那就是使用timestamp数据类型,它类似date类型,但是存储的时间更为精确,显示的格式:yyyy-mm-dd hh24:mi:ss.ff AM,其中ff是小数秒。

timestamp类型的时间差可读性也比上面那种好一些,可以直观看出两个时间差。

在oracle中,两个date类型的数值想减也可以转换成上述的timestamp可以的类型,这里就要介绍一个函数:numtodsinterval(n,'x'),它能将一个数值转换成timestamp那种格式的数据。但要注意:后面的参数'x'是取'day'、'minute'、'hour'完全取决于前面的单位,这样才能获得正确的时间差

最后我们介绍一个函数extract,该函数可以从timestamp类型的时间里抽取想要hour,minute等

如何更新rds oracle 时区

您可以通过修改AWS参数组的参数:time_zone修改MySQL的时区。关于如何修改亚马逊AWS参数:AWS参数是动态的,所以修改后立即生效。

对于已经建立的连接,不生效;对于新建立的连接才生效。

如果您创建了只读副本,您可以为主库和读从库设置不同的时区。

如果是从快照恢复数据库,时区将会被设置成UTC

如果是恢复到时间点,时区将会保持和原库一致


网页标题:如何修改oracle时区,如何修改oracle数据库时间
转载来于:http://ybzwz.com/article/hspgos.html