Oracle 12c 新特性 --- PDBs 可以设置不同的time zone
程序员文章站
2024-03-14 13:42:04
...
1 概念
This feature enables pluggable databases (PDB) in a consolidated database (CDB) to have different character sets, time zone file versions, and database time zones.
这个特性使可插入数据库(PDB)在一个统一的数据库(CDB)中具有不同的字符集、时区文件版本和数据库时区。
CDB enables multiple departmental databases to be consolidated into one consolidated database with each of these databases as pluggable databases (PDBs). This feature enables the consolidation of databases that have different character sets, time zone file versions, and database time zones into a CDB.
CDB允许将多个部门数据库合并成一个统一的数据库,其中每个数据库都是可插入数据库(PDBs)。该特性使具有不同字符集、时区文件版本和数据库时区的数据库合并成一个CDB。
2 实验
Oracle允许您使用一个时区名称指定数据库时区,在V$TIMEZONE_NAMES视图中列出,或者使用UTC偏移量( +/-hh:MI)。出于性能原因,Oracle建议将数据库时区设置为UTC(0:00),因为不需要转换时区。
多租户体系结构允许您为每个可插入数据库指定一个不同的数据库时区,并使用容器数据库的时区作为默认值。
在容器数据库级别设置时区与为非cdb实例设置时区相同。CDB设置是所有可插入数据库的默认值。
2.1 检查容器数据库的当前时区。
[[email protected] ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 12.2.0.1.0 Production on Thu Aug 10 12:59:33 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> SELECT dbtimezone FROM DUAL;
DBTIME
------
+00:00
2.2 使用ALTER DATABASE命令重置时区,以指定新的TIME_ZONE值。需要重新启动数据库以使其生效。
SQL> ALTER DATABASE SET TIME_ZONE='Europe/London';
Database altered.
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP;
ORACLE instance started.
Total System Global Area 1593835520 bytes
Fixed Size 8793256 bytes
Variable Size 1023411032 bytes
Database Buffers 553648128 bytes
Redo Buffers 7983104 bytes
Database mounted.
Database opened.
2.3 我们可以看到数据库时区已经改变。
SQL> conn /as sysdba
Connected.
SQL> SELECT dbtimezone FROM DUAL;
DBTIMEZONE
-------------
Europe/London
2.4 在可插入数据库中设置时区允许它覆盖CDB设置。
检查可插入数据库的当前时区。
SQL> ALTER SESSION SET CONTAINER = pdbcndba;
Session altered.
SQL> SELECT dbtimezone FROM DUAL;
DBTIME
------
+00:00
2.5 使用ALTER DATABASE命令重置时区,以指定新的TIME_ZONE值。可插入数据库需要重新启动才能生效。
SQL> ALTER DATABASE SET TIME_ZONE='US/Eastern';
Database altered.
SQL> SHUTDOWN IMMEDIATE;
Pluggable Database closed.
SQL> STARTUP;
Pluggable Database opened.
2.6 我们可以看到,可插入的数据库时区与容器数据库不同。
SQL> conn /as sysdba
Connected.
SQL> SELECT dbtimezone FROM DUAL;
DBTIMEZONE
-------------
Europe/London
SQL> ALTER SESSION SET CONTAINER = pdbcndba;
Session altered.
SQL> SELECT dbtimezone FROM DUAL;
DBTIMEZONE
----------
US/Eastern
3 参考文档