为了演示 Oracle 的安全特性,必须在用户会话尚未建立时调用OCIServerVersion()或OCIServerRelease() 。
虽然有数据库参数sec_return_server_release_banner = false
。我为此使用 Python cx_Oracle 模块,但我不确定如何在建立连接之前获取服务器版本。有任何想法吗?
取决于您的软件架构和您准备跨平台的意图。
cx_Oracle 依赖于 Oracle 客户端。因此,您确定已知路径上有 Oracle 客户端。即使您不想在常规会话中使用 Oracle 客户端,您也可以使用它对服务器进行初步检查。
在 linux/unix 上,您可以在子进程中运行以下代码:
sqlplus user/pasword@INSTANCE <<< "quit"| grep "Oracle Database"| head -n 1
Grep 和其他处理可以在您的代码中完成,在 Windows 中这是必要的。通过代码,您将获得 Oracle 版本,并且您将知道连接信息是否正确。
无需建立连接,。不,你永远不能问任何事情。这就像去谷歌页面。(互联网架构 - 无论你称之为无会话还是基于会话)
至于 Authentical,如果没有设置权限 - Oracle 使用用户名“nobody”作为用户,从而为每个用户提供会话。
我是 Oracle APEX 的用户,我经常使用 Python、PLSQL。
这是一个很好的问题。谢谢。