oracle中定时创建表

来源:互联网 发布:游戏解说软件 编辑:程序博客网 时间:2024/06/05 05:01

 知识点:oracle的定时器 

               oracle创建表的存储过程

             

 1: oracle的定时器 

  declare 
  job number; 
  begin 
  dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)'); 
 end
 commit;

 说明:'job_proc‘ 存储过程名称


 参数介绍 

  select job,broken,what,interval,t.* from user_jobs t;
  job job的唯一标识,自动生成的 
  broken 是 否处于运行状态,N;运行;Y:停止 
   what 存储过程名称 
   interval 定义的执行时间 


  补充: 
  描述 INTERVAL参数值 
  每天午夜12点 ''TRUNC(SYSDATE + 1)'' 
  每天早上8点30分 ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)'' 
  每星期二中午12点 ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24'' 
  每个月第一天的午夜12点 ''TRUNC(LAST_DAY(SYSDATE ) + 1)'' 
  每个季度最后一天的晚上11点 ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24'' 
  每星期六和日早上6点10分 ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)''

                     

 

  2:oracle创建表的存储过程(每天创建一张表)

create or replace procedure create_table_log
authid current_user
as
stname varchar2(100);
csql varchar2(5000);
etname varchar2(100);
begin
stname := 'USERLOGMALICIOUS';
SELECT to_char(sysdate,'yyyyMMDD') into etname FROM DUAL;
csql := 'create table '||stname||'_'||etname||'
(
ID NUMBER not null primary key,
LTIME NUMBER not null,
SID VARCHAR2(32) not null,
DEVICE_ID VARCHAR2(32) not null,
SVDB VARCHAR2(32),
SV_RULE VARCHAR2(32),
MSISDN VARCHAR2(32),
MOBILEID NUMBER,
PROID NUMBER,
LANIP VARCHAR2(32),
NETTYPE VARCHAR2(32),
SIP VARCHAR2(32),
SPORT VARCHAR2(8),
DIP VARCHAR2(32),
DPORT VARCHAR2(8),
OCCURDATE VARCHAR2(32),
URL VARCHAR2(2000),
CREATETIME TIMESTAMP(6),
PROTOCOL VARCHAR2(32)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 1M
minextents 1
maxextents unlimited
)'
;

execute immediate csql;
end create_table_log;

          


注意:运行job的用户最好付给dba权限





原创粉丝点击