首页 > 数据库 > Oracle > 用户只有select 权限导致业务无法使用
1 业务场景
某行业核心业务表不能update,导致业务无法进行,处于等待状态,经查询,是某个运维人员执行了select * from TABLE for update 语句引起的,查看此用户权限,只有创建会话和select table的权限,但为什么会导致锁表,故针对select权限做相关测试。
2 创建测试用户,并授权
SYS@orcl>create user test_select identified by qwe123456;
User created.
SYS@orcl>grant connect to test_select;
Grant succeeded.
SYS@orcl>grant create session to test_select;
Grant succeeded.
SYS@orcl>grant select on test.test1 to test_select;
Grant succeeded.
3 测试
会话1 执行 select for update 语句:
15:32:53 SYS@orcl>select * from test.test1 where EMPLOYEE_ID=198 for update;
...............
198 Donald OConnell DOCONNEL 650.507.9833 21-JUN-99 SH_CLERK 2600 124 50
198 Donald OConnell DOCONNEL 650.507.9833 21-JUN-99 SH_CLERK 2600 124 50
198 Donald OConnell DOCONNEL 650.507.9833 21-JUN-99 SH_CLERK 2600 124 50
198 Donald OConnell DOCONNEL 650.507.9833 21-JUN-99 SH_CLERK 2600 124 50
198 Donald OConnell DOCONNEL 650.507.9833 21-JUN-99 SH_CLERK 2600 124 50
198 Donald OConnell DOCONNEL 650.507.9833 21-JUN-99 SH_CLERK 2600 124 50
459 rows selected.
会话2执行如下语句,处于等待状态:
SYS@orcl>set time on
15:37:22 SYS@orcl>delete from test.test1 where EMPLOYEE_ID=198;
会话三查询锁并查看执行的语句:
查看锁
15:38:41 SYS@orcl>/
SESS ID1 ID2 LMODE REQUEST TY
------------------------------------------------ ---------- ---------- ---------- ---------- --
Holder: 135 458790 1231 6 0 TX
Waiter: 148 458790 1231 0 6 TX
查看执行的语句:
Waiting sid SQL from Waiting Session Blocking sid SQL from blocking se
----------- ------------------------------------------------------------ ------------ --------------------
148 delete from test.test1 where EMPLOYEE_ID=198 135 select * from test.test1 where EMPLOYEE_ID=198 for update
会话1 提交数据:
15:44:56 SYS@orcl>commit;
Commit complete.
会话2 查看执行结果:
15:37:22 SYS@orcl>delete from test.test1 where EMPLOYEE_ID=198;
459 rows deleted.
15:45:00 SYS@orcl>
会话3 查看是否还有锁等待:
15:46:35 SYS@orcl>/
no rows selected
4 测试 select for update是否可以修改数据, 发现不能,如下:
使用PLSQL执行for update

修改数据,并提交,发现不能修改数据

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69996316/viewspace-2770592/ ,如需转载,请注明出处,否则将追究法律责任。