----注:oracle11g虽然可以自动分区,但是分区的名字不能自定义,对于需要定时删除分区时没法处理,不如通过时间范围来手工分区。详见 https://www.jianshu.com/p/d288b87e7db2
http://blog.itpub.net/30126024/viewspace-2144878/
create table HIP_LOG_NODE_Part
(
ID VARCHAR2(32) not null,
RECORD_TIME DATE
)tablespace TB_HIP_LOG_NODE
PARTITION BY RANGE (RECORD_TIME) interval (numtoyminterval(1, 'month'))
STORE IN (TB_HIP_LOG_NODE)
(
partition hip_log_node_partition values less than (to_date('2019-08-01 00:00','yyyy-MM-dd HH24:mi')) tablespace TB_HIP_LOG_NODE
)
1、Oracle11g有间隔分区功能,对于使用Range分区的可以按年,月,日来自动生成分区。
2、2019-08-01前的数据(包含8月份的数据)会放入hip_log_node_partition 分区,8月1日后的数据每月只要有数据,就会自动创建一个分区。也就是从9月开始,开始新建分区。
3、interval函数--将数值按标准换算为日期
numtodsinterval、numtodsinterval函数,将数字转成年月,时分秒
详见:https://blog.csdn.net/jolly10/article/details/82621449
4、查看表分区 select table_name,partition_name from user_tab_partitions where table_name='INTERVAL_SALES'
5、插入数据再次查看分区,详见:http://blog.itpub.net/10271187/viewspace-1765908/
6、修改分区、合并分区、拆分分区,详见 :https://www.cnblogs.com/gemine/p/9011898.html
7、创建索引(分区索引、全局索引) :
非分区字段创建主键,则创建主键local索引时必须加上分区字段
ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (主键字段,分区字段) USING INDEX LOCAL
http://blog.itpub.net/30126024/viewspace-2144878/
8、oracle 10g创建表分区 https://blog.csdn.net/canway01/article/details/103871929
9、删除
1.不保留,直接删除:https://zhidao.baidu.com/question/1865544374775063187.html
alter table table_name drop/truncate partition partition_name
具体用drop还是truncate,得你自己衡量,drop的话原来的分区和数据直接就没有了,truncate的话,只是数据没有了,分区还在。
Oracle数据库中,当用户手动新增分区数据时,该数据会自动进入分区中。当用户使用 “Alter Table” 语句新建分区时,Oracle 会根据分区键的值将新增数据自动放入分区中。但是,如果用户在新建分区之前就已经有了一些数据,那么这些数据不会自动进入分区中,而是需要用户手动将这些数据放入分区中。程序中不能直接执行alter命令,要这样改:DECLARE
T date
cmd varchar2(500)-- 用cmd变量存储拼接好的命令
BEGIN
SELECT trunc(add_months(sysdate,1),'mm') INTO T FROM DUAL
cmd:='alter table TEST ADD partition TIME_'||TO_CHAR(T,'yyyymm')||' values LESS THAN(trunc(add_months(sysdate,2),''mm''))'
dbms_output.put_line(cmd)-- 可以检查一下拼接后的命令有没有问题
execute immediate cmd
……
后面的alter等命令,用同样的方式,先赋值给cmd,再用execute immediate cmd执行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)