1

我们有一个 SQL 作业,当作为标准用户(具有适当的访问权限)运行时,会返回标题中看到的错误。但是,当我们将作业更改为以“sa”运行时,它可以完美运行。相同的参数被传递给 OPENROWSET 函数以连接到 OraOLEDB.Oracle 提供程序(它使用相同的 Oracle ID/PW 登录)。它不是链接的 Oracle 服务器;它是临时的。

有没有人见过这样的东西?

运行 Oracle 11g、SQL 2008 R1

4

1 回答 1

3

该错误表明正在创建的数据库会话数SESSIONS_PER_USER超出了应用程序连接的 Oracle 数据库用户的限制所允许的数量。这旨在限制特定 Oracle 数据库用户在任何时候可以打开的会话数。我很难想象为什么运行作业的 SQL Server 用户会影响创建的 Oracle 数据库会话的数量。

SESSIONS_PER_USER有问题的 Oracle 用户的限制是多少

SELECT limit
  FROM dba_profiles p
       JOIN dba_users u ON (p.profile = u.profile)
 WHERE u.username = <<oracle database user name>>
   AND p.resource_name = 'SESSIONS_PER_USER'

您能否监视GV$SESSIONOracle 中的表,以查看在整个过程中相关用户实际存在多少会话,以确保没有一个或两个真正造成问题的杂散会话,而不是 SQL Server 用户名更改导致并解决问题?

SELECT COUNT(*)
  FROM gv$session
 WHERE username = <<oracle database user name>>
于 2011-11-10T23:26:15.653 回答