暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 关于触发块开发工具的疑问

askTom 2016-02-16
104

问题描述

你好,

我们有一个触发器来阻止开发工具访问生产数据库。

创建或替换触发器SYS.Block_TOOLS_FROM_PROD
登录数据库后
宣布
v_prog sys.v_$会话。程序%TYPE ;
开始
SELECT程序进入v_prog
来自sys.v_$会话
其中audid =用户V ('会话ID')
AND audSID!= 0 --不检查SYS连接
AND列num = 1; --并行进程将具有相同的AUDSID

IF上位(v_prog)类似“%TOAD%”或上位(v_prog)类似“%T.O.A.D%”或--蟾蜍
上位(v_prog)类似“%SQLNAV%”OR -- SQL导航器
上(v_prog)类似“%PLSQLDEV%”OR -- PLSQL开发人员
上(v_prog)类似“%BUSOBJ%”OR --业务对象
上(v_prog)类似“%DEVELOPER%”-- SQL Developer/JDEVELOPER

那么
PRODDB上不允许使用开发工具! ( -20000,') ;
结束IF ;
结束;
/


它工作正常,但如果我们尝试使用sys访问,我可以连接,但由于某种原因,它在警报日志上引发了_应用程序_错误:

ORA-00604 :递归SQL级别1处出错
ORA-20000 :不允许在PRODDB上使用开发工具!
ORA-06512 :在行17处


为什么要改变这些beahivor,因为在版本11和10中没有附加这些?

致意
里卡多

专家解答

AUDSID对于作为SYS连接的*backs*会话将为零,但对于标准连接, AUDSID将为非零,例如

SQL> conn sys/xxxxx as sysdba
Connected.

SQL> select audsid from v$session where sid = sys_context('userenv','sid');

    AUDSID
----------
4294967295


因此,可以选择“user!= SYS”。

注意- -触发器有一个基本的问题,人们只需要重命名他们的可执行文件。如果你想非常狡猾,那么跟踪一个(比如说)使用TOAD的会话,并计算出它在连接上创建了哪些打开的游标。那就去找他们。

祝好运。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论