表分区维护的sql
表分区维护的sql
最近学习了表分区维护 下面是主要的sql 呵呵
-----------包头
create or replace package P_PKG_partition_maintenance AUTHID CURRENT_USER is
www.zzzyk.com
Const_Partition_DAY_prefix varchar2(10) := 'P_D_';
Const_Partition_WEEK_prefix varchar2(10) := 'P_W_';
Const_Partition_MONTH_prefix varchar2(10) := 'P_M_';
Const_partition_flag_DAY number := 1;
Const_partition_flag_WEEK number := 2;
Const_partition_flag_YEAR number := 3;
/*
partitionflag 分区周期标志, 1 day , 2 week ,3 month 按天、周、月分区
retention_period 保留期限,分别对应到上面的周期,比如3+1
table_name 分区表名 www.zzzyk.com
*/
function pro_partition_maintenance(v_table_name varchar2,
v_partitionflag varchar2,
v_partition_name varchar2,
v_sysdate varchar2,
v_preprocessflag number,
v_preprocesssql varchar2,
v_postprocessflag number,
v_postprocesssql varchar2) return number;
/*
记录日志
*/ www.zzzyk.com
PROCEDURE Pro_Record_Log(v_operation in VARCHAR2, v_comments in VARCHAR2);
procedure pro_maintenance;
/*
获取备份表名,v_Partition_prefix 加上原表名的第一个下划线前部分 加上原表名第一个下划线部分替换掉下划线 + 日期
比如:acct_item, 那么
*/ www.zzzyk.com
function fun_getTableName(tablename varchar2,
partitionflag varchar2,
v_sysdate varchar2) return varchar2;
PROCEDURE Pro_Create_Backup_Part_Indx(v_bk_table_name in varchar2,
v_partitionflag in varchar2,
v_table_name in varchar2,
v_in_date in VARCHAR2);
procedure pro_createbaktable(v_table_name in varchar2,
v_baktable in varchar2);
procedure PRO_DROPBAKTABLE(v_num number);
end P_PKG_partition_maintenance;
------------------包体
create or replace package body P_PKG_partition_maintenance is
--GRANT debug any procedure, debug connect session TO ccv68;
function pro_partition_maintenance(v_table_name varchar2,
v_partitionflag varchar2,
v_partition_name varchar2,
v_sysdate varchar2,
v_preprocessflag number,
v_preprocesssql varchar2,
v_postprocessflag number,
v_postprocesssql varchar2)
return number as
v_sql varchar2(4000);
v_baktable varchar2(30);
www.zzzyk.com
begin
--获取备份表名
v_baktable := fun_getTableName(v_table_name, v_partitionflag, v_sysdate);
--创建备份表
begin
pro_createbaktable(v_table_name, v_baktable);
exception
when others then
Pro_Record_Log('an error happed when creating ' || v_table_name ||
'''s backup table:' || v_baktable || '.',
'ErrCode:' || SQLCODE || SUBSTR(SQLERRM, 1, 1500));
return - 1;
end;
--创建备份表上的索引,只允许建立分区索引
begin
Pro_Create_Backup_Part_Indx(v_baktable,
v_partitionflag,
v_table_name,
v_sysdate);
exception www.zzzyk.com
when others then
Pro_Record_Log('an error happend when creating ' || v_baktable ||
'''s index.',
&n
- 更多SQLServer疑问解答:
- 配置MSSQL复制指定快照文件夹提示:不是有效的路径或文件名
- 详细解读varchar和Nvarchar区别
- SQL SERVER 2005 同步复制技术
- 进程未能大容量复制到表 解决方法
- MSSql实例教程:MSSql数据库同步
- SQLServer2000同步复制技术实现(分发和订阅)
- sqlserver
- SQLSERVER
- 测试 sqlserver 最大用户数连接
- 写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的
- sqlserver2008的安装问题。
- 为什么安装的SQL server 2008我的没有MSSQLSERVER协议啊?
- 怎样把exel表里的数据复制到sqlserver表里
- sqlserver数据库主键和外键问题
- sqlserver 中的左表连接查询和右表连接查询有啥不同?有什么用?