Oracle 12c DBA_IDENTIFIERS не заполняется, когда пакет Oracle компилируется из Python 3.5 - PullRequest
0 голосов
/ 21 октября 2018
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 и тело пакета, DBA_IDENTIFIERS должно быть заселено.

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

------------------- Обновлено с измененной версией кода Python ---------------

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()

1 Ответ

0 голосов
/ 23 октября 2018

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

Если да, то вам следует добавить:

ALTER SESSION SET plscope_settings = 'IDENTIFIERS:ALL;
...