Подключитесь как пользователь sys, используя cx_ Oracle in python к локальной базе данных - PullRequest
0 голосов
/ 20 февраля 2020

Попытка подключиться к базе данных Oracle с помощью Python cx_ Oracle. В sqlplus я использую «sqlplus / as sysdba» при подключении к локальной базе данных. Я пытаюсь использовать тот же метод без пароля в Python, но получаю ORA-01017 или ORA-12541

tns_entry=cx_Oracle.makedsn('localhost',1521,'db1')

>>> conn = cx_Oracle.connect(mode = cx_Oracle.SYSDBA,dsn=tns_entry)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cx_Oracle.DatabaseError: ORA-12541: TNS:no listener

>>> conn = cx_Oracle.connect("/",mode = cx_Oracle.SYSDBA,dsn=tns_entry)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cx_Oracle.DatabaseError: ORA-12541: TNS:no listener
>>> conn = cx_Oracle.connect(mode = cx_Oracle.SYSDBA,dsn="TNS SERVICE")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cx_Oracle.DatabaseError: ORA-01017: invalid username/password; logon denied

Где я иду не так? Пожалуйста, предоставьте свой вклад. Спасибо

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

По какой-то причине мой cx_ Oracle .connect не работает со строкой подключения. Так добавили явную переменную os

os.environ["ORACLE_SID"] ='db1'
connection = cx_Oracle.connect("/", mode = cx_Oracle.SYSDBA)
cursor = connection.cursor()
0 голосов
/ 20 февраля 2020

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

user = "sys"
pass = ""
connection = cx_Oracle.connect(user, pass, "dbhost.example.com/orclpdb1",
        mode=cx_Oracle.SYSDBA, encoding="UTF-8")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...