2013-11-28 59 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