要实现每年的数据是一个表空间~~
如何在oracle中用存储过程实现把现有一个表空间的部分数据转到另一个表空间去??

解决方案 »

  1.   

    ALTER TABLE test
    MOVE TABLESPACE user将表test移动到表空间user;
      

  2.   

    推荐使用分区表,当然前提是数据库设计要做好 Oracle 10G: 引入了bigfile tablespace, 允许建立最大4G block
     的表空间(前提是:操作系统必须支持)
      例如:
        db_block_size=8192(8K), bigfile tablespace 大小=8K * 4G=32TB
        db_block_size=32768(32K),bigfile tablespace 大小=32k*4G=128TB
      

  3.   

    说得好,就是用分区表:
    CREATE TABLE sales_range 
    (salesman_id  NUMBER(5), 
    salesman_name VARCHAR2(30), 
    sales_amount  NUMBER(10), 
    sales_date    DATE)
    PARTITION BY RANGE(sales_date) 
    (
    PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('01/01/2000','DD/MM/YYYY') TABLESPACE ts1),
    PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('01/01/2001','DD/MM/YYYY') TABLESPACE ts2),
    PARTITION sales_mar2000 VALUES LESS THAN(TO_DATE('01/01/2002','DD/MM/YYYY') TABLESPACE ts3),
    PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('01/01/2003','DD/MM/YYYY') TABLESPACE ts4)
    );