2013-11-28 60 views
1

我必须在oracle中创建一个表,表示当地零售商,并且在多个州都有商店。假设他想他的店分成根据每个国家中的位置的特定区域,我在Oracle中创建分区表时遇到了问题

地区名称位置 南佛罗里达州的迈阿密,奥兰多 北佛罗里达州杰克逊维尔,彭萨科拉,坦帕 南乔治亚不伦瑞克,韦克罗斯,瓦尔多斯塔 北乔治亚州亚特兰大,萨凡纳

要使用列表分区方法,通过区域划分我们的商店信息,我使用CREATE TABLE命令,如下所示:

CREATE TABLE store_master 
     (Store_id     NUMBER, 
      Store_address    VARCHAR2(40), 
      City      VARCHAR2(30), 
      State      VARCHAR2(2), 
      zip      VARCHAR2(10), 
      manager_id     NUMBER ) 
      PARTITION BY LIST (city) 
      STORAGE(INITIAL 100k, NEXT 100k, PCTINCREASE 0) 
      TABLESPACE store_data 
      (
       PARTITION south_florida 
        VALUES ('MIAMI','ORLANDO') 
        STORAGE(INITIAL 100k, NEXT 100k, PCTINCREASE 0) 
        TABLESPACE store_data_south_florida, 
       PARTITION north_florida 
        VALUES ('JACKSONVILLE','TAMPA', 'PENSACOLA') 
        STORAGE(INITIAL 100k, NEXT 100k, PCTINCREASE 0) 
        TABLESPACE store_data_north_florida, 
       PARTITION south_georga 
        VALUES ('BRUNSWICK', 'WAYCROSS', 'VALDOSTA') 
        STORAGE(INITIAL 100k, NEXT 100k, PCTINCREASE 0) 
        TABLESPACE store_data_south_georga, 
       PARTITION north_georgia 
        VALUES ('ATLANTA','SAVANNAH', NULL)); 

可以也看到在这里http://sqlfiddle.com/#!4 ,但我得到这个错误..

架构创建失败:ORA-00922:丢失或无效的选项

请人帮忙。

+0

是所有指定表空间已创建的?它在“TABLESPACE store_data_south_georga”(而不是'store_data_south_georgIa')中输入错误吗? – ThinkJet

回答

1

表级存储应高于PARTITION BY子句。分区继承表级存储参数,因此不需要再次指定它(除非它们对于分区不同)。存储参数也不是逗号分隔的。

这应该工作:

CREATE TABLE store_master 
     (Store_id     NUMBER, 
      Store_address    VARCHAR2(40), 
      City      VARCHAR2(30), 
      State      VARCHAR2(2), 
      zip      VARCHAR2(10), 
      manager_id     NUMBER ) 
      STORAGE(INITIAL 100k NEXT 100k PCTINCREASE 0) 
      TABLESPACE store_data 
      PARTITION BY LIST (city) 
      (
       PARTITION south_florida 
        VALUES ('MIAMI','ORLANDO') 
        TABLESPACE store_data_south_florida, 
       PARTITION north_florida 
        VALUES ('JACKSONVILLE','TAMPA', 'PENSACOLA') 
        TABLESPACE store_data_north_florida, 
       PARTITION south_georga 
        VALUES ('BRUNSWICK', 'WAYCROSS', 'VALDOSTA') 
        TABLESPACE store_data_south_georga, 
       PARTITION north_georgia 
        VALUES ('ATLANTA','SAVANNAH', NULL)); 
+0

谢谢你的答案,但我是新的蟾蜍,所以我不知道这种类型的操作,所以当使用蟾蜍我给商店数据表空间的名字,然后它要求我的数据data.so数据文件列表我给出了子表空间的名称,即store_data_south_florida等..我是否正确? – lucifer

+0

注意术语。数据文件是物理的,而表空间是一个逻辑结构。表级别的表空间指定存储数据的位置,用于未分区的表。对于分区表,它指定了要使用的默认表空间,尽管它可以在分区级别被覆盖。这里north_georgia将使用表空间store_data,而其余分区将使用PARTITION子句中指定的表空间。 –

+0

好吧,我明白你的解释,它很好。但在这里你告诉我有关物理数据文件。所以从哪里我将指定物理数据文件? – lucifer