You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PL/SQL Web Toolkit应用从Apache/mod_plsql迁移至Tomcat/ORDS后登出异常

解决ORDS环境下PL/SQL Web Toolkit应用的登出问题

核心思路

ORDS不兼容mod_plsql的logmeoff函数,需要通过销毁ORDS会话Cookie + 清除数据库会话状态的组合方式实现登出。

具体实现方案

1. 销毁ORDS会话Cookie

ORDS默认使用名为ORA_WWV_APP_<APP_ID>的Cookie(APP_ID是你的应用ID,可通过OWA_UTIL.GET_CGI_ENV('SCRIPT_NAME')提取,或直接查看浏览器Cookie)。在PL/SQL中通过OWA_COOKIE.REMOVE删除该Cookie:

BEGIN
  -- 删除ORDS会话Cookie,替换<APP_ID>为实际应用ID,或动态获取
  OWA_COOKIE.REMOVE(NAME => 'ORA_WWV_APP_' || <APP_ID>, DOMAIN => '<你的域名>', PATH => '/ords');
END;

如果不确定APP_ID,也可以动态获取当前应用的Cookie名称:

DECLARE
  l_cookie_name VARCHAR2(100);
BEGIN
  l_cookie_name := OWA_UTIL.GET_CGI_ENV('HTTP_COOKIE');
  -- 提取ORA_WWV_APP开头的Cookie名称
  l_cookie_name := REGEXP_SUBSTR(l_cookie_name, 'ORA_WWV_APP_\d+');
  IF l_cookie_name IS NOT NULL THEN
    OWA_COOKIE.REMOVE(NAME => l_cookie_name, DOMAIN => '<你的域名>', PATH => '/ords');
  END IF;
END;

2. 清除数据库会话状态

调用OWA_SESSION.DESTROY清除当前PL/SQL会话的所有状态变量:

BEGIN
  OWA_SESSION.DESTROY;
END;

这会重置当前会话的所有用户自定义状态,相当于mod_plsql中logmeoff的部分功能。

3. 完整登出PL/SQL示例

将上述两步结合,创建一个自定义的登出函数:

CREATE OR REPLACE PROCEDURE custom_logout IS
  l_cookie_name VARCHAR2(100);
  l_domain      VARCHAR2(100) := 'yourdomain.com'; -- 替换为实际域名
  l_path        VARCHAR2(50)  := '/ords'; -- ORDS访问路径
BEGIN
  -- 1. 动态获取并删除ORDS会话Cookie
  l_cookie_name := OWA_UTIL.GET_CGI_ENV('HTTP_COOKIE');
  l_cookie_name := REGEXP_SUBSTR(l_cookie_name, 'ORA_WWV_APP_\d+');
  IF l_cookie_name IS NOT NULL THEN
    OWA_COOKIE.REMOVE(NAME => l_cookie_name, DOMAIN => l_domain, PATH => l_path);
  END IF;

  -- 2. 清除数据库会话状态
  OWA_SESSION.DESTROY;

  -- 3. 重定向到登录页面(可选)
  OWA_UTIL.REDIRECT_URL('login_page.plsql');
END;
/

4. 额外注意事项

  • 如果你的应用使用了自定义会话管理(比如自己维护的会话表),需要在登出时手动删除对应会话记录。
  • 测试时务必清除浏览器缓存和Cookie,避免旧会话残留。
  • ORDS的会话超时可通过ORDS配置文件调整,路径为ords/conf/ords_defaults.xml,修改<session-timeout>参数(单位分钟)。

内容的提问来源于stack exchange,提问作者tale852150

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:00:09