SQL 2008 OraOLEDB.Поставщик Oracle возвращает «превышен лимит одновременных СЕАНСОВ_PER_USER»

#oracle #sql-server-2008 #openrowset

#Oracle #sql-server-2008 #openrowset

Вопрос:

У нас есть задание SQL, которое при запуске от имени обычного пользователя (с соответствующим доступом) возвращает ошибку, указанную в заголовке. Однако, когда мы меняем задание на запуск как ‘sa’, оно работает безупречно. Те же параметры передаются функции OPENROWSET для подключения к OraOLEDB.Поставщик Oracle (он использует тот же идентификатор Oracle / PW для входа в систему). Это НЕ связанный сервер Oracle; это ad-hoc.

Кто-нибудь когда-либо видел что-либо подобное раньше?

Запуск Oracle 11g, SQL 2008 R1

Ответ №1:

Ошибка указывает на то, что создается больше сеансов базы данных, чем разрешено в соответствии с SESSIONS_PER_USER ограничением для пользователя базы данных Oracle, от имени которого подключается приложение. Это предназначено для ограничения количества сеансов, которые конкретный пользователь базы данных Oracle может открыть одновременно. Мне трудно представить, почему пользователь SQL Server, запускающий задание as, влияет на количество созданных сеансов базы данных 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$SESSION таблицу в Oracle, чтобы увидеть, сколько сеансов на самом деле существует для данного пользователя на протяжении всего процесса, чтобы убедиться, что нет случайного сеанса или двух, которые действительно создают проблему, а не изменение имени пользователя SQL Server, вызывающее и решающее проблему?

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

Комментарии:

1. Джастин, мне тоже трудно в это поверить, но именно это и происходит. У меня нет администратора / контроля над сервером Oracle, поэтому я не могу выполнить ни один из предоставленных вами запросов.

2. @Brad — Можете ли вы попросить администратора базы данных Oracle запустить их? Очевидно, что это сложно отлаживать, если мы не можем исключить возможность того, что существуют некоторые неизвестные вам сеансы базы данных Oracle, которые потенциально не связаны с вашим приложением и которые вызывают проблему или, по крайней мере, способствуют ее возникновению.

3. Я собираюсь посмотреть, смогу ли я связаться с администратором для мониторинга сеанса gv $, когда задание выполняется как SA, а не как обычный пользователь SQL.