`

Oracle 分区维护(使用procedure )

 
阅读更多
create or replace procedure pro_maintain_partition( tab_name in  varchar2)
as
  var_tab_name   varchar2(32) ;
  var_tab_bak_name   varchar2(32) ;
  var_partition      varchar2(32) ;
  var_less_than      varchar2(8) ;
  var_flag           number ;
begin
  select upper(tab_name) into var_tab_name from dual ;
  select upper(tab_name||'_bak') into var_tab_bak_name from dual ;

  select count(1) into var_flag from user_segments
  where segment_name = var_tab_name
  and partition_name like '%'||to_char(sysdate , 'yyyy_mm') ;

  select var_tab_name||'_'||to_char(sysdate , 'yyyy_mm') into var_partition from dual ;
  select to_char(add_months(sysdate , 1) , 'yyyymm')||'01' into var_less_than from dual ;

  if var_flag = 0 then
     --如当月分区不存在,则新增当月分区
     execute immediate 'alter table '||var_tab_name||' add partition '||var_partition||' values less than ('||var_less_than||')';
  end if;

  select count(1) into var_flag from user_segments
  where segment_name = var_tab_bak_name
  and partition_name like '%'||to_char(add_months(sysdate , -4) , 'yyyy_mm') ;

  if var_flag = 0 then
     select var_tab_bak_name||'_'||to_char(add_months(sysdate , -4) , 'yyyy_mm') into var_partition from dual ;
     select to_char(add_months(sysdate , -3) , 'yyyymm')||'01' into var_less_than from dual ;
     --如备份表分区不存在,则新增备份月分区
     execute immediate 'alter table '||var_tab_bak_name||' add partition '||var_partition||' values less than ('||var_less_than||')';
     --备份数据     
     select var_tab_name||'_'||to_char(add_months(sysdate , -4) , 'yyyy_mm') into var_partition from dual ;
     execute immediate 'insert into '||var_tab_bak_name||' select * from '||var_tab_name||' partition('||var_partition||')';
     
     /*insert into var_tab_bak_name
     select * from var_tab_name partition(var_partition) ;*/
     commit ;
     --删除已备份月分区     
     execute immediate 'alter table '||var_tab_name||' drop partition '||var_partition;
  end if;

end;




Table
-- Create table
create table TB_STEP_WAIT_HOLD
(
  YYYYMMDD        VARCHAR2(16),
  SHIFT           VARCHAR2(8),
  STAGEID         VARCHAR2(64),
  LOTID           VARCHAR2(16),
  RECPNAME        VARCHAR2(8),
  QTY             NUMBER,
  TRACKINTIME     DATE,
  TRACKOUTTIME    DATE,
  STEP_START_TIME DATE,
  Q_H_TIME        NUMBER,
  END_TIME        DATE,
  START_TIME      DATE,
  UPDATE_TIME     DATE
)
partition by range (YYYYMMDD)
(
  partition TB_STEP_WAIT_HOLD_2014_09 values less than ('20141001')
    tablespace RPTCMT_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 10M
      next 10M
      minextents 1
      maxextents unlimited
      pctincrease 0
    ),
  partition TB_STEP_WAIT_HOLD_2014_10 values less than ('20141101')
    tablespace RPTCMT_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 10M
      next 10M
      minextents 1
      maxextents unlimited
      pctincrease 0
    ),
  partition TB_STEP_WAIT_HOLD_2014_11 values less than ('20141201')
    tablespace RPTCMT_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 10M
      next 10M
      minextents 1
      maxextents unlimited
      pctincrease 0
    ),
  partition TB_STEP_WAIT_HOLD_2014_12 values less than ('20150101')
    tablespace RPTCMT_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 10M
      next 10M
      minextents 1
      maxextents unlimited
      pctincrease 0
    )
);



Bak Table
-- Create table
create table TB_STEP_WAIT_HOLD_BAK
(
  YYYYMMDD        VARCHAR2(16),
  SHIFT           VARCHAR2(8),
  STAGEID         VARCHAR2(64),
  LOTID           VARCHAR2(16),
  RECPNAME        VARCHAR2(8),
  QTY             NUMBER,
  TRACKINTIME     DATE,
  TRACKOUTTIME    DATE,
  STEP_START_TIME DATE,
  Q_H_TIME        NUMBER,
  END_TIME        DATE,
  START_TIME      DATE,
  UPDATE_TIME     DATE
)
partition by range (YYYYMMDD)
(
  partition TB_STEP_WAIT_HOLD_BAK_2014_08 values less than ('20140901')
    tablespace RPTCMT_DATA
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 10M
      next 10M
      minextents 1
      maxextents unlimited
      pctincrease 0
    )
);

分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    最全的oracle常用命令大全.txt

    ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、...

    Oracle8i_9i数据库基础

    §5.2.4 维护表分区和索引分区 167 §5.3 簇与分区有关的数据字典 169 §5.3.1 分区、簇数据字典列表 169 §5.3.2 基本的分区、簇信息查询 169 第六章 使用SQL 进行数据操作 170 §6.1 INSERT操作 170 §6.1.1 用...

    Oracle查询总结与优化

    procedure sp_Page(p_PageSize int, --每页记录数 p_PageNo int, --当前页码,从 1 开始 p_SqlSelect varchar2, --查询语句,含排序部分 p_OutRecordCount out int,--返回总记录数 p_OutCursor out refCursorType)...

    Oracle事例

    sql> alter index xay_id allocate extent(size 200k datafile \'c:/oracle/index.dbf\'); <8>.alter index xay_id deallocate unused; 、查看索引 SQL>select index_name,index_type,table_name from user...

    Toad 使用快速入门

    需要使用Oracle8i 的Profile analyzer,必须运行ToadProfiler.sql  需要加强Toad的安全性,必须运行ToadSecurity.sql 四、Toad使用快速入门 1. Schema Browser: Schema browser是Toad的极为有特色的模块。...

    网管教程 从入门到精通软件篇.txt

    向系统分区写入新的主引导记录可能破坏分区表并导致分区无法访问。  format  将指定的驱动器格式化为指定的文件系统。含有下列参数的 format 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同...

    数据库基础

    §5.2.4 维护表分区和索引分区 167 §5.3 簇与分区有关的数据字典 169 §5.3.1 分区、簇数据字典列表 169 §5.3.2 基本的分区、簇信息查询 169 第六章 使用SQL 进行数据操作 170 §6.1 INSERT操作 170 §6.1.1 用...

    经典SQL语句大全

    A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table...

    数据库操作语句大全(sql)

    A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table...

    sql经典语句一部分

    A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table...

Global site tag (gtag.js) - Google Analytics