oracle 分区拆分 不能插入数据 01502 索引失效
数据表day_energy当前为月分区表,分区信息如下:DE_200912,DE_201001,DE_201002.....,月分区表出现速度查询慢,因此通过建立日分区表进行改善。
拆分月分区表的语句为:
alter table day_energy split partition de_201001 at('20100102') into (partition de_20100101,partition de_20100102)
分析:
alter table 表名 split partition 分区名 at (分割日期) into (新分区1,新分区2);
如果简单的分区1个月的表,比较简单,但是如果要拆分一年的表,那就太复杂了。为了简单实现所以就通过以下这个过程进行批量拆分:
-- czc 拆分分区表
--将月分区表拆分成日分区表
declare
v_tbl varchar2(56);
v_partion varchar2(56);
datetime date;
v_sql varchar2(1024);
v_dt0 varchar2(8);
v_dt1 varchar2(8);
begin
datetime:=to_date('2010-11-1','yyyy-MM-dd');
v_tbl:='day_energy';
while to_char(datetime,'yyyyMMdd')!='20110101' loop
if to_char(datetime,'MM')=to_char(datetime+1,'MM') then
v_dt0:=to_char(datetime,'yyyyMMdd');
v_dt1:=to_char(datetime+1,'yyyyMMdd');
if to_number(to_char(datetime,'dd'))=1 then
v_partion:='DE_'||to_char(datetime,'yyyyMM');
else
v_partion:='DE_'||to_char(datetime,'yyyyMMdd');
end if;
v_sql:='alter table '||v_tbl||' split partition '||v_partion||' at ('''||v_dt1||''') into (partition DE_'||v_dt0||', partition DE_'||v_dt1||');';
dbms_output.put_line(v_sql);
--execute immediate v_sql;
end if;
datetime:=datetime+1;
end loop;
end;
但是出问题了,发现da
相关文档:
束,索引
1、查找表的所有索引(包括索引名,类型,构成列):
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表
2、查找表的主键(包括名称,构成列):
select cu.* from user_cons_columns cu ......
首先搞清下几个概念:
ORACLE中,约束分deferred 跟 immediate 2种:
deferred:如果 Oracle 在事务提交(commit)时才对约束执行检查,则称此约束是延迟的(deferred)。如果数据违反了延迟约束,提交操作将导致事务被回滚(undo)。
immediate:如果约束是即时的(immediate)(非延迟的),则此约束将在 ......
物化视图概述
Oracle的物化视图提供了强大的功能,可以用在不同的环境中。在不同的环境中,物化视图的作用也不相同。数据仓库中的物化视图主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。在数据仓库中,还经常使用查询重写(query r ......
--建立测试数据
create table a(id number);
create table b(id number);
insert into a values(1);
insert into a values(2);
insert into a values(3);
insert into b values(1);
insert into b values(2);
insert into b values(4);
commit;
--左:
--主流数据库通用的方法
select * from a left ......
oracle日期函数,
TO_DATE格式
Day:
dd number 12
dy abbreviated fri
day spelled out friday
ddspth spelled out, ordinal twelfth
Month:
mm number 03
mon abbreviated mar
month spelled out march
Year:
yy two ......