存储过程:
CREATE OR REPLACE PROCEDURE P_MERGER_VIEW
IS
v_sql VARCHAR2(5000);
BEGIN
v_sql := 'CREATE OR REPLACE VIEW SIM_MERGER_VIEW (dvc_address,dvc_type,priority,total) AS
SELECT DVC_ADDRESS, CASE WHEN DVC_TYPE IS NULL THEN ''其他''
ELSE DVC_TYPE END, PRIORITY, COUNT(1)
FROM SIM_EVENT PARTITION(P' ||
TO_CHAR(SYSDATE-1, 'yyyyMMdd') || ')
GROUP BY DVC_ADDRESS, PRIORITY,DVC_TYPE';
EXECUTE IMMEDIATE v_sql;
END P_MERGER_VIEW;任务调度:每天凌晨1点执行
variable n number;
begin
dbms_job.submit(:n, 'P_MERGER_VIEW;', sysdate,'TRUNC(sysdate)+1+1/(24)');
commit;
end;/
任务执行:
begin
dbms_job.run(41);
end;
修改任务:
begin
dbms_job.change(62 ,'MY_JOP;', to_date('2011-08-01 22:00:00', 'yyyy-mm-dd hh24:mi:ss'),'sysdate+1');
commit;
end;授权给某个用户查看指定的视图:
grant select on 视图名 to 用户名;
begin
dbms_job.remove(41);
end;
限制用户登录数量:
最后还要对NORTHBOUND用户进行连接数的限制,以免第三方无限制的连接数据库,造成数据库SESSION暴涨:
conn / as sysdba
alter system set resource_limite=true scope=both sid='*';
新建profile, 初始限制为1 ,用于测试。
create profile third_user limit SESSIONS_PER_USER 1 FAILED_LOGIN_ATTEMPTS unlimited;
alter user NORTHBOUND profile third_user;
将会话数调整到30
alter profile third_user limit SESSIONS_PER_USER 30;
本文介绍了一个Oracle存储过程创建视图的例子,并演示了如何使用DBMS_JOB进行任务调度及运行,还包括视图权限授予、任务修改和删除等内容。
387

被折叠的 条评论
为什么被折叠?



