您好,我来为您解答:
创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元石首做网站,已为上家服务,为石首各地企业和个人服务,联系电话:18982081108
CREATE PROFILE LIMIT_USER_QUERY_TIME LIMIT CPU_PER_CALL 1000 ;
alter user XXX profile LIMIT_USER_QUERY_TIME ;
不过最好还是写在你的应用层吧,java/perl之类的connection timeout 好设啊
如果我的回答没能帮助您,请继续追问。
oracle数据库分行级锁和表级锁。用select * from table-name for update完成行级锁。用delete或update完成表级锁。你锁定的资源 别人会等待你的提交语句或回退语句完成以后再继续进行。
这个连续5次不好定义,假设一个人今天试验了4次,明天又试验了一次,那么也可以说是连续5次(虽然有点抬杠,不过这个也算是连续5次),这种怎么算?
以下纯属猜想,没有试验过只是把想到的可能说一说
我能想到的是oracle的一个让人很头痛的功能(因为开了这个功能的话,真的比较恐怖)——审计。这个功能会记录登录失败的信息在相关的表中,比如aud$,如果能建立触发器对该表进行统计,那么应该能实现你说的连续5次,但是这个就好像和profile没什么关系了。可能需要手动锁定用户了,然后再开启一个定时任务,一旦执行了所应用户的操作(基本上又是一个c触发器),那么5分钟后执行解锁用户,不过这个环节也太多了,而且oracle的两个计划任务有时也不怎么靠谱,万一有一个环节卡死了,那么整套流程就进行不下去了。感觉好像更麻烦的样子。
如果不在oracle的层面可能就会好解决一些,如果外面套了一层java的壳,那么简单的做一个循环就好了,只要在多长时间内(比如24小时)循环到5,或者连续循环到5,那么就锁定断开该登录(拒绝登录)5分钟,根本不用锁定用户(毕竟别人还要用)。(个人不会java,以上纯属猜测)
我记得还有一种方式可以将登录失败的信息记录到alert文件,但是就算能统计出来连续5次,然后呢,这个5怎么传入数据库,传入后怎么操作,我想了半天也没想明白。毕竟frofile本身,没有“连续密码错误”的这个参数。