Database 创建分区正在使用带有本地时区的时间戳[Oracle 11g]
在oracle database 11g中创建分区时,我尝试为我的问题找到一个解决方案。我认为分区不能在数据类型“带有本地时区的时间戳”上创建,是真的吗 我发现下面是关于这个主题的论述: 有人知道这个问题的解决办法吗 代码示例:Database 创建分区正在使用带有本地时区的时间戳[Oracle 11g],database,oracle11g,partitioning,ddl,Database,Oracle11g,Partitioning,Ddl,在oracle database 11g中创建分区时,我尝试为我的问题找到一个解决方案。我认为分区不能在数据类型“带有本地时区的时间戳”上创建,是真的吗 我发现下面是关于这个主题的论述: 有人知道这个问题的解决办法吗 代码示例: CREATE TABLE "XPTO" ( "XPTO_DATE" TIMESTAMP (6) WITH LOCAL TIME ZONE ) STORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_C
CREATE TABLE "XPTO"
(
"XPTO_DATE" TIMESTAMP (6) WITH LOCAL TIME ZONE
)
STORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "TABLES"
PARTITION BY RANGE ("XPTO_DATE") INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
(
PARTITION "P1" VALUES LESS THAN (TIMESTAMP' 2013-01-01 00:00:00')
SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
TABLESPACE "TABLES"
)
SQL错误:ORA-14020-“可能没有为表分区指定此物理属性”…您不能在该类型的列上设置分区间隔。您可以添加一个虚拟列,该列的UTC时间相当于您的本地时区时间戳,并在该列上进行分区:
CREATE TABLE "XPTO"
(
"XPTO_DATE" TIMESTAMP (6) WITH LOCAL TIME ZONE,
"XPTO_GMT" TIMESTAMP (6) GENERATED ALWAYS AS (SYS_EXTRACT_UTC("XPTO_DATE"))
)
STORAGE(BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "TABLES"
PARTITION BY RANGE ("XPTO_GMT") INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
(
PARTITION "P1" VALUES LESS THAN (TIMESTAMP '2013-01-01 00:00:00 UTC')
SEGMENT CREATION DEFERRED
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
TABLESPACE "TABLES"
);
table "XPTO" created.
分区大小大致相同,但边界有点不同,但这可能无关紧要——我想这对分区交换来说是个问题,但不确定它是否会对您产生任何其他明显的影响。您得到的是ORA-14020,not ORA-14751:间隔分区表的分区列的数据类型无效?但我认为你是对的。。。