Oracle升级时区,oracle 时区

1. How to check the session time zone ?

=======================================

Answer

------

The new SESSIONTIMEZONE built-inSQLfunction returns the value of the current

session's time zone.

SQL> SELECT SESSIONTIMEZONE FROM DUAL;

SESSIONTIMEZONE

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

+01:00

2. How to set the session time zone ?

=====================================

Answer

------

The session time zone can be set to:

- O/S local time zone

- Database time zone

- An absolute offset

- A named region

1. The first method consists to use one of the following ALTER SESSION SET

TIME_ZONE statements:

SQL> ALTER SESSION SET TIME_ZONE = local;

SQL> ALTER SESSION SET TIME_ZONE = dbtimezone;

SQL> ALTER SESSION SET TIME_ZONE = '-05:00';

SQL> ALTER SESSION SET TIME_ZONE = 'Europe/London';

2. As an alternative, the operating system environment variable ORA_SDTZ can

also be used to set the session time zone:

ORA_SDTZ = 'OS_TZ' | 'DB_TZ' | '[+ | -] hh:mm' | 'timezone_region'

Example:

$ ORA_SDTZ='OS_TZ'

$ export ORA_SDTZ

$ ORA_SDTZ='-05:00'

$ export ORA_SDTZ

3. How to check the database time zone ?

========================================

Answer

------

The DBTIMEZONE SQL function returns the value of the database time zone.

SQL> SELECT DBTIMEZONE FROM DUAL;

DBTIMEZONE

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

Europe/Lisbon

@ Note that the database timezone is also included in both database_properties

@ and props$ views:

@ SQL> SELECT property_name, property_value

@ FROM database_properties

@ WHERE property_name='DBTIMEZONE';

@ and

@ SQL> SELECT name, value$

@ FROM props$

@ WHERE name='DBTIMEZONE';

@ Be aware that you should not rely on these views because in case of db time zone

@ change, these views reflect the new db time zone too early: they should reflect

@ it only after database shutdown and restart.

4. How to set the database time zone ?

======================================

Answer

------

Note that the database time zone is only relevant for TIMESTAMP WITH LOCAL TIME ZONE

columns.

1. At creation time

SQL> CREATE DATABASE ...

SET TIME_ZONE='Europe/London';

If not specified with the CREATE DATABASE statement, the database time zone

defaults to the serverO/S timezone offset.

2. After database creation, use the ALTER DATABASE SET TIME_ZONE statement and

then shut down and restart the database.

SQL> ALTER DATABASE SET TIME_ZONE = '-05:00';

SQL> ALTER DATABASE SET TIME_ZONE = 'Europe/Lisbon';

The change will not take effect until the database is bounced.

5. How to list the valid time zone regions ?

============================================

Answer

------

SQL> SELECT * FROM v$timezone_names;

TZNAME TZABBREV

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

Pacific/Tahiti LMT

Poland LMT

US/Pacific PST

Europe/Zurich CET

...

The result will depend on which timezone file is currently in use.

See Q&A 7-8 for further details.

6. How to retrieve the time zone offset corresponding to a time zone region ?

=============================================================================

The new 9i TZ_OFFSET() SQL function returns the time zone offset displacement

to the input time zone region.

SQL> SELECT TZ_OFFSET('Europe/London') FROM DUAL;

TZ_OFFS

-------

+01:00

The returned offset depends on the date this statement is executed.

For example, in the 'US/Pacific' time zone, it may return '-07:00' or '-08:00'

whether daylight saving is in effect or not.

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

returns the time zone offset corresponding to the time zone set for session

and database.

TZ_OFFS TZ_OFFS

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

+01:00 +00:00

7. How to use a larger set of defined time zones ?

==================================================

2 different time zone files contain for each zone the offset from UTC,

the transition times for daylight savings and abbreviation :

- ORACLE_HOME/oracore/zoneinfo/timezone.dat

This is the default and contains the most commonly used time zones.

This is the smallest file.

- ORACLE_HOME/oracore/zoneinfo/timezlrg.dat

This file contains the larger set of defined time zones and can be used

if you require time zones that are not defined in the default time zone file.

To enable the use of this larger time zone data file :

1. Shutdown the database

2.1 On UNIX platforms :

set the ORA_TZFILE environment variable to the full pathname of

the location for the timezlrg.dat. By default, this should be

$ORACLE_HOME/oracore/zoneinfo/timezlrg.dat:

$ setenv ORA_TZFILE $ORACLE_HOME/oracore/zoneinfo/timezlrg.dat

2.2 On Windows systems :

You should add an ORA_TZFILE registry subkey for each of your Oracle Homes

with the Windows Registry Editor:

Start -> Run...

Type "regedit", and click "ok"

Add or edit the following registry entry:

HKEY_LOCAL_MACHINE>SOFTWARE>ORACLE>HOMEid>ORA_TZFILE

where ID is the unique number identifying the Oracle home.

Set the ORA_TZFILE to the full pathname of the location for the timezlrg.dat:

By default, the value should be %ORACLE_HOME%oracorezoneinfotimezlrg.dat

3. Restart the database

Once the larger timezlrg.dat is used, it must continue to be used unless the

user is sure that none of the non-default zones are used for data that is stored

in the database.

Also, all databases that share information should use the same time zone data

file.

Be aware that you can neither create nore alter these timezone definition files !

8. Which timezone-set is currently used ?

=========================================

Beside checking the UNIX ORA_TZFILE parameter or the Windows registry subkey,

you can easily check whether you are using the large or the default timezone

file with the following query:

SQL> SELECT COUNT(*) FROM v$timezone_names;

If the default-smallest timezone region file is in use, it will return:

COUNT(*)

----------

616 (in 9.0.1.x and 9.2.x)

or

COUNT(*)

----------

1250 (in 9.0.1.x and 9.2.x)

if the largest file is in use.

9. Can customers rely on Oracle time zones ?

============================================

Timezone.dat and timezlrg.dat are based on information maintained by the U.S. Navy

Observatory.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle 34时区补丁是针对Oracle数据库中时区信息更新的一个补丁。在2019年,世界各地进行了一次全球时区信息调整,这次调整为了反映出国际标准的UTC时间,使得全球的时区信息得到了修改和更新。Oracle数据库作为一个全球性的数据库系统,自然也要跟随这次时区信息调整进行相应的更新。 然而,这次更新并不是一次简单的更新。由于全球时区的复杂性和历史悠久性,时区信息的更新覆盖面非常广,涉及到数据库中大量的时间函数和时区组件等,如何确保所有组件和函数的正确性和兼容性,是一个极具挑战性的问题。因此Oracle公司发布了针对这次时区信息调整的34时区补丁,以解决这个问题。 这个补丁主要包含了两个方面的内容。首先,它会更新Oracle数据库中的时区组件,确保时区信息更新后的正确性和兼容性;其次,它还会更新数据库中已有的时间函数和日期数据,防止出现时间计算错误等问题。 对于使用Oracle数据库的用户而言,安装这个补丁对于保证数据的正确性和完整性至关重要。因此,Oracle公司也对这个补丁的安装给出了详细的指导和说明,用户在进行更新前,应该先认真阅读文档和备份数据,以避免出现不可预期的问题。 总之,Oracle 34时区补丁是为了保证Oracle数据库系统中时区信息的正确性和兼容性而发布的,对于使用Oracle数据库的用户来说是十分重要和必要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值