ORACLE存储过程生成视图,设置指定用户访问指定视图

本文介绍了一个Oracle存储过程创建视图的例子,并演示了如何使用DBMS_JOB进行任务调度及运行,还包括视图权限授予、任务修改和删除等内容。

存储过程:

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 用户名;


删除job:

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;






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值