В моей исходной ветке здесь: Как я могу исправить ORA: 01013 (пользователь запросил отмену ...) при попытке связать таблицы Oracle в MS Access? Я описываю проблему, пытаясь связать таблицы Oracle сбаза данных Microsoft Access (офис 365).Тайм-аут процесса после ввода UID и пароля.
Когда я исследовал проблему, я смог определить, что драйверы ODBC и DSN работают для ADO, Toad и Microsoft Power BI (при использовании определенногозапрос к таблице Oracle).Мне никогда не удавалось регистрировать записи в таблице Oracle V $ SQL из Access или Excel для дальнейшего устранения проблемы.
Однако сегодня вечером я смог заставить Power BI воссоздать такое же поведение, пытаясьподключиться через DSN и просмотреть таблицы в Oracle.Oracle перехватил вызов SQL, и в результате получился следующий гем:
SELECT
*
FROM
(
SELECT
NULL table_qualifier,
o1.owner table_owner,
o1.object_name table_name,
DECODE(o1.owner, 'SYS', DECODE(o1.object_type, 'TABLE', 'SYSTEM TABLE', 'VIEW', 'SYSTEM VIEW', o1.object_type), 'SYSTEM'
, DECODE(o1.object_type, 'TABLE', 'SYSTEM TABLE', 'VIEW', 'SYSTEM VIEW', o1.object_type), o1.object_type) table_type,
NULL remarks
FROM
all_objects o1
WHERE
o1.object_type IN ('TABLE',
'VIEW'
)
UNION
SELECT
NULL table_qualifier,
s.owner table_owner,
s.synonym_name table_name,
'SYNONYM' table_type, null remarks
FROM
all_objects o3,
all_synonyms s
WHERE
o3.object_type IN (
'TABLE',
'VIEW'
)
AND s.table_owner = o3.owner
AND s.table_name = o3.object_name
UNION
SELECT
NULL table_qualifier,
s1.owner table_owner,
s1.synonym_name table_name,
'SYNONYM' table_type,
NULL remarks
FROM
all_synonyms s1
WHERE
s1.db_link IS NOT NULL
) tables
WHERE
1 = 1
AND ( table_type = 'TABLE'
OR table_type = 'VIEW' )
ORDER BY
4,
2,
3
Я не знаю, с чего начать с этого запроса.Второй и третий подзапросы в выражении union отфильтровываются последним предложением where, поэтому они бесполезны.Первый подзапрос пытается получить список таблиц / схем из all_objects.Если я ограничу этот кусок SQL первыми 100 000 строк и запуском его в SQLPLUS, в Oracle 18c (XE) время выполнения будет более 20 минут.Я предполагаю, что это потому, что этот объект постоянно обновляется, даже когда выполняется запрос.
Подробная информация о спецификации MS ODBC, которую сертифицирует Oracle, находится у меня над головой, поэтому я не знаю, продолжать липоискать билеты в Microsoft или обратить мое внимание на Oracle как на виновника проблемы.
Любой и все советы приветствуются.Мне действительно нужно знать, какая сторона отвечает за SQL выше.
Спасибо!