Подтвердить что ты не робот

Выполнить одновременно два запроса в Oracle SQL Developer?

Мне нужно получить довольно много данных из нашей базы данных Oracle, и для этого мне нужно запустить 20+ запросов. Есть ли способ запуска нескольких запросов за раз в одном соединении?

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

4b9b3361

Ответ 1

Итак, самым простым решением для этого было использование SQL Plus, поставляемого вместе с остальным программным обеспечением Oracle. Это неуклюжий инструмент, но он делает то, что мне нужно, в то время как я могу свободно использовать SQL Developer для других запросов.

Ответ 2

Нажатие ctrl + shift + N откроет новый нераспакованный лист, который может запускать запросы параллельно. В этом случае вам нужно вставить запрос на каждую вкладку и запустить их вручную, но это удобно, просто проверяя несколько запросов.

Ответ 3

В настройках SqlDeveloper: Tools > Preferences > Database > Worksheet установите флажок New Worksheet to use unshared connction. Это позволит вам выполнять несколько запросов одновременно, каждый на каждой вкладке. См. снимок экрана.

Ответ 4

Нет, вам потребуется отдельный сеанс для каждого запроса.

Ответ 5

@Tony корректен, каждый запрос должен запускаться в его собственной сессии для параллельной работы. Какой инструмент вы используете? В PL/SQL Developer я могу открыть соединение с БД, а затем открыть несколько сеансов в этом соединении и запустить несколько запросов в "параллельном" - мне нужно выполнить каждый из них вручную, но если они будут занимать много времени, возможно, это будет получить то, что вам нужно, или что-то подобное в любом инструменте, который вы используете.

Ответ 6

Предполагая, что вам нравится жить опасно, вы можете запускать несколько "потоков" из одного script с помощью прагмы AUTONOMOUS_TRANSACTION. Например:

DECLARE
   PROCEDURE foo(i IN PLS_INTEGER) AS
      PRAGMA AUTONOMOUS_TRANSACTION;
   BEGIN
      INSERT INTO qux
         SELECT * FROM bar
         WHERE baz = i;
      COMMIT;
   EXCEPTION WHEN OTHERS THEN ROLLBACK;
   END;
BEGIN
   foo(1);
   foo(2);
   foo(3);
END;