Oracle 12c DBA_IDENTIFIERS не заполняется, когда пакет Oracle компилируется из Python 3.5

1
Oracle 12cR1

Python 3.5

plscope_settings = IDENTIFIERS:ALL

Требование: у нас есть требование определить начальную и конечную строки подпрограмм внутри данного пакета Oracle.

Дизайн: для этого мы используем DBA_IDENTIFIERS. Параметр базы данных PLSCOPE_SETTINGS уже установлен в IDENTIFIERS:ALL. Чтобы заполнить идентификаторы для данного пакета Oracle, мы берем последнюю версию пакета Oracle из нашего менеджера версий кода и компилируем его в базе данных разработки. Компиляция выполняется с использованием скриптов Python 3.5.

Полученный результат: пост-компиляция, DBA_OBJECTS показывает этот пакет Oracle с STATUS как VALID. Таким образом пакет успешно скомпилирован. Тем не менее DBA_IDENTIFIERS не заполняется для какого-либо данного пакета Oracle. Когда тот же пакет Oracle вручную компилируется в Oracle SQL Developer, DBA_IDENTIFIERS заполняется.

Ожидаемый результат: когда скрипт Python компилирует SQL файлы, содержащие пакет Oracle Package и Package Body, DBA_IDENTIFIERS должны заполняться.

Мы что-то упустили? Любые входы будут очень полезны.

-------------------Updated с модифицированной версией Python code---------------

import cx_Oracle as ora
conn = ora.connect("myuser/mypwd@myservice")
cur = conn.cursor()
with open("/fodler1/folder2/pkh/mypkg.sql","r") as sqlFile:
    sql = sqlFile.read()
    cur.execute(sql)
with open("/fodler1/folder2/pkb/mypkg.sql","r") as sqlFile:
    sql = sqlFile.read()
    cur.execute(sql)
cur.close()
conn.close()
  • 0
    Кажется, проблема заключается в ваших скриптах Python. Так что вам, вероятно, нужно будет опубликовать их здесь.
  • 2
    Вы на 100% уверены, что Python / (библиотека, используемая для подключения) не переопределяет ваши plscope_settings?
Показать ещё 4 комментария
Теги:
python-3.x
oracle-sqldeveloper
oracle12c

1 ответ

2
Лучший ответ

Я предлагаю проверить, не использует ли библиотека, которую вы используете для подключения к Oracle DB, не переопределяет DB plscope_settings.

Если да, то вы должны добавить:

ALTER SESSION SET plscope_settings = 'IDENTIFIERS:ALL;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню