创建一个table,记录哪些表需要创建表分区

create table STAT_TABLE
(
tablename VARCHAR2(),
pre_partition_name VARCHAR2(),
tb_name VARCHAR2(),
add_inteval NUMBER,
owner VARCHAR2()
)
tablespace USERS
pctfree
initrans
maxtrans
storage
(
initial 64K
next 1M
minextents
maxextents unlimited
);

定时执行存储过程

CREATE OR REPLACE PROCEDURE SP_ADD_PARTITION(statdate DATE) Authid Current_User AS

  V_CREATETB_SQL     VARCHAR2();

  V_TB_CNT           NUMBER;
V_PARTITION_CNT NUMBER;
V_STAT_DATE DATE DEFAULT statdate;
V_STATDATE_STR VARCHAR2() DEFAULT TO_CHAR(V_STAT_DATE, 'YYYYMMDD');
V_PARTITION_NAME VARCHAR2();
V_TB_NAME_P VARCHAR2();
V_TB_NAME VARCHAR2();
V_DATAFILE VARCHAR2();
V_SQL_CMD VARCHAR2();
V_TABLENAME VARCHAR2();
V_SUB_PARTITION NUMBER; BEGIN
FOR TAB IN (SELECT T.TABLENAME,
T.PRE_PARTITION_NAME,
T.TB_NAME,
T.ADD_INTEVAL,
T.OWNER
FROM STAT_TABLE T
) LOOP
BEGIN
V_PARTITION_NAME := TAB.PRE_PARTITION_NAME || V_STATDATE_STR;
V_TB_NAME := TAB.TB_NAME;
V_TABLENAME := TAB.TABLENAME; BEGIN
/*判断表分区是否存在*/
SELECT COUNT()
INTO V_PARTITION_CNT
FROM DBA_TAB_PARTITIONS t
WHERE T.TABLE_NAME = upper(TAB.TABLENAME)
AND T.PARTITION_NAME = V_PARTITION_NAME
and T.TABLE_OWNER=upper(TAB.Owner); IF V_PARTITION_CNT = THEN --判断是否需要创建子分区
V_SQL_CMD := 'ALTER TABLE ' || tab.Owner ||'.' ||TAB.TABLENAME ||
' ADD PARTITION ' || V_PARTITION_NAME ||
' VALUES LESS THAN (to_date(''' ||
TO_CHAR(V_STAT_DATE + TAB.ADD_INTEVAL, 'YYYYMMDD') ||
''',''yyyymmdd'')) TABLESPACE ' || V_TB_NAME ||' COMPRESS';
EXECUTE IMMEDIATE V_SQL_CMD;
END IF;
EXCEPTION WHEN OTHERS THEN
dbms_output.put_line(V_SQL_CMD);
END; EXCEPTION WHEN OTHERS THEN
--sp_etl_error_logs_pro('SP_ADD_PARTITION', v_sql_cmd, V_STATDATE_STR);
null;
END;
END LOOP;
END SP_ADD_PARTITION;

oracle自动创建表分区的更多相关文章

  1. oracle11g interval(numtoyminterval())自动创建表分区

    Oracle11g通过间隔分区实现按月创建表分区 在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理.由于表中的数据是历史交易,故按月分区,提升查询和管理. 由于之前对于表分区了解不 ...

  2. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  3. sql2008 计划自动创建数据库分区【转】

    本文转自:http://jingyan.baidu.com/article/6b97984d9a26ec1ca3b0bf77.html sql2008 计划自动创建数据库分区 固定增量的数据,自动创建 ...

  4. Oracle 10g创建表空间的完整步骤详解

    本文我们主要介绍了Oracle 10g创建表空间的完整步骤,包括表空间的创建与删除.为应用创建用户以及权限的授予等操作,希望能够对您有所帮助. AD:WOT2014:用户标签系统与用户数据化运营培训专 ...

  5. oracle如何创建表的自增ID(通过触发器)

    Oracle中创建表的自增ID(通过触发器),序列的自增ID和触发器的自增ID的区别 1.新增数据(序列) --创建示例表 -- create table Student( stuId ) not n ...

  6. Oracle数据库创建表是有两个约束带有默认索引

    Oracle数据库创建表是有两个约束带有默认索引.1.主键primary Key:唯一索引.非空2.唯一Unique:唯一索引,可以是空值如果没有设定主键和唯一约束,表中不会有默认索引的. 建立主键/ ...

  7. Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间

    Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一:  删除user drop ...

  8. Hibernate自动创建表

    只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 <property name="hibernate.hbm2ddl.auto">update& ...

  9. Hibernate连接mysql数据库并自动创建表

    天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...

随机推荐

  1. 扫描局域网中Gogs服务器(ruby)

    scanGogs.rb #!/usr/bin/env ruby require 'net/http' require 'thread' require 'english' # config CONFI ...

  2. request获取路径方式

    从request获取各种路径总结 request.getRealPath("url"); // 虚拟目录映射为实际目录 request.getRealPath("./&q ...

  3. LeetCode OJ:Evaluate Reverse Polish Notation(逆波兰表示法的计算器)

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  4. Week04《Java程序设计》第四周学习总结

    Week04<Java程序设计>第四周学习总结 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:static关键字,final关键字,静态初始块,抽象类,继承, ...

  5. win+D可以最小化所有窗口,显示桌面 win+E可以快速打开我的电脑 这两个对我来说非常常用,要用熟练,节约时间

    win+D可以最小化所有窗口,显示桌面   win+E可以快速打开我的电脑

  6. flash代码

    Flash常用的动作命令一.Flash中的常用命令:1.在当前帧停止播放 on(release){ stop();} 2.从当前帧开始播放 on(release){ play();} 3.跳到第 10 ...

  7. SVN的搭建及使用(三)用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突,重新设置用户名和密码等

    添加文件 在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态,如图: 这时候,你需要告知TortoiseSVN你的操作,如图: 加入以后,你的文件会变 ...

  8. sql server显示行号

    --    工具-> --    选项-> --    文本编辑器-> --    所有语言-> --    常规-> --    显示-> --    行号

  9. Scikit-Learn:开源的机器学习Python模块(转载)

    摘要: scikit-learn是一个用于机器学习的Python模块,其具有操作简单.效率高.无访问限制.BSD开源协议等等特征,在机器学习这一块是比较受欢迎的. scikit-learn是一个用于机 ...

  10. 【后端】Python学习笔记

    主要学习材料:<笨办法学习Python> ,(虫师的博客) 后面根据虫师的Python教程再对Pyhon进行了一次重新学习 ================================ ...