PR_LOAD_DATA
ALL_TAB_PARTITION记录了当前用户可访问的所有分区表信息,PARTITION_POSITION=1是默认分区,
调用PR_ADD_PARTITION为历史表增加分区,然后拿到当前表的PARTITION_POSITION=1的表空间名,这个是建表时的默认分区,然后看当前表是否存在表名_TMP的临时表,如果存在,将其删除,DROP TABLE TABLE_NAME PURGE(带PURGE是指不经过回收站而直接删除,一般drop表,会将表名更改掉放到回收站里面,在RECYCLEBIN里面可以查到表名和字段值信息,OBJECT_NAME就是更改后的表名,拿到这个字段的值加上双引号就可以当表名用,SELECT * FROM "OBJECT_NAME"的值就可以看到drop掉的表的信息,当drop表后面带PURGE时,就不会将表的信息记录在RECYCLEBIN里面,RECYCLEBIN清空的方法是 PURGE RECYCLEBIN),然后创建一个表名_TMP的临时表,拿到当前表的历史表所有数据,nologging,不记录redo信息,然后给临时历史表加分区
总结:一共三步,删除历史临时表,创建历史临时表与当前表同步数据,然后拿历史临时表和历史表交换分区,为什么不拿当前表交换分区呢,因为交换完了数据就没了
交换分区的语法:ALTER TABLE OWNER.分区没值的那个目标表 EXCHANGE PARTITION P_V_DATA_DATE WITH TABLE OWNER.有值的那个临时表
PR_ADD_PARTITION