oracle11g创建完表之后,已分区为NO是咋回事儿,怎么直接向表里输入数据呀,谢谢谢谢!

解决方案 »

  1.   

    输入数据?insert?
    还是想干嘛?
    分区为NO,就是你这张表没有分区,不是分区表。
      

  2.   

    STEP1、建立表的各个分区的表空间: 
    CREATE TABLESPACE ts_sale1999q1 
    DATAFILE ‘/u1/oradata/sales/sales1999_q1.dat’ 
    SIZE 100M 
    DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0) 
    CREATE TABLESPACE ts_sale1999q2 
    DATAFILE ‘/u1/oradata/sales/sales1999_q2.dat’ 
    SIZE 100M 
    DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0) 
    CREATE TABLESPACE ts_sale1999q3 
    DATAFILE ‘/u1/oradata/sales/sales1999_q3.dat’ 
    SIZE 100M 
    DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0) 
    CREATE TABLESPACE ts_sale1999q4 
    DATAFILE ‘/u1/oradata/sales/sales1999_q4.dat’ 
    SIZE 100M 
    DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0) 
    STEP2、建立基于分区的表:
    再创建表后添加分区表 
    CREATE TABLE sales 
    (invoice_no NUMBER, 
    ... 
    sale_date DATE NOT NULL ) 
    PARTITION BY RANGE (sale_date) 
    (PARTITION sales1999_q1 
    VALUES LESS THAN (TO_DATE(‘1999-04-01’,’YYYY-MM-DD’) 
    TABLESPACE ts_sale1999q1, 
    PARTITION sales1999_q2 
    VALUES LESS THAN (TO_DATE(‘1999-07-01’,’YYYY-MM-DD’) 
    TABLESPACE ts_sale1999q2, 
    PARTITION sales1999_q3 
    VALUES LESS THAN (TO_DATE(‘1999-10-01’,’YYYY-MM-DD’) 
    TABLESPACE ts_sale1999q3, 
    PARTITION sales1999_q4 
    VALUES LESS THAN (TO_DATE(‘2000-01-01’,’YYYY-MM-DD’) 
    TABLESPACE ts_sale1999q4 ); 
      

  3.   

    create user name identified by pwd
    use tabalespace tablespace name
    quota 100M ON TABLESPACE;
      

  4.   

    具体由deferred_segment_creation这个参数控制,你可以看看这个参数的值是否为true,11g默认为true,也就是延迟分配,改为false就可以立刻分配了,也可使用alter table xxx allocate extent (size xxxk),立刻分配extend。
    其实延迟分配,不会影响dml语句。你使用dml语句之后,系统就会为段分配extent了。