Database 创建分区正在使用带有本地时区的时间戳[Oracle 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

在oracle database 11g中创建分区时,我尝试为我的问题找到一个解决方案。我认为分区不能在数据类型“带有本地时区的时间戳”上创建,是真的吗

我发现下面是关于这个主题的论述:

有人知道这个问题的解决办法吗

代码示例:

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:间隔分区表的分区列的数据类型无效?但我认为你是对的。。。