database - Oracle DB,在用户授权更改后重置实时连接

标签 database oracle connection

当有维护窗口时,我们将应用程序用户的授权更改为只读。在我们重新启动我们的平台后(在维护之后)我们收回了授权,但是所有现有的连接仍然保持只读模式。有没有什么方法可以在不重新启动我的平台或丢失我的事件 session 的情况下重置我的连接?

最佳答案

如果您的应用程序正在使用连接池并且能够检测到断开的连接,那么在权限更改后只需在 Oracle 端终止所有池 session 即可。

为此,您需要能够在未从此连接池分配的单独连接中执行“ALTER SYSTEM KILL SESSION”。您还需要进行 SQL 查询以查找应用程序确切 session 的 SID、SERIAL# 对。

如果您的应用程序中的连接池层编写得足够好,它会检测到每个断开的连接并打开一个新的连接,现在具有新的权限。最好不要使用 IMMEDIATE 参数来保持应用程序的数据一致性并避免报告错误。这将需要一些时间才能完成事件事务。如果您的应用程序正在处理长事务并且您不能等待它们太多,那么您可以使用参数 IMMEDIATE。

ALTER SYSTEM KILL SESSION 'sid,serial#' [IMMEDIATE];

您可以在 Oracle 在线文档中找到如何查找属于您的应用程序的 session 。

关于database - Oracle DB,在用户授权更改后重置实时连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38795763/

相关文章:

database - 表与 View 与物化 View

php - 在 MySQL 中存储大学

.net - Oracle NUMBER 问题 : Decimal to Int64 cast

java - 当用户连接超过5000时Jboss停止工作

c# - 向 ViewModel 添加扩展方法是否维护 ViewModel 规则?

java - ORMLite 抛出 'generated-id key was not set by the update call'

java - 使用 select max() 然后插入 max() + 1 的 Hibernate 并发问题

c# - 使用 C# 从 DBMS_OUTPUT.GET_LINES() 获取输出

python - python grpc客户端如何管理连接?

Java "Connection"类未连接到数据库