jki*_*kix 3 sql oracle r jdbc database-administration
给定 Oracle SID,没有 DBA 权限的用户是否可以终止自己的会话/连接?
具体来说,我可以在没有管理员权限的情况下在我的数据库中运行它:
SELECT SID, "SERIAL#", STATUS, USERNAME
FROM V$SESSION
WHERE
(USERNAME = 'LastF')
AND
(STATUS = 'INACTIVE');
Run Code Online (Sandbox Code Playgroud)
但是当我去终止我的孤立会话时(从另一个我仍然可以访问的会话),
ALTER SYSTEM KILL SESSION "12, 123"
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
JDBC ERROR: ORA-01031: insufficient privileges
Run Code Online (Sandbox Code Playgroud)
注意:我使用 RJDBC 包通过 R/Rstudio 与 JDBC 连接。
在 Oracle SQL 中终止会话似乎并不难:https :
//docs.oracle.com/cd/B28359_01/server.111/b28310/manproc008.htm#ADMIN11192
如何终止连接到我的 oracle 数据库的所有会话?
但是,对于具有孤立连接(即互联网中断、管理连接错误的第 3 方客户端等)的非 DBA 用户来说,获得:
ORA-02391 exceeded simultaneous SESSIONS_PER_USER limit
Run Code Online (Sandbox Code Playgroud)
并且必须等待超时。
要成功运行ALTER SYSTEM命令,您不需要是 DBA,但您确实需要ALTER SYSTEM授予您(或拥有您连接到数据库的应用程序的“用户”——这可能不同于“您”作为 RStudio 的“用户”)。
您有几个选择:
ALTER SYSTEM特权(这是一种非常糟糕的做法)ALTER SYSTEM特权,他将负责终止此类会话ALTER SYSTEM包所有者,并将对该包的执行权限授予单个用户(根据需要)。该过程应编写为仅终止特定类型的会话。