SQL 2008 OraOLEDB.Oracle提供程序返回“超出同时SESSIONS_PER_USER限制”

时间:2011-11-10 23:02:02

标签: oracle sql-server-2008 openrowset

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

有没有人见过这样的事情?

运行Oracle 11g,SQL 2008 R1

1 个答案:

答案 0 :(得分:3)

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

有问题的Oracle用户的SESSIONS_PER_USER限制是什么

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'

您是否可以监控Oracle中的GV$SESSION表,以查看整个过程中有问题的用户实际存在多少个会话,以确保没有真正创建问题的一两个错误会话而不是SQL Server用户名更改导致和解决问题?

SELECT COUNT(*)
  FROM gv$session
 WHERE username = <<oracle database user name>>