角色role1在oracle数据库中是建好的,用户user1通过程序登陆到数据库中时候,由程序把role1分配给user1
当用户user1退出程序,角色取消或者user1再用程序登陆后,用sqlplus登陆到数据库中时这个session没有授权。
当用户user1退出程序,角色取消或者user1再用程序登陆后,用sqlplus登陆到数据库中时这个session没有授权。
解决方案 »
- ora-01034:oracle not available ora-27101:shared memory realm does not exist
- 在oracle中有没有办法估计存储过程的运行时间?
- 请教高手,行号= 7 列号= 1 错误文本= PL/SQL: SQL Statement ignored 是什么错误???
- oracle 数据库崩了,要恢复,数据很多重要希望大侠们可以帮菜鸟解决(详细描述如下:)
- 请问怎样用UML分析oracle 9i系统的体系构架??
- alter database close的问题……9i
- 问一个关于StrSub的问题?
- 简单的小问题一个~下班前结贴~速度~~~~~~~~~~~~~~~~
- 如果给这句话写一个存储过程,在线等待
- 关于数据类型long的使用
- Oracle clob问题
- 加快oracle数据导入
如果用sqlplus登陆进来,可以把整个表都删掉,很危险?
--已经测试create or replace trigger tr_after_logon
after logon on database
declare
v_program varchar2(50);
begin
IF SYS_CONTEXT('USERENV', 'SESSION_USER') = 'SCOTT' THEN
--获取program
SELECT program
INTO v_program
FROM v$session
WHERE AUDSID = USERENV('SESSIONID')
AND rownum = 1;
--if user is not use sqlplus, raise an application error.
--note: user can continue logon if he has DBA role privilege
IF UPPER(v_program) NOT LIKE '%SQLPLUS%' THEN
RAISE_APPLICATION_ERROR(-20001, 'you can''t logon except you use sqlplus');
END IF;
END IF;
end;
觉得楼主的问题根本是管理的问题,不要让别人知道密码,还有管理好用户的权限,实在不放心开审计。把sqlplus的名称改为sqlplus123后登录:
SQL> /PROGRAM
----------------------------------------------------------------
sqlplus123.exe
sqlplus.exe
这个触发器通过程序名字限制了登陆,我觉得还没有从根本上解决问题
正如楼上说得那样,通过模拟程序名一样可以登陆进来如果通过特定的业务程序登陆进来,则授角色给他,角色作用范围仅仅限于这个session,可以完成正常工作。
如果这是他通过sqlplus登陆进来,在这个session里仍然没有授权,无法做一些操作;