oracle按日期定时创建分区实例.docx

oracle按日期定时创建分区实例.docx

ID:59253711

大小:14.16 KB

页数:3页

时间:2020-09-08

oracle按日期定时创建分区实例.docx_第1页
oracle按日期定时创建分区实例.docx_第2页
oracle按日期定时创建分区实例.docx_第3页
资源描述:

《oracle按日期定时创建分区实例.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、oracle按日其定时创建分区实例1创建一张分区表,使用本地索引--CreatetablecreatetableTEST_DAY_INTERVAL_PARTITION(idNUMBERnotnull,time_colDATEnotnull)partitionbyrange(TIME_COL)(partitionPDEFAULTvalueslessthan(MAXVALUE)tablespaceTS_TESTpctfree10initrans1maxtrans255storage(initial64Knext1Mminex

2、tents1maxextentsunlimited));--Create/Recreateprimary,uniqueandforeignkeyconstraintsaltertableTEST_DAY_INTERVAL_PARTITIONaddconstraintPK_TEST_DAY_INTERVAL_PARTprimarykey(ID,TIME_COL)usingindexlocal;--创建本地分区索引2创建分区表存储过程CREATEORREPLACEPROCEDUREp_test_create_partitio

3、n/*ver1.0*/(p_errnoOUTNUMBER,--返回错误编号,0=成功,-1=失败p_errmsgOUTVARCHAR2--返回错误信息)ASPRAGMAAUTONOMOUS_TRANSACTION;v_exp_appEXCEPTION;v_idNUMBER;v_tablenameVARCHAR2(64);v_create_startVARCHAR2(1024);v_create_date_startdate;v_sqlstrVARCHAR2(1024);v_max_partitoinVARCHAR2(10

4、0);v_partition_nameVARCHAR2(64);BEGINv_tablename:='test_day_interval_partition';SELECT--获取目标表最大分区信息substr(MAX(partition_name),2)INTOv_max_partitoinFROMuser_tab_partitionsWHEREtable_name=upper('test_day_interval_partition')ANDpartition_name<>'PDEFAULT';v_create_st

5、art:=nvl(v_max_partitoin,to_char(trunc(SYSDATE-1),'yyyymmdd'));v_create_date_start:=to_date(v_create_start,'yyyymmdd');FORiIN1..10LOOPBEGINv_partition_name:='P'

6、

7、to_number(to_char(v_create_date_start+i,'YYYYMMDD'));v_sqlstr:='ALTERTABLE'

8、

9、v_tablename

10、

11、'SPLITPARTI

12、TIONPDEFAULTat(to_date('''

13、

14、to_char(v_create_date_start+i+1,'yyyymmdd')

15、

16、''',''yyyymmdd''))INTO(PARTITION'

17、

18、v_partition_name

19、

20、',PARTITIONPDEFAULT)';EXECUTEIMMEDIATEv_sqlstr;EXCEPTIONWHENOTHERSTHENROLLBACK;p_errmsg:='执行失败!'

21、

22、SQLERRM

23、

24、v_sqlstr;COMMIT;END;ENDLOOP;p_

25、errmsg:='';p_errno:=0;EXCEPTIONWHENOTHERSTHENIFSQLCODEIN(-14623,-14313)THEN--如果是对象已存在,不处理异常,按成功返回p_errno:=0;ELSIFSQLCODE=-54THEN--解决并发DDL时的resourcebusy错误dbms_lock.sleep(dbms_random.value(0,2));EXECUTEIMMEDIATEp_errmsg;p_errno:=0;ELSEp_errno:=-1;p_errmsg:='表'

26、

27、v_t

28、ablename

29、

30、'创建分区P'

31、

32、v_id

33、

34、'分区失败!'

35、

36、p_errmsg

37、

38、SQLERRM;ENDIF;END;1分区创建定时任务declarev_job_idnumber;beginFORjob_id_tabIN(SELECTjobFROMuser_jobsWHEREwhatLIKE'%p_test_c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。