oracle自动创建表分区
创建一个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自动创建表分区的更多相关文章
- oracle11g interval(numtoyminterval())自动创建表分区
Oracle11g通过间隔分区实现按月创建表分区 在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理.由于表中的数据是历史交易,故按月分区,提升查询和管理. 由于之前对于表分区了解不 ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- sql2008 计划自动创建数据库分区【转】
本文转自:http://jingyan.baidu.com/article/6b97984d9a26ec1ca3b0bf77.html sql2008 计划自动创建数据库分区 固定增量的数据,自动创建 ...
- Oracle 10g创建表空间的完整步骤详解
本文我们主要介绍了Oracle 10g创建表空间的完整步骤,包括表空间的创建与删除.为应用创建用户以及权限的授予等操作,希望能够对您有所帮助. AD:WOT2014:用户标签系统与用户数据化运营培训专 ...
- oracle如何创建表的自增ID(通过触发器)
Oracle中创建表的自增ID(通过触发器),序列的自增ID和触发器的自增ID的区别 1.新增数据(序列) --创建示例表 -- create table Student( stuId ) not n ...
- Oracle数据库创建表是有两个约束带有默认索引
Oracle数据库创建表是有两个约束带有默认索引.1.主键primary Key:唯一索引.非空2.唯一Unique:唯一索引,可以是空值如果没有设定主键和唯一约束,表中不会有默认索引的. 建立主键/ ...
- Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间
Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一: 删除user drop ...
- Hibernate自动创建表
只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 <property name="hibernate.hbm2ddl.auto">update& ...
- Hibernate连接mysql数据库并自动创建表
天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...
随机推荐
- pxcook-高效易用的自动标注工具, 生成前端代码
1.pxcook.sketch(http://www.fancynode.com.cn/pxcook)
- Java(Android)线程池妙用
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端执行一个异步任务你还只是如下new T ...
- MAC版画图软件 paintbrush 推荐,类似 windows 上系统自带的画图软件
不想开photoshop这么重的软件,但是对于屏幕截图有需要有一点处理.这时候我想起 windows上画图的好了. 搜索了一下,知道了 paintbrush 这个软件,于是下载试用了一下,果然很好. ...
- matlab批量转化img到gray
path = 'D:\宝贝儿数据集\COIL-3D\coil-100\'; save_path = 'D:\宝贝儿数据集\COIL-3D\coil-100-gray\'; file=dir([path ...
- Leetcode 1006. Clumsy Factorial
class Solution(object): def clumsy(self, N): """ :type N: int :rtype: int "" ...
- NGUI 学习使用
http://www.tasharen.com/forum/index.php?board=12.0
- xml(带有命名空间的)读写操作
xml文件: <?xml version="1.0" encoding="UTF-8"?><!-- This file contains jo ...
- verilog case 语句合并问题
有时候在case语句中会有不同选择执行相同操作的情况,为了简化代码,可以将其合并. 以下解答来自百度知道(由于排版问题,有相应修改): reg [1:0]addr_cnt=2'b11; reg rea ...
- struts2逻辑视图类型汇总与解释(转)
在struts2框架中,当action处理完之后,就应该向用户返回结果信息,该任务被分为两部分:结果类型和结果本身. 结果类型提供了返回给用户信息类型的实现细节.结果类型通常在Struts2中就已预定 ...
- gogs docker 安装
1. gogs 镜像 docker pull gogs/gogs 2. mysql docker mysql 3. 本地数据卷配置 mkdir gogs & ...