关于使用cx_oracle遇到的问题

最近有使用到cx_oracle(5.3)模块,这里记录下出现的问题

由于我的项目一直在是windows上测试,最近把项目更新到linux下后,再去跑代码,发现代码报出ORA-28040: No matching authentication protocol,原代码在用到cx_oracle模块的时候全都无法运行

下面的部分Python代码查询了数据库角色,上网查询了一下,有这样的做法,修改$ORACLE_HOME/network/admin/sqlnet.ora文件,添加了一行 SQLNET.ALLOWED_LOGON_VERSION=8,允许外部连接。我这里改完后再次执行代码后会报出cx_Oracle.DatabaseError: ORA-01017: invalid username/password; logon denied,可是我的用户名密码都是正确的啊,于是我尝试着修改密码,密码依旧是之前登陆的密码,这么做类似于刷新了一下,其实实际密码并没有改变,改完之后在运行代码就没有报错了

def get_protect_mode(db_user, db_password, ip, sid_name):
    """
    获取数据库的保护模式
    :return:
    """
    import cx_Oracle
    db_oracle = cx_Oracle.connect(db_user, db_password, ip + '/' + sid_name,mode=cx_Oracle.SYSDBA)
    cur = db_oracle.cursor()
    check_sql = cur.execute("select protection_mode from v$database")
    check_result = cur.fetchall()
    PROTECTION_MODE = check_result[0][0]
    cur.close()
    db_oracle.close()
    return PROTECTION_MODE

 

posted @ 2021-10-08 14:34  lch陆  阅读(312)  评论(0)    收藏  举报